腊月的季节

scrapy爬虫技术七

CSVFeedSpider

class scrapy.contrib.spiders.CSVFeedSpider
该spider除了其按行遍历而不是节点之外其他和XMLFeedSpider十分类似。 而其在每次迭代时调用的是 parse_row() 。
1、delimiter
在CSV文件中用于区分字段的分隔符。类型为string。默认为’,’(逗号)
2、quotechar
A string with the enclosure character for each field in the CSV file Defaults to ‘“‘ (quotation mark).
3、headers
在CSV文件中包含的用来提取字段的行的列表。
4、parse_row(response,row)
该方法接收一个response对象及一个以提供或检测出来的header为键的字典(代表每行)。 该spider中,您也可以覆盖 adapt_response 及 process_results 方法来进行预处理(pre-processing)及后(post-processing)处理。

CSVFeedSpider例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from scrapy import log
from scrapy.contrib.spiders import CSVFeedSpider
from myproject.items import TestItem

class MySpider(CSVFeedSpider):
name = 'example.com'
allowed_domains = ['example.com']
start_urls = ['http://www.example.com/feed.csv']
delimiter = ';'
quotechar = "'"
headers = ['id', 'name', 'description']

def parse_row(self, response, row):
log.msg('Hi, this is a row!: %r' % row)

item = TestItem()
item['id'] = row['id']
item['name'] = row['name']
item['description'] = row['description']
return item

这个怎么说呢,分析一下吧!
前面的name,allowed_domains,start_urls这就不说了,老套路。
主要说headers类属性,根据传进去的列表id,name,description他就可以给你提取出来这些属性的值。每次会给你返回一行。就像XMLFeedSpider的itertag会给你返回一个节点。

热评文章