1.1python爬虫scrapy
scrapy简单介绍
适合静态网站,或者数据量非常大的网站
安装
1 | pip install --upgrade pip |
一般安装没什么问题,我的python3.9版本
使用
1 | 都是在cmd中执行,不用创建文件夹,项目会直接创建一个文件夹 |
文件说明
1 | tutorial/ |
- 放置 spider 代码的目录文件 spiders(用于编写爬虫)。
- 项目中的 item 文件 items.py(用于保存所抓取的数据的容器,其存储方式类似于 Python 的字典)。
- 项目的中间件
- middlewares.py(提供一种简便的机制,通过允许插入自定义代码来拓展 Scrapy 的功能)。
- 项目的 pipelines 文件 pipelines.py(核心处理器)。
- 项目的设置文件 settings.py。
- 项目的配置文件 scrapy.cfg。
scrapy 其他命令
bench 运行快速基准测试
check 检测爬虫环境
commands
crawl 运行爬虫
edit 编辑爬虫
fetch 使用Scrapy downloader获取URL
genspider 使用预定义模板生成新的spider
list 列出可用的爬虫
parse 解析URL(使用其spider)并打印结果
runspider 运行自包含的spider(不创建项目)
settings 获取设置值
shell 交互式控制台
startproject 创建一个新项目
version 打印输出版本
view 在浏览器中打开URL,如Scrapy所见
爬虫文件
必须继承 scrapy.Spider
name:标识爬虫。它在项目中必须是唯一的,也就是说,您不能为不同的Spider设置相同的名称。
start_requests():必须返回一个迭代的Requests(你可以返回请求列表或写一个生成器函数),Spider将开始抓取。后续请求将从这些初始请求连续生成。
parse():将被调用来处理为每个请求下载的响应的方法。 response参数是一个TextResponse保存页面内容的实例,并且具有更多有用的方法来处理它。
该parse()方法通常解析响应,提取抓取的数据作为词典,并且还找到要跟踪的新网址并从中创建新的请求(Request)。
选择器
css选择器
1 | response.css('title::text')[0].extract() |
正则表达式
1 | response.css('title::text').re(r'Quotes.*') |
Xpath选择器
1 | response.xpath('//title') |
XPath表达式非常强大,是Scrapy选择器的基础。事实上,CSS选底层也是用XPath。
-
2021-08-04