Scrapy特色
- 建议 使用 xpath 进行解析 (因为Scrapy集成了xpath接口)
- 高性能爬虫、多线程、数据解析、持久化存储
- 自动携带cookie无需单独操作
安装
mac下 pip install scrapy
使用流程
- 终端
cd
目录scrapy startproject 工程名
(创建项目) - 终端
cd
到下面根目录scrapy genspider 爬虫名 起始url
- 编写配置文件 setting.py
# 19行 请求身份伪装user_agent 定义
USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36'
# 22行 是否遵从robots协议(君子协议)
ROBOTSTXT_OBEY = False
# 打开管道
- 执行:
scrapy crawl 爬虫文件名
(--nolog
阻止日志输出)
目录结构
存储数据
- 磁盘存储
基于终端
# 保证parse方法返回可迭代对象
# 使用终端指令数据储存
'''爬虫必须是返回可迭代对象'''
def parse(self, response):
div_list = response.xpath("//div[@id='content-left']/div")
data_list = []
for div in div_list:
author = div.xpath("./div/a[2]/h2/text()").extract()[0]
content = div.xpath(".//div[@class='content']/span/text()").extract_first()
data_dict = {
'author': author,
'content': content,
}
data_list.append(data_dict)
return data_list
'''终端命令'''
scrapy crawl qiubai -o 储存文件名.后缀 --nolog
基于管道流程
- 将解析数据存到items对象
- 使用yield 将items交给管道文件处理
- 在管道文件pipelines编写代码储存
- 在setting配置文件开启管道
基于管道储存案例有另一篇我的文章
- 数据库 请查看我的另一具体案例博客