当前位置: 首页 > news >正文

精品课程网站开发环境石家庄抖音代运营公司

精品课程网站开发环境,石家庄抖音代运营公司,消防器材厂家东莞网站建设,开发楼盘需要多少钱目录 什么是Scrapy Scrapy核心组件 Scrapy扩展组件 组件交互流程 安装Scrapy Scrapy项目目录结构说明 创建Scrapy项目 创建爬虫 运行爬虫 配置请求头 全局配置请求头 指定爬虫配置请求头 配置管道pipeline 全局配置pipeline 方式一#xff1a;指定爬虫配置pipe…目录 什么是Scrapy Scrapy核心组件 Scrapy扩展组件 组件交互流程 安装Scrapy Scrapy项目目录结构说明 创建Scrapy项目 创建爬虫 运行爬虫 配置请求头 全局配置请求头 指定爬虫配置请求头 配置管道pipeline 全局配置pipeline 方式一指定爬虫配置pipeline 方式二指定爬虫配置pipeline 数据建模 items Scrapy官网https://scrapy.org/ 什么是Scrapy Scrapy 是一个基于 Python 的快速的高级网页抓取和网页爬取框架用于抓取网站并从其页面中提取结构化数据。它可用于多种用途从数据挖掘到监控和自动化测试。 Scrapy核心组件 1. Scrapy EngineScrapy引擎 Scrapy 引擎是整个系统的核心负责控制数据流在所有组件之间的流动。它从调度器获取请求发送给下载器处理然后将下载器返回的响应交给爬虫处理。2. Scheduler调度器 调度器负责接收引擎发来的请求并进行排序然后将这些请求发送给引擎。调度器可以处理优先级并且支持去重机制以避免重复抓取。3. Downloader下载器 下载器负责向互联网上的服务器发送请求并接收响应。Scrapy 下载器是高度异步的能够高效地处理大量请求。4. Spiders爬虫 爬虫是用户定义的类负责处理下载器返回的响应从中提取数据Item或进一步生成请求。每个爬虫定义了要抓取的域名和处理响应的逻辑。5. Item数据项 Item 是一种简单的数据容器用于存储从网页中提取的数据。Item 类似于字典但提供了额外的保护和方法。6. Item Pipeline数据管道 数据管道是一个序列化系统用于处理和存储从爬虫中提取的数据。每个管道组件负责处理数据项的一部分例如数据清洗、验证或存储。7. Downloader Middlewares下载中间件 下载中间件是介于调度器和下载器之间的钩子用于处理请求和响应。它们可以修改或扩展请求和响应的处理流程例如设置代理、修改请求头等。8. Spider Middlewares爬虫中间件 爬虫中间件是介于引擎和爬虫之间的钩子用于处理爬虫输入和输出的响应和结果。它们可以修改或扩展爬虫的处理流程例如添加额外的日志记录、处理异常等。 Scrapy扩展组件 1. Feed Exports数据导出 Scrapy 支持将抓取的数据导出为多种格式如 JSON、CSV、XML并可以配置导出的细节如字段顺序、编码等。2. Telnet ConsoleTelnet 控制台 Telnet 控制台提供了一个实时监控和调试爬虫的工具允许开发者在爬虫运行时进行交互式调试。3. Logging日志 Scrapy 内置了强大的日志系统用于记录运行时的各种信息如调试信息、错误消息等。日志系统可以配置不同的日志级别和输出格式。4. Extensions扩展 扩展模块用于增强 Scrapy 的功能例如自动重试失败的请求、监控爬虫性能等。开发者可以自定义扩展模块以满足特定需求。5. Stats Collectors统计收集器 统计收集器用于收集和记录爬虫运行时的各种统计信息如请求数量、响应时间等。统计信息可以用于优化和调试爬虫。 组件交互流程 初始请求爬虫从 start_urls 生成初始请求并通过引擎Engine发送给调度器Scheduler。请求调度调度器Scheduler将请求排序并发送给下载器Downloader。请求下载下载器Downloader向目标网站Internet发送请求并获取响应。响应处理下载器Downloader将响应发送给引擎Engine进而交给爬虫Spiders处理。数据提取爬虫Spiders从响应中提取数据项并生成新的请求如果有。数据处理提取的数据项通过数据管道Item Pipeline进行处理和存储。 安装Scrapy pip install scrapy Scrapy项目目录结构说明 Scrapy 项目的结构较为标准以下是一个典型的 Scrapy 项目的目录结构图示及其简要说明供方便理解。 myproject/ │ ├── myproject/ # 项目目录主目录 │ ├── __init__.py │ ├── items.py # 定义 Item 类数据结构 │ ├── middlewares.py # 自定义中间件 │ ├── pipelines.py # Item 处理管道 │ ├── settings.py # 项目设置文件 │ ├── spiders/ # 存放爬虫的目录 │ │ ├── __init__.py │ │ ├── example_spider.py # 定义爬虫 │ ├── scrapy.cfg # Scrapy 配置文件 │ └── README.md # 项目的说明文件可选创建Scrapy项目 使用 scrapy startproject 命令来创建一个新的 Scrapy 项目。打开终端或命令行进入你想要创建项目的目录并运行以下命令 # scrapy startproject 项目名称 scrapy startproject myproject创建爬虫 在项目根目录中你可以使用 scrapy genspider 命令创建新的爬虫。以下命令将创建一个名为 baidu 的爬虫用于抓取 www.baidu.com 的域名 # scrapy genspider 爬虫名称 允许爬取的域名 scrapy genspider baidu www.baidu.com完整目录结构如下 爬虫文件内容说明 解析方法解析response # 解析方法response爬取起始url的响应 def parse(self, response):# 解析示例with open(baidu.html, wb) as f:f.write(response.body) 运行爬虫 运行爬虫之前需要修改 settings.py 配置文件的配置如下 使用 scrapy crawl 命令来运行你的爬虫。以下命令会启动名为 baidu 的爬虫 # scrapy crawl 爬虫名称 scrapy crawl baidu配置请求头 全局配置请求头 在 settings.py 配置文件中配置 USER_AGENT 和 DEFAULT_REQUEST_HEADERS 参数示例如下 # Crawl responsibly by identifying yourself (and your website) on the user-agent USER_AGENT Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 # Override the default request headers: DEFAULT_REQUEST_HEADERS {Accept: text/html,application/xhtmlxml,application/xml;q0.9,*/*;q0.8,Accept-Language: zh-CN,zh;q0.9, } 指定爬虫配置请求头 在指定爬虫文件中配置 start_requests 方法示例如下 import scrapyclass TeibaSpider(scrapy.Spider):name teibaallowed_domains [tieba.baidu.com]start_urls [https://tieba.baidu.com/f?kw沙井]def start_requests(self):headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36,Accept-Language: zh-CN,zh;q0.9,}for url in self.start_urls:yield scrapy.Request(url, headersheaders, callbackself.parse)def parse(self, response):pass 配置管道pipeline 全局配置pipeline 在 settings.py 配置文件中配置ITEM_PIPELINES 参数用于开启管道示例如下 # Configure item pipelines ITEM_PIPELINES {# myproject项目名称# pipelines项目下的pipelines.py文件# MyprojectPipelinepipelines.py文件中指定的类# 300管道优先级多个管道时数字越小优先级越高越先执行myproject.pipelines.MyprojectPipeline: 300, } pipelines.py 文件内容如下 当管道开启后在我们启动爬虫时日志打印信息如下 方式一指定爬虫配置pipeline 在指定爬虫文件中配置 custom_settings 属性示例如下 import scrapyclass TeiBaSpider(scrapy.Spider):name teibaallowed_domains [tieba.baidu.com]start_urls [https://tieba.baidu.com/f?kw沙井]# 指定 pipelinecustom_settings {ITEM_PIPELINES: {myproject.pipelines.TieBaPipeline: 300,}}def parse(self, response):item {}item[title] a.xpath(./title).get()item[url] https://tieba.baidu.com/ a.xpath(./href).get()# yield 的数据会返回到 TieBaPipeline 中yield itempipelines.py 文件内容如下 方式二指定爬虫配置pipeline 在 settings.py 配置文件中配置 ITEM_PIPELINES 参数配置多个示例如下 ITEM_PIPELINES {myproject.pipelines.BaiDuPipeline: 300,myproject.pipelines.TieBaPipeline: 301, } 在 pipelines.py 文件中通过爬虫名称判断 from itemadapter import ItemAdapterclass BaiDuPipeline:def open_spider(self, spider):# 初始化方法类比 def __init__(self)if spider.name baidu:passdef process_item(self, item, spider):if spider.name baidu:passreturn itemdef close_spider(self, spider):# 析构方法类比 def __del__(self)if spider.name baidu:passclass TieBaPipeline:def open_spider(self, spider):if spider.name tieba:passdef process_item(self, item, spider):if spider.name tieba:passreturn itemdef close_spider(self, spider):if spider.name tieba:pass数据建模 items 数据建模的好处是统一数据字段免得写错会在执行的时候对模板字段进行检测。清晰代码便于维护等好处。 1. 创建模型 在 items.py 文件中创建模型 import scrapyclass UserItem(scrapy.Item):# define the fields for your item here like:# 用户名称name scrapy.Field()# 用户年龄age scrapy.Field() 2. 爬虫中使用模型 import scrapy from myproject.items import UserItemclass BaiduSpider(scrapy.Spider):name baiduallowed_domains [www.baidu.com]start_urls [https://www.baidu.com]def parse(self, response):# 使用模型item UserItem()item[name] response.xpath(//h1/text()).get()item[age] response.xpath(//h2/text()).get()yield item 3. 管道中使用模型 from itemadapter import ItemAdapterclass MyprojectPipeline:def process_item(self, item, spider):# 把对象类型转换成字典类型item dict(item)return item
http://www.w-s-a.com/news/392127/

相关文章:

  • 公司网站友情链接怎么做副链华为荣耀手机官网
  • 一条龙做网站旅游网页设计模板图凡科
  • 中山网站建设哪家便宜在中国做外国网站怎么收钱
  • 网站优化大计孝感注册公司
  • 设计接单app平台有哪些在线网站seo诊断
  • 兰州网站建设推广现代营销手段有哪些
  • 郴州网站seo优化网络安全哪个培训班比较好
  • 做网站需要记哪些代码企业网站建设思路
  • 重庆自助建站模板网络服务器配置与管理
  • 外贸网站怎样做小程序买量平台
  • 中山精品网站建设机构海外留学网站建设方案
  • 长春网站建设工作如何取消wordpress页脚
  • 忻府网站建设排名网络管理系统官网
  • 张家港外贸网站建设国医堂网站平台建设
  • 水冶那里有做网站的对于网站链接优化有哪些建议
  • 宝安中心地铁站是几号线化妆品网站做的好的
  • 海宁营销型网站设计企业融资是什么意思
  • 淘宝客做网站要钱吗网站开发试题库
  • 10g空间网站做视频网站网站建设找超速云
  • 一元购网站怎么做企业网站源码cms
  • 域名不变 网站改版临沂企业网站建站模板
  • 天河网站建设信科网络外包公司和公司直招哪个好
  • 网站制作哈尔滨聊天系统源码
  • 网站建设朋友圈素材青白江建设网站
  • 红酒网站设计软件设计文档
  • 如何创建网站目录网站申请支付宝接口
  • 网站做区块链然后往里面投钱品牌设计公司收费标准
  • 2022互联网+创新创业项目呼和浩特企业网站排名优化
  • 电子商务类网站建设山西自助建站系统怎么用
  • odoo做网站网站设置专栏有什么好处