Scrapy框架丨Python爬虫基础入门系列(4)
提示:文末有福利!最新Python爬虫资料/学习指南>>戳我直达
前言
Scrapy框架简述
Scrapy 是一个为了抓取网页数据、提取结构性数据而编写的应用框架,该框架是封装的,包含 request (异步调度和处理)、下载器(多线程的 Downloader)、解析器(selector)和 twisted(异步处理)等。对于网站的内容爬取,其速度非常快捷。
话不多说,开始学习
Scrapy框架
Scrapy库安装
打开cmd输入pip install scrapy
2、Scrapy爬虫框架结构
5 2结构、数据流
3、Scarpy爬虫框架解析
ENGINE:
控制所有模块之间的数据流。
根据条件触发事件。
不需要用户修改。
DOWNLOADER:
根据请求下载网页。
不需要修改。
SCHEDULER:
对所有爬取请求进行调度管理。
不需要用户修改
DOWNLOADER MIDDLEWARE
downloader和engine两个模块之间的中间键。
目的:实施Engine、Scheduler和Downloader之间进行用户可配置的控制。
功能:修改、丢弃、新增请求或响应。
用户可以编写代码修改。
Spider:
解析Downloader返回的响应(Response)。
产生爬取项(scraped item)。
产生额外的爬取请求(Request)。
需要用户编写配置代码。
Item Pipelines:
以流水线方式处理Spider产生的爬取项。
由一组操作顺序组成,类似流水线,每个操作是一个Item Pipeline类型。
可能操作包括:清理、检验和查重爬取项中的HTML数据、将数据存储到数据库。
需要用户编写配置代码。
Spider Middleware
Spider和Engine之间的中间键。
目的:对请求和爬取项的再处理。
功能:修改、丢弃、新增请求或爬取项。
用户可以编写配置代码。
4、Scrapy爬虫的常用命令
Scrapy命令行(cmd)
startproject
创建一个新工程。
scrapy startproject[dir]
genspider
创建一个爬虫。
scrapy genspider[options]
settings
获得爬虫配置信息。
scrapy settings[options]
crawl
运行一个爬虫。
scrapy crawl
list
列出工程中所有爬虫。
scrapy list
shell
启动url调试命令行。
scrapy shell[url]
操作步骤
1、建立一个Scrapy爬虫工程
①、打开命令行,切换到自己希望存储的目录。
②、输入scrapy startproject 文件名。
③、生成工程目录
文件夹:外层目录
scrapy.cfg:部署scrapy爬虫的配置文件。
文件夹:scrapy框架的用户自定义python代码。
_init_.py:初始化脚本
item.py:Items代码模板(继承类)
middlewares.py:Middlewares代码模板(继承类)
pipelines.py:pipelines代码模板(继承类)
settings.py:scrapy爬虫的配置文件
spiders/:spiders代码模板目录(继承类)
_init_.py:初始文件,无需修改。
_pycache_/:缓存目录,无需修改。
2、在工程中产生一个Scrapy爬虫
命令行中输入scrapy genspider 文件名 爬取网站网址
3、配置产生的spider爬虫
#例子import scrapyclass DemoSpider(scrapy.Spider):
name = 'demo'
#allowed_domains = ['python123.io']
start_urls = ['http://python123.io/ws/demo.html']
def parse(self, response):
fname=response.url.split('/')[-1]
with open(fname,'wb') as f:
f.write(response.body)
self.log('Saved file %s.' % name)
pass
4、运行爬虫,获取网页
5、yield关键词使用
yeild<–>生成器
1、生成器是一个不断产生值的函数。
2、包含yield语句的函数是一个生成器。
3、生成器每次产生一个值(yield语句),函数被冻结,被唤醒后再产生一个值。
实例
生成器写法
def gen(n):
for j in range(n):
yield j**2
# 产生所有小于n的数的平方值,运行到yield这一行时,运算i**2的值并返回,然后函数被冻结。for i in gen(5):
print(i, " ", end="")
# >>>输出结果:0 1 4 9 16
# 这块儿只可意会不可言传,大概解释一下就是,进入主函数的for循环的时候,先运行gen(5),此时进入gen函数,第一次走gen里的循环,j=0,经过yield,返回0给i,此时i为0。第一次i循环结束。走第二次,再次调用gen,此时gen里的j=1,重复上述。按我的说法就是,yield是一个有记录状态功能的return。
6、Scrapy爬虫的基本使用
Scrapy爬虫的使用步骤:
1、创建一个工程和Spider模板
2、编写Spider
3、编写Item Pipeline
4、优化配置策略
Scrapy爬虫的数据类型:
Request类
class scrapy.http.Request()
Request对象表示一个HTTP请求。
由Spider生成,由Downloader执行。
属性或方法:
.url:Request对应的请求URL地址。
.method:对应的请求方法,'GET''POST'等。
.headers:字典类型风格的请求头。
.body:请求内容主体,字符串类型。
.meta:用户添加的扩展信息,在Scrapy内部模块间传递信息使用。
.copy():复制该请求。
Response类
class scrapy.http.Response()
Response对象表示一个HTTP响应。
由Downloader生成,由Spider处理。
属性或方法:
.url:Response对应的url地址。
.status:HTTP状态码,200、404、403……
.headers:Response对应的头部信息。
.body:Response对应的内容信息,字符串类型。
.flags:一组标记。
.request:产生Response类型对应的Request对象。
.copy():复制该响应。
Item类
class scrapy.item.Item()
Item对象表示一个从HTML页面中提取的信息内容。
由Spider生成,由Item Pipeline处理。
Item类似字典类型,可以按照字典类型操作。
Scrapy爬虫支持的HTML信息提取方法
Beautiful Soup
lxml
re
XPath Selector
CSS Selector
使用格式:.css(‘a::attr(href)’).extract()
其中,a为标签名称,href是标签属性。
总结
关于更多Scrapy框架的知识,大家可以参考Scrapy框架中文官方文档《Scrapy 中文手册 0.25 文档》
Python爬虫基础入门系列(4)就到这,希望大家早日修炼成为爬虫大佬!当然,如果你准备系统地学爬虫及更多Python编程技术,可戳我文末的名片,Free领取最新Python爬虫资料/免费咨询/学习规划~
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhfigkhk
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13