文章目录提示:文末有福利!最新Python爬虫资料/学习指南>>戳我直达
- 前言
- Scrapy框架
- Scrapy库安装
- 2、Scrapy爬虫框架结构
- 3、Scarpy爬虫框架解析
- 4、Scrapy爬虫的常用命令
- *** 作步骤
- 1、建立一个Scrapy爬虫工程
- 2、在工程中产生一个Scrapy爬虫
- 3、配置产生的spider爬虫
- 4、运行爬虫,获取网页
- 5、yield关键词使用
- 6、Scrapy爬虫的基本使用
- 总结
前言
Scrapy框架简述
Scrapy 是一个为了抓取网页数据、提取结构性数据而编写的应用框架,该框架是封装的,包含 request (异步调度和处理)、下载器(多线程的 Downloader)、解析器(selector)和 twisted(异步处理)等。对于网站的内容爬取,其速度非常快捷。
话不多说,开始学习
打开cmd输入pip install 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
4、Scrapy爬虫的常用命令Spider和Engine之间的中间键。
目的:对请求和爬取项的再处理。
功能:修改、丢弃、新增请求或爬取项。
用户可以编写配置代码。
Scrapy命令行(cmd)
startproject
创建一个新工程。
scrapy startproject[dir]
genspider
创建一个爬虫。
scrapy genspider[options]
settings
获得爬虫配置信息。
scrapy settings[options]
crawl
运行一个爬虫。
scrapy crawl
list
列出工程中所有爬虫。
scrapy list
shell
*** 作步骤 1、建立一个Scrapy爬虫工程启动url调试命令行。
scrapy shell[url]
①、打开命令行,切换到自己希望存储的目录。
②、输入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 文件名 爬取网站网址
#例子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爬虫资料/免费咨询/学习规划~
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)