Scrapy爬虫获取公开数据

Scrapy是python的一个爬虫框架

初窥Scrapy

Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。

其最初是为了 页面抓取 (更确切来说, 网络抓取 )所设计的, 也可以应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫。

本文档将通过介绍Scrapy背后的概念使您对其工作原理有所了解, 并确定Scrapy是否是您所需要的。

当您准备好开始您的项目后,您可以参考 入门教程 。

选择一个网站

当您需要从某个网站中获取信息,但该网站未提供API或能通过程序获取信息的机制时, Scrapy可以助你一臂之力。

以 Mininova 网站为例,我们想要获取今日添加的所有种子的URL、 名字、描述以及文件大小信息。

今日添加的种子列表可以通过这个页面找到:

定义您想抓取的数据

第一步是定义我们需要爬取的数据。在Scrapy中, 这是通过 Scrapy Items 来完成的。(在本例子中为种子文件)

我们定义的Item:

importscrapyclassTorrentItem(scrapy.Item):url=scrapy.Field()name=scrapy.Field()description=scrapy.Field()size=scrapy.Field()编写提取数据的Spider

通过观察页面的内容可以发现,所有种子的URL都类似 。 其中, 是一个整数。 根据此规律,我们可以定义需要进行跟进的链接的正则表达式: 。

我们使用 XPath 来从页面的HTML源码中选择需要提取的数据。 以其中一个种子文件的页面为例:

http://www.mininova.org/tor/2676093

观察HTML页面源码并创建我们需要的数据(种子名字,描述和大小)的XPath表达式。

通过观察,我们可以发现文件名是包含在 标签中的:

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180412G1M72C00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券