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

中国建设银行手机银行网站网站免费软件

中国建设银行手机银行网站,网站免费软件,优化大师软件大全,专业营销推广团队一.Scrapy框架特点 框架#xff08;Framework#xff09;是一种软件设计方法#xff0c;它提供了一套预先定义的组件和约定#xff0c;帮助开发者快速构建应用程序。框架通常包括一组库、工具和约定#xff0c;它们共同工作以简化开发过程。scrapy框架是python写的 为了爬…一.Scrapy框架特点 框架Framework是一种软件设计方法它提供了一套预先定义的组件和约定帮助开发者快速构建应用程序。框架通常包括一组库、工具和约定它们共同工作以简化开发过程。scrapy框架是python写的 为了爬取网站数据 提取结构化数据的爬虫框架相当于人家已经给我们写好了功能提供好了方法我们直接拿过来用就可以完成对应v 特点  1.异步处理提高爬取效率 1异步处理的基本原理 异步处理允许程序在等待某些操作完成时继续执行其他任务从而避免了CPU资源的浪费这种非阻塞的工作模式显著提高了数据处理的效率和吞吐量。 2)异步处理在爬虫中的应用 在网络爬虫中应用异步处理可以同时处理多个请求减少了等待服务器响应的时间通过并发爬取大幅提高了数据抓取的速度和效率。 (3)异步处理的优势与挑战 异步处理通过提高资源利用率和响应速度来提升爬取效率但同时也带来了编程模型的复杂性需要合理管理并发任务和资源以避免潜在的性能瓶颈和错误。  2.中间件系统扩展功能 1下载器中间件功能 下载器中间件通过自定义扩展实现对下载过程的深度定制如添加请求头信息、处理响应数据等极大增强了Scrapy框架的灵活性和功能性。 2)爬虫中间件作用 爬虫中间件在引擎与爬虫间架起桥梁允许用户插入自定义代码来操作请求和响应从而实现对爬虫流程的精细控制提升数据处理的能力和效率。 (3)中间件系统的功能拓展 通过中间件系统Scrapy能够实现包括网络通讯处理、下载加速、异步框架支持等功能这些功能拓展了Scrapy的应用范围满足了更多样化的爬虫开发需求。 3.数据管道处理存储数据 1定义Item类 在数据管道处理的第一步中我们定义一个继承自scrapy.Item的类这个类通过使用scrapy.Field()定义字段来存储我们需要爬取的数据。 2)编写Pipeline类 接下来我们创建一个Pipeline类实现open_spider和process_item两个关键方法用于在爬虫开始时初始化资源并在每个item被爬取后进行处理如写入文件或数据库。 (3)数据处理与存储 在process_item方法中我们可以编写逻辑来具体处理每一个item例如将其写入文件或存入数据库。根据这个方法是否返回item对象决定item是否继续传递到下一个Pipeline。 4.内置选择器提取数据 1XPath选择器提取数据 XPath选择器通过XPath表达式定位网页元素能够精确地从复杂的HTML结构中提取出所需的数据如使用特定路径表达式提取具有特定属性的元素文本。 2)CSS选择器提取数据 CSS选择器利用简洁的语法通过元素的类名、ID或属性等来定位网页中的特定元素使得数据提取过程更为直接和高效适用于快速提取样式定义的元素内容。 (3)正则表达式匹配数据 正则表达式提供强大的字符串匹配能力通过定义特定的模式来匹配和提取字符串中的复杂数据是处理非结构化文本数据时不可或缺的工具尤其适用于从文本中提取符合特定格式的信息。 5.支持分布式爬虫任务 1Redis作为共享队列 在Scrapy分布式爬虫中Redis充当核心的共享队列和数据存储角色允许不同爬虫实例通过它共享待爬取的URL和已抓取的数据实现信息同步。 2)调度器的角色 调度器在Scrapy框架中负责管理和分配待爬取的URLs。在分布式设置下通过Redis实现的调度器确保多个爬虫实例能高效地获取并处理URLs。 (3)并行下载与数据处理 Scrapy分布式爬虫利用各自的下载器进行并行下载以及多个Spider实例同时运行来处理网页提高了下载效率和数据处理速度Item Pipeline则负责后续的数据存储或处理工作。 二.Scrapy使用流程 1.开发步骤 1项目创建 创建项目scrapy startproject xxx项目名字不区分大小写在终端输入open in Explore 2)明确目标 编写items.py明确你想要抓取的目标其实就是先确定一下你要爬取什么字段的数据 (3)制作爬虫 制作爬虫 spiders/xxspider.py制作爬虫开始爬取网页 (4)存储内容 存储内容 pipelines.py设计管道存储爬取内容取网页 实际中不必要按照顺序去遵守 自己写代码想咋写就咋写 实现功能为主 2.项目文件解释 spiders    爬虫目录 items    设置数据存储的模板 middlewares    中间件文件 pipelines    管道文件 数据持久化 settings    配置文件 3.项目创建与使用 创建项目 scrapy startproject xxx(项目名) 进入项目 cd xxx(项目名)。 创建爬虫 scrapy genspider  爬虫名 要爬取网站的域名 运行爬虫 scrapy crawl 爬虫名 4.爬虫文件 创建爬虫文件默认生成一个类里面三个属性一个方法 1三个属性 name 这个爬虫的识别名称必须是唯一的在不同的爬虫必须定义不同的名字 allow_domains [] 是搜索的域名范围也就是爬虫的约束区域规定爬虫只爬取这个域名下的网页不存在的URL会被忽略 start_urls [] 爬取的URL列表。爬虫从这里开始抓取数据所以第一次下载的数据将会从这些urls开始。其他子URL将会从这些起始URL中继承性生成。 2)一个方法 parse(self, response) 解析的方法每个初始URL完成下载后将被调用调用的时候传入请求url的Response对象来作为唯一参数主要作用如下 1. 负责解析返回的网页数据(response.body)提取结构化数据(生成item) 2. 生成需要下一页的URL请求。 5.配置Settings设置 1修改settings.py文件 settings.py位于Scrapy项目的根目录是项目配置的核心。通过修改该文件可以调整日志级别、用户代理等关键设置以适应不同的爬虫需求。 2)常见设置项 Scrapy中的常见设置项包括LOG_LEVEL用于调整日志输出级别ROBOTSTXT_OBEY决定是否遵守robots协议以及USER_AGENT用于设置爬虫的用户代理字符串帮助爬虫更好地伪装身份。 (3)日志等级 严重错误    critical 一般错误    error 警告 warning 一般信息 info 调试信息    debug 默认的日志等级是debug LOG_LEVEL ERROR 修改日志的输出 6.Scrapy框架组成部分!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1调度器 作用 它负责接受引擎发送过来的Request请求并按照一定的方式进行整理排列入队当引擎需要时交还给引擎。 2)引擎 作用负责与其他部分的交流通讯 (3)下载器 作用负责下载引擎发送的所有Requests请求并将其获取到的Responses交还给引擎由引擎交给Spider来处理 (4)爬虫 作用它负责处理所有Responses,从中分析提取数据获取Item字段需要的数据并将需要跟进的URL提交给引擎再次进入调度器 (5)管道 作用 它负责处理Spider中获取到的Item并进行进行后期处理详细分析、过滤、存储等的地方. 7.Scrapy的运作流程 (1)8.. 引擎询问Spider, 需要爬取的网站是谁 (2). Spider告诉引擎目标url是谁。并且给到引擎 (3). 引擎Hi调度器我这有request请求你帮我排序入队一下。 (4). 调度器好的对这个请求做对应的处理比如排序入队。 (5). 调度器排序入队完了以后把处理好的request给引擎 (6). 引擎找到 下载器 你按照下载中间件的设置帮我下载一下这个request请求 (7). 下载器好的把下载好的东西发给 引擎。如果这个request下载失败了。然后引擎告诉调度器这个request下载失败了你记录一下我们待会儿再下载 (8). 引擎把下载好的内容给到 Spider注意这儿responses默认是交给def parse()这个函数处理的 (9). Spider处理完毕有两个结果一我需要跟进的URL二需要保存的Item数据 如果为结果一就重复第2到最后的步骤如果为结果二 Spider把item数据发给 引擎由 引擎给 管道进行持久化存储     重复这个步骤 直到爬虫运行完毕 注意只有当调度器没有request需要处理时整个程序才会停止。对于下载失败的URLScrapy也会重新下载。 8.数据管道处理存储数据  (1)定义Item类 scrapy.Item这个类通过使用scrapy.Field()定义字段来存储我们需要爬取的数据。我们需要存几个字段的数据就定义几个字段的值 字段名 scrapy.Field() (2).爬虫使用 from ..items import item类名 变量名  类名() # 实例化 变量名[字段名]字段值 yield item # 通过yield 把数据发给管道 (3).编写Pipeline类 process_item这个方法里面写数据保存的代码。如文件保存到本地的代码里面的return可以把数据传给下一个管道管道可以定义多个不同的管道做不同的数据保存操作如一个管道存MySQL一个管道写代码把数据存本地也可以一个管道即存MySQL又存本地 (4). 配置文件解开注释 配置文件解开管道的注释 其中key的值是管道类名的路径值是权重值权重值越小 优先级越高范围是0-1000会按照权重大小依次执行先到第一个权重高的管道 执行 process_item方法 保存到本地 如果没有return出去  没有返回 那么就会阻塞在当前管道 ## Scrapy的运作流程 # # 代码写好程序开始运行... # # 1. 引擎HiSpider, 你要处理哪一个网站 # # 2. Spider老大要我处理xxxx.com。 # # 3. 引擎你把第一个需要处理的URL给我吧。 # 4. Spider给你第一个URL是xxxxxxx.com。 # # 5. 引擎Hi调度器我这有request请求你帮我排序入队一下。 # 6. 调度器好的正在处理你等一下。 # # 7. 引擎Hi调度器把你处理好的request请求给我。 # 8. 调度器给你这是我处理好的request # # 9. 引擎Hi下载器你按照老大的下载中间件的设置帮我下载一下这个request请求 # # 10. 下载器好的给你这是下载好的东西。如果失败sorry这个request下载失败了。然后引擎告诉调度器这个request下载失败了你记录一下我们待会儿再下载 # # 11. 引擎HiSpider这是下载好的东西并且已经按照老大的下载中间件处理过了你自己处理一下注意这儿responses默认是交给def parse()这个函数处理的 # # 12. Spider处理完毕数据之后对于需要跟进的URLHi引擎我这里有两个结果这个是我需要跟进的URL还有这个是我获取到的Item数据。 # # 13. 引擎Hi 管道 我这儿有个item你帮我处理一下调度器这是需要跟进URL你帮我处理下。然后从第四步开始循环直到获取完老大需要全部信息。 # # 14. 管道调度器好的现在就做 # # ***注意只有当调度器没有request需要处理时整个程序才会停止。对于下载失败的URLScrapy也会重新下载。*** 9.scrapy 常见报错 报错1 AttributeError: AsyncioSelectorReactor object has no attribute _handleSignals 原因Twisted版本23会有不兼容的情况  解决卸载Twisted 安装Twisted21或者22就行 可以换成 22.10.0版本  pip uninstall  Twisted   pip install Twisted22.10.0 报错2ImagesPipeline 接收不到数据 其他管道能接收 原因缺少环境  ImagesPipeline 依赖 pillow 解决pip install pillow 报错3:  TypeError: ExecutionEngine.crawl() got an unexpected keyword argument ‘spider‘ 原因运行分布式出现这个问题 是scrapy-redis比较老 用了新版本scrapy以后不兼容 解决安装老版本的scrapy  经测试 2.9.0和之前的适配 selenium常见报错 报错1ValueError:Tineout valve connect was object object at 0x00002354CDD7F80but it must be an int,float op None, 原因selenium与urllib3不兼容  解决卸载urllib3 安装老版本 比如1.26.2就可以解决  pip uninstall  urllib3 再  pip install urllib31.26.2 报错2ModuleNotFoundError: No module named urllib3.packages.six.moves 原因这个报错通常出现在环境为   selenium3.141urllib1.26python3.12的电脑上  因为python3.12太新了不能用selenium3.141 解决方法1selenium更新到4 urllib更新到最新 就可以解决了            方法2selenium降低到3.3.1就行 pip uninstall  selenium再  pip install selenium3.3.1 注意只是例举出了环境方面的报错 其他使用途中的报错大概率是代码编写问题  后续可能更新常见代码报错问题(存在最后报错相同 代码不同的情况 只能编写 报错原因和解决思路 )
http://www.w-s-a.com/news/815267/

