iis v6 新建网站,自动摘要wordpress,线上免费编程课,杭州市萧山区市场建设开发网站网络爬虫框架scrapy
#xff08;配置型爬虫#xff09;
什么是爬虫框架#xff1f;
爬虫框架是实现爬虫功能的一个软件结构和功能组件集合爬虫框架是个半成品#xff0c;帮助用户实现专业网络爬虫
scrapy框架结构(52结构) spider:
解析downloader返回的响…网络爬虫框架scrapy
配置型爬虫
什么是爬虫框架
爬虫框架是实现爬虫功能的一个软件结构和功能组件集合爬虫框架是个半成品帮助用户实现专业网络爬虫
scrapy框架结构(52结构) spider:
解析downloader返回的响应Response产生爬取项scraped item产生额外的爬去请求Request 需要用户编写配置代码
engine(引擎):
控制所有模块之间的数据流根据条件触发事件 不需要用户修改
scheduler(调度器):
对所有爬取请求进行调度处理 不需要用户修改
downloader(下载器):
根据请求下载网页 不需要用户修改
item pipelines():
以流水线处理spider产生的爬取项由一组操作顺序组成类似流水线每个操作是一个Item Pipeline类型可能操作包括清理、检验和查重爬取项中的HTML数据将数据存储到数据库中 需要用户编写配置代码
downloader middleware(中间件):
目的实施engine、scheduler和downloader之间进行用户可配置的控制功能修改、丢弃、新增请求或响应 用户可以编写配置代码
spider middleware(中间件):
目的对请求和爬去项的再处理功能修改、丢弃、新增请求或爬取项 用户可以编写配置代码
数据流 1.Engine从Spider处获得爬取请求(Request)2.Engine将爬取请求转发给Scheduler,用于调度3.Engine从Scheduler处获得下一个爬取的请求4.Engine将爬取请求通过中间件发送给Downloader5.爬取网页后Downloader形成响应(Response)通过中间件(Middleware)发给Engine6.Engine将收到的响应通过中间件发送给Spider处理7.Spider处理响应后产生爬取项scraped item和新的爬取请求(Requests)给Engine8.Engine将爬取项发送给Item Pipeline(框架出口)9.Engine将爬取请求发送给Scheduler Engine控制各模块数据流不间断从Scheduler处获得爬取请求直到请求为空框架入口Spider的初始爬取请求框架出口Item Pipeline
scrapy命令行
格式
scrapy command [options] [args] ** 常用命令 **
命令说明格式startproject创建一个新工程scrapy startproject [dir] genspider创建一个爬虫scrapy genspider [options] [domain] settings获得爬虫配置信息scrapy settings [options]crawl运行一个爬虫scrapy crawl list列出工程中所有的爬虫scrapy listshell启动URL调试命令行scrapy shell [url]
demohttps://python123.io/ws/demo.html
创建工程
scrapy startproject python123demo 创建爬虫
scrapy genspider demo python123.io
//生成了一个名为demo的spider
//在spider目录下增加代码文件demo.py该文件也可以手工生成 ** demo.py文件 **
# -*- coding: utf-8 -*-
import scrapyclass DemoSpider(scrapy.Spider):name demoallowed_domains [python123.io]start_urls [http://python123.io/]def parse(self, response):pass 配置产生的spider爬虫
# -*- coding: utf-8 -*-
import scrapyclass DemoSpider(scrapy.Spider):name demo#allowed_domains [python123.io]start_urls [http://python123.io/ws/demo.html]def parse(self, response):#存储文件名demo.htmlfile_name response.url.split(/)[-1]with open(file_name,wb) as f:f.write(response.body)self.log(Saved file %s % file_name)#日志*** 另一个版本 **
# -*- coding: utf-8 -*-
import scrapyclass DemoSpider(scrapy.Spider):name demo#allowed_domains [python123.io]#start_urls [http://python123.io/ws/demo.html]def start_requests(self):urls [http://python123.io/ws/demo.html]for url in urls:yield scrapy.Request(urlurl, callbackself.parse)def parse(self, response):#存储文件名demo.htmlfile_name response.url.split(/)[-1]with open(file_name,wb) as f:f.write(response.body)self.log(Saved file %s % file_name)#日志运行爬虫
scrapy crawl demo
Scrapy爬虫数据类型
Request类Response类Item类
Request类
class scrapy.http.Request()
Request对象表示一个HTTP请求由Spider生成由Downloader执行
属性方法.urlRequests对应的请求URL地址.method对应的请求方法GEt、POST等.headers字典类型风格的请求头.body请求内容主体字符串类型.meta用户添加的扩展信息在Scrapy内部模块间传递信息使用.copy复制该请求
Response类
class scrapy.http.Response()
Response对象表示一个HTTp响应由Downloader生成由Spider处理
属性或方法说明.urlResponse对应的URL地址.statusHTTP状态码默认是200.headersResponse对应的头部信息.bodyResponse对应的内容信息字符串类型.flags一组标记.request产生Response类型对应的Request对象.copy()复制该响应
Item类
class scrapy.item.Item()
Item对象表示一个从HTML页面中提取的信息内容由Spider生成由Item Pipeline处理Item类似字典类型可以按照字典类型操作
Scrapy爬虫的使用步骤
创建一个工程和Spider模板编写Spider编写Item Pipeline优化配置策略
scrapy爬虫信息提取方法
Beautifui SouplxmlreXPath SelectorCSS Selector 本文由博客群发一文多发等运营工具平台 OpenWrite 发布