scrapy分页抓取网页( 基于Twisted异步网络库来处理网络通讯的整体架构大致Scrapy )

优采云 发布时间: 2021-10-24 07:10

  scrapy分页抓取网页(

基于Twisted异步网络库来处理网络通讯的整体架构大致Scrapy

)

  

  1. Scrapy 简介

  Scrapy是一个为爬取网站数据和提取结构化数据而编写的应用框架。它可用于包括数据挖掘、信息处理或存储历史数据在内的一系列程序。

  它最初是为页面抓取(更准确地说,网络抓取)而设计的,也可用于检索 API(例如,Amazon Associates Web Services)或一般网络抓取工具返回的数据。Scrapy 用途广泛,可用于数据挖掘、监控和自动化测试

  Scrapy 使用 Twisted 异步网络库来处理网络通信。整体结构大致如下

  

  刮痧

  Scrapy主要包括以下组件:

  Scrapy的运行过程大致如下:

  首先,引擎从调度器中获取一个链接(URL),供下一个爬虫引擎使用,将URL封装成请求(Request)传递给下载器,下载器下载资源并封装成响应包(Response ) 然后,如果爬虫解析Response解析出一个实体(Item),就会交给实体管道做进一步处理。如果是解析的链接(URL),则将该URL交给Scheduler等待爬取

  2. 安装 Scrapy

  使用以下命令:

  更多虚拟环境操作请查看我的博文

  3. Scrapy 教程

  在爬取之前,您需要创建一个新的 Scrapy 项目。输入要保存代码的目录,然后执行:

  该命令会在当前目录下新建一个目录tutorial,其结构如下:

  这些文件主要是:

  3.1. 定义项

  Items 是将加载捕获数据的容器。它的工作原理类似于 Python 中的字典,但它提供了更多保护,例如填充未定义的字段以防止拼写错误。

  通过创建一个scrapy.Item 类并定义一个scrapy.Field 类型的类属性来声明一个Item。

  我们控制通过建模所需项目获得的站点数据。例如,我们要获取站点的名称、url 和 网站 描述。我们定义了这三个属性的域。编辑教程目录下的 items.py 文件

  3.2. 写作蜘蛛

  Spider 是一个用户编写的类,用于从域(或域组)中抓取信息,定义用于下载的初步 URL 列表、如何跟踪链接以及如何解析这些网页的内容以提取项目。

  要创建 Spider,请继承 scrapy.Spider 基类,并确定三个主要的强制性属性:

  在 /tutorial/tutorial/spiders 目录下创建 dmoz_spider.py

  3.3. 爬行

  当前项目结构

  进入项目根目录,运行命令:

  操作结果:

  3.4. 提取项目

  3.4.1. 介绍选择器

  有很多方法可以从网页中提取数据。Scrapy 使用基于 XPath 或 CSS 的表达机制:Scrapy Selectors

  XPath 表达式示例及对应含义:

  更强大的功能请查看XPath教程

  为了方便XPaths的使用,Scrapy提供了Selector类,它有四个方法:

  3.4.2. 获取数据

  首先使用谷歌浏览器开发者工具,查看网站的源码,看到需要取出的数据表格(这个方法比较麻烦),比较简单的方法就是在你要的东西上右击有兴趣查看元素,可以直接查看网站源码

  查看网站的源码后,网站的信息在第二个

  编写自己的项目管道非常简单。每个item管道组件都是一个独立的Python类,必须同时实现以下方法:

  为 JSON 文件编写一个项目

  在settings.py中设置ITEM_PIPELINES来激活item管道,默认为[]

  3.6. 存储数据

  使用以下命令存储为json文件格式

  4. Scarpy 优化豆瓣爬虫爬取

  主要是对之前写过的豆瓣爬虫的重构:

  豆瓣具有抗爬虫机制。只成功一次后,被ban后会显示403。先说爬虫结构。

  完整的豆瓣爬虫代码链接

  4.1. 物品

  4.2. Spider 主程序

  4.3. 未来需要解决的问题

  豆瓣抓了一阵子,还没来得及兴奋就被禁了。

  禁止

  最后为大家准备了一些python学习教程,希望对大家有所帮助。

  

  

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线