相关文章:

  • 网站 营销型wordpress获取4条文章标题
  • 浦东区建设工程监督网站建立全国统一的突发事件信息系统
  • 做网站需要基础吗重庆市造价信息网
  • 我要建设公司网站大连培训网站建设
  • 网站建设校长信箱设计方案小程序报价开发
  • 电子网站建设ppt模板营销策划方案怎么写?
  • 什么网站收录排名最高济南能源建设网站
  • 深圳移动网站建设公司价格桂林做网站哪家公司好
  • 互联网网站名字网站合作建设合同
  • 舟山高端网站设计广州优化排名推广
  • 哪个网站做免费广告好上海人才网站
  • cn域名做网站竞价推广代理
  • 省建设干部培训中心网站网站地图1 500 怎么做
  • 制作一个网站需要哪些人网站建设经营服务合同
  • 山东省住房和城乡建设厅官方网站网易发布广州
  • 长沙设计网站效果设计师灵感网站
  • 做网站php都用什么框架把asp.net写的网站别人怎么访问
  • 网站建设捌金手指下拉六正规的代运营公司
  • 自己申请网站空间冀州建网站
  • 哈尔滨旅游团购网站建设江苏建设工程建设网
  • 在郑州做网站茶叶网站建设网页设计制作
  • 58做网站吗南京有关制作网站的公司
  • 申请建设门户网站的申请先做网站还是先申请域名
  • 门户网站怎么做seo玩具外贸好做吗
  • 网页设计模板的网站黄埔营销型网站建设
  • 企业为什么要建立网站江苏高校品牌专业建设工程网站
  • 网站建设公司需要交税么福建省城乡建设厅网站
  • dedecms网站首页网站正在建设中 源码下载
  • 论坛网站有哪些怎么wordpress主题
  • 网站搭建中企动力第一返利的网站怎么做