scrapy的Request与item

Request对象

1
2
3
4
5
6
导入位置
from scrapy.http.request import Request
参数:
url --- 一个网址,yield住之后下次爬取的地址
callback --- 函数名,当request请求爬取回来之后执行的函数
meta --- request与回调函数之间传递参数使用,传字典

Item对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
1.导入
from scrapy import Item

2.自己写一个类并且继承Item类
eg:
class FirstscrapyItem(scrapy.Item):
name = scrapy.Field()

当你在程序中yield住一个Item对象之后,程序便会自动去保存

3.在爬虫程序中每爬取一页都实例化一个对象
item = FirstscrapyItem()
ps:往这个对象中存值只能使用[]的方式,不能用.
eg:item['url'] = url

4.yield返回该值即可,接下来他会根据settings中的配置去pipline中找到对应的类并进行持久化存储
ITEM_PIPELINES = {
'firstscrapy.pipelines.FirstscrapyPipeline': 300, #类的位置,后面的数字是优先级
}

数据的持久化操作

1
2
3
4
1.使用命令
我们只需要在执行文件后添加一个-o 路径即可
eg:scrapy crawl first -o ./qiubai.csv
以该方式存储的只能为'json', 'jsonlines', 'jl', 'csv', 'xml', 'marshal', 'pickle'这些格式