1.以 csvdeed 模板创建爬虫的流程
1.创建项目:scrapy startproject mycsv
2.编写 Item.py 文件,定义要提取的数据
3.查看可用爬虫模板:scrapy genspider -l
4.以 csvfeed 模板创建一个 mycsvspider.py 文件,在 spider 目录下:scrapy genspider -t csvdeed mycsvfeed iqianyue.com
-
header 属性存放每一列的头名字
-
delimiter 属性存放字段间的间隔符
5.编写好 mycsvspider.py 文件后,切换到项目文件运行:scrapy crawl mycsvspider --nolog
2.读取 csv 文件
with open(getattr(self, "file", "todo.csv"), "rU") as f:
reader = csv.DictReader(f)
for line in reader:
request = Request(line.pop('url')) #弹出以 url 为键对应的值
request.meta['fields'] = line #把数据以字典形式存入
yield request
文件第一行会被自动作为标题处理,做为每一行这一列的键索引值
getattr(self,'varible','default') 这里运行爬虫时打开的是默认的 defult 文件,相当于命令 scrapy crawl 爬虫名 -a varible=default
这段代码相当于命令 scrapy crawl 爬虫名 -a file=todo.csv
def parse(self, response):
#没有自定义 item.py 文件,手动为 ItemLoader 提供
item = Item()
l = ItemLoader(item=item, response=response)
for name, xpath in response.meta['fields'].iteritems(): #循环字段
if xpath:#如果路径存在就添加容器,并存储
item.fields[name] = Field()
l.add_xpath(name, xpath)
return l.load_item()