scrapy爬虫基本使用
目标: 将中大招生网爬取body存在html文件中
步骤一:
应用scrapy爬虫框架主要编写配置型代码
步骤1:建立一个Scrapy爬虫工程 选取一个目录(D:\pycodes\),然后执行如下命令:
scrapy startproject pythonSYSU
###生成的工程目录:
1 | pythonSYSU/ 外层目录 |
步骤二:
在工程中产生一个scrapy爬虫, 进入工程目录执行:scrapy genspider SYSU admission.sysu.edu.cn
该命令作用:
(1)生成一个名称为SYSU的spider
(2)在spiders目录下增加代码文件SYSU.py
该命令仅用于生成SYSU.py,该文件也可以手工生成
1 | # -*- coding: utf-8 -*- |
parse()用于处理响应,解析内容形成字典,发现新的URL爬取请求
步骤三:
配置产生的spider爬虫:
- 初始url地址
- 获取页面后的解析方式
1 | # -*- coding: utf-8 -*- |
步骤四:
运行爬虫,获取网站:
scrapy crawl pythonSYSU
SYSU爬虫被执行,捕获页面存储在sysu.html
SYSU.py代码的完整版本:
1 | # -*- coding: utf-8 -*- |
yield 关键字:
yield->生成器
包含yield语句的函数是一个生成器
生成器每次产生一个值(yield语句),函数被冻结,被唤醒后再产生一个值
生成器是一个不断产生值的函数
为什么要有生成器:
1)更节省存储空间
2)响应更迅速
3)使用更灵活
scrapy爬虫的使用步骤:
步骤1:创建一个工程和Spider模板
步骤2:编写Spider
步骤3:编写Item Pipeline
步骤4:优化配置策略
scrapy爬虫的数据类型:
Request类
Response类
Item类
Request类
class scrapy.http.Request()
Request对象表示一个HTTP请求
由Spider生成,由Downloader执行
Response类
class scrapy.http.Response(
Response对象表示一个HTTP响应
由Downloader生成,由Spider处理
Item类
class scrapy.item.Item()
Item对象表示一个从HTML页面中提取的信息内容
由Spider生成,由Item Pipeline处理
Item类似字典类型,可以按照字典类型操作
scrapy爬虫提取信息的方法
Scrapy爬虫支持多种HTML信息提取方法:
•Beautiful Soup
•lxml
•re
•XPath Selector
•CSS Selector
css selector的基本使用:
<HTML>.css('a::attr(href)').extract()
a->标签名称 href->标签属性
CSS Selector由W3C组织维护并规范