1.1python爬虫scrapy

scrapy简单介绍

适合静态网站,或者数据量非常大的网站

安装

1
2
pip install --upgrade pip
pip install Scrapy

一般安装没什么问题,我的python3.9版本

使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
都是在cmd中执行,不用创建文件夹,项目会直接创建一个文件夹
1.scrapy startproject 项目名字
会创建一个以项目命名的文件,进入这个文件夹
创建爬虫
2.scrapy genspider 爬虫名字 网站域
这步也可以自己修改文件完成,网站域加引号
爬虫名和项目名不能相同
3.进入spiders目录
打开 爬虫名字.py文件
4.配置
可以配置网站域
配置首个查询的网站地址
处理请求和响应,以及提取数据(yield item)
5.测试 打印相应文件
def parse(self, response):
print(response.body)
#pass
5.编写管道pipelines.py 处理spider返回的数据,比如本地持久化存储等
编写seeting.py,启动管道组件以及其他配置
6.执行爬虫
scrapy crawl 爬虫名字
7.输出结果
scrapy crawl 爬虫名字 -o 输出文件(支持json.xml,csv,jsonl)

文件说明

1
2
3
4
5
6
7
8
9
10
11
12
13
14
tutorial/
scrapy.cfg # 部署配置文件

tutorial/ # Python模块,代码写在这个目录下
__init__.py

items.py # 项目项定义文件

pipelines.py # 项目管道文件

settings.py # 项目设置文件

spiders/ # 我们的爬虫/蜘蛛 目录
__init__.py
  • 放置 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
2
 response.css('title::text')[0].extract()
提取标题title的文本,选择第一个结果

正则表达式

1
response.css('title::text').re(r'Quotes.*')

Xpath选择器

1
response.xpath('//title')

XPath表达式非常强大,是Scrapy选择器的基础。事实上,CSS选底层也是用XPath。