c爬虫抓取网页数据(一下新建项目(Project)文件的作用和作用)

优采云 发布时间: 2022-01-04 02:18

  c爬虫抓取网页数据(一下新建项目(Project)文件的作用和作用)

  网络爬虫是在互联网上爬取数据的程序,用它来爬取特定网页的 HTML 数据。虽然我们使用一些库来开发爬虫程序,但是使用框架可以大大提高效率,缩短开发时间。 Scrapy是用Python编写的,轻量级,简单轻便,使用起来非常方便。使用Scrapy可以很方便的完成在线数据采集的工作,它已经为我们完成了很多工作,不需要花大力气去开发。

  首先,我们必须回答一个问题。

  问:网站安装到爬虫需要几步?

  答案很简单,四步:

  新建项目(Project):新建一个爬虫项目

  清除目标(Items):清除你要爬取的目标

  制作蜘蛛:制作蜘蛛并开始抓取网页

  存储内容(管道):设计管道来存储抓取的内容

  好了,基本流程确定了,接下来就是一步步完成了。

  1.新建项目(Project)

  在空目录下按住Shift键右键,选择“在此处打开命令窗口”,输入命令:

  代码如下:

  scrapy startproject 教程

  其中,tutorial 为项目名称。

  可以看到会创建一个tutorial文件夹,目录结构如下:

  代码如下:

  教程/

  scrapy.cfg

  教程/

  __init__.py

  items.py

  pipelines.py

  settings.py

  蜘蛛/

  __init__.py

  ...

  简单介绍一下各个文件的作用:

  scrapy.cfg:项目配置文件

  tutorial/:项目的Python模块,代码会从这里引用

  tutorial/items.py:项目的items文件

  tutorial/pipelines.py:项目的流水线文件

  tutorial/settings.py:项目设置文件

  tutorial/spiders/:蜘蛛存放的目录

  2.明确目标(Item)

  在 Scrapy 中,items 是用于加载爬取内容的容器,有点像 Python 中的 Dic,它是一个字典,但提供了一些额外的保护以减少错误。

  一般来说item可以用scrapy.item.Item类创建,scrapy.item.Field对象用来定义属性(可以理解为类似于ORM的映射关系)。

  接下来,我们开始构建项目模型。

  首先,我们想要的是:

  姓名(姓名)

  链接(网址)

  说明

  修改tutorial目录下的items.py文件,在原来的类之后添加我们自己的类。

  因为我们要抓取网站的内容,所以可以命名为DmozItem:

  代码如下:

  # 在此处定义已抓取项目的模型

  #

  # 查看文档:

  #

  从scrapy.item导入项目,字段

  class TutorialItem(Item):

  # 在此处定义您的项目的字段,例如:

  # name = Field()

  通过

  类 DmozItem(Item):

  title = Field()

  link = Field()

  desc = Field()

  乍一看可能有点难以理解,但定义这些项目会让您在使用其他组件时了解您的项目是什么。

  Item 可以简单理解为一个封装的类对象。

  3.制作蜘蛛(Spider)

  做一个爬虫,一般有两个步骤:先爬后取。

  也就是说,首先你需要获取整个网页的所有内容,然后取出对你有用的部分。

  3.1 次攀爬

  Spider 是用户编写的一个类,用于从域(或域组)中获取信息。

  它们定义了用于下载的 URL 列表、跟踪链接的方案以及解析 Web 内容以提取项目的方法。

  要创建蜘蛛,您必须使用scrapy.spider.BaseSpider 创建一个子类并确定三个必需属性:

  name:爬虫的标识名,必须是唯一的。您必须在不同的爬虫中定义不同的名称。

  start_urls:抓取的 URL 列表。爬虫从这里开始抓取数据,所以第一次下载数据会从这些url开始。其他子 URL 将从这些起始 URL 继承。

  parse():解析方法,调用时将每个URL返回的Response对象作为唯一参数传入,负责解析匹配捕获的数据(解析为item),跟踪更多的URL。

<p>这里可以参考宽度爬虫教程中提到的思路帮助理解,教程传输:【Java】知乎下巴第五集:使用HttpClient工具包和宽度爬虫。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线