scrapy数据建模
在itrms.py中,定义数据字段,配合注释提示所需字段,及配合管道类使用
建模方式(items.py文件下)
# 默认模板类
import scrapy
class myspider(scrapy.Item):
name = scrapy.Field # 进行注释标记
pass
使用方法(爬虫文件下)
# 导入items
from 地址.items import MyItem
# 实例化items数据
item = MyItem()
# 引用
item['索引'] =i.xpath('xpath语法')[0].extract()
构造request对象,发送请求
# 翻页操作
every_url = response.xpath('xpath语法/@herf').extract_frist()
# 判断终止点
if every_url != '最后一页url'
next_url = response.urljoin(every_url)
# 构造url,返回请求参数
yield scrapy.Request(
# 下一页url
url = next_url,
# 设置下一页解析方法(方法不同时,需要添加解析方法)
callback = self.parse
)
scrapy.Request参数
scrapy.Request(url[,callback,method='GET',headers,body,cookies,meta,dont_filter=Flase])
- url:请求地址
- callback:表示当前函数处理方式
- meta:实现数据传递,合并不同页面数据
- dont_filter:默认值为False。请求过的url不会被重复请求
- method:指定POST/GET请求
- headers:接收字典,不包含cookies
- cookies:专用于存储cookies
- body:post请求时,接收json数据
meta参数使用方法
在爬虫文件parse方法中使用
def parse(self, response):
yield scrapy.Request(
# 下一页url
url = next_url,
# 设置下一页解析方法(方法不同时,需要添加解析方法)
callback = self.parse_detail,
# 设置meta参数
meta={"item":item}
)
def parse_detail(self, response):
# 获取item
item = response.meta["item"]
# 返回引擎
yield item