scrapy
scrapy base…
爬虫入门知识
爬虫的过程,就是模仿浏览器的行为,往目标站点发送请求,接收服务器的响应数据,提取需要的信息,并进行保存的过程。
urllib 自带原生网络请求库
Python 为爬虫的实现提供了工具:requests、bs4
对于较小的爬虫需求,用 Requests 库,对于不太小的爬虫需求,用 Scrapy 框架,对于定制程度很高的需求,建议使用 Requests 库
如果是用 requests 或者 scrapy 爬虫发现有反爬措施,可以尝试 selenium
中文词云:wordcloud 和 jieba
requests
- get 请求
1 | import requests |
返回 xml 指定编码
1 | import requests |
- post 请求
1 | import requests |
BeautifulSoup
bs4
解析器要另外安装:html5lib,lxml
Beautiful Soup 支持 Python 标准库中的 HTML 解析器,还支持一些第三方的解析器,如果我们不安装它,则 Python 会使用 Python 默认的解析器,lxml 解析器更加强大,速度更快,推荐安装。
1 | BeautifulSoup(markup, “html.parser”) # 内置标准库 |
(官方文档)[https://beautifulsoup.readthedocs.io/zh_CN/latest/]
scrapy 基本结构
- Scrapy Engine(引擎):负责网络和数据调度
- Scheduler(调度器):线程调度
- Downloader(下载器):网络请求
- Spider(爬虫):负责获取结构化的数据
- Pipeline(管道):处理爬虫获取到的结构化的数据
定义爬取的数据
继承 scrapy.Item
编写提取数据的 Spider
执行 Spider 获取数据
在继承 scrapy.Spider 的 parse 中对 scrapy.Item 的继承进行赋值
1 | import scrapy |
保存爬取到的数据
最简单存储爬取的数据的方式是使用 Feed exports:
采用 JSON 格式对爬取的数据进行序列化,生成 items.json 文件
1 | scrapy crawl dmoz -o items.json |
如果需要对爬取到的 item 做更多更为复杂的操作,可以编写 Item Pipeline
类似于我们在创建项目时对 Item 做的,用于您编写自己的 tutorial/pipelines.py 也被创建
如果仅仅想要保存 item,您不需要实现任何的 pipeline
初始化安装
1 | py --version |
工具命令
- 全局命令:
- startproject
- settings
- runspider
- shell
- fetch
- view
- version
- 项目(Project-only)命令:
- crawl
- check
- list
- edit
- parse
- genspider
- deploy
- bench
提取 Item
Selectors 选择器
xpath 参数
- /html/head/title: 选择 HTML 文档中<\head>标签内的<\title>元素
- /html/head/title/text(): 选择上面提到的<\title>元素的文字
- //td: 选择所有的<\td>元素
- //div[@class=”mine”]: 选择所有具有 class=”mine”属性的 div 元素
Selector 基本方法 - xpath(): 传入 xpath 表达式,返回该表达式所对应的所有节点的 selector list 列表 。
- css(): 传入 CSS 表达式,返回该表达式所对应的所有节点的 selector list 列表.
- extract(): 序列化该节点为 unicode 字符串并返回 list。
- re(): 根据传入的正则表达式对数据进行提取,返回 unicode 字符串 list 列表。