返回介绍

11.1 抓取什么和如何抓取

发布于 2024-01-27 21:43:11 字数 2610 浏览 0 评论 0 收藏 0

网页抓取为数据收集带来了无限可能。在互联网上有成千上万的站点,拥有可能会在项目中使用的各种各样的内容和数据。为了构建一个认真负责的网页抓取器,要熟悉每一个站点,以及可抓取的内容。

版权、商标和抓取

当在网络上抓取时,对于你找到的所有媒体(来自报纸、杂志、书籍或博客),你应该考虑收集的数据和它们的使用方式。你是否会下载其他人的照片并且将它当作自己的照片发布?不,这是不道德的,而且在一些情况下是非法的。

学习像版权(http://www.dmlp.org/legal-guide/copyright)和商标(http://www.dmlp.org/legal-guide/trademark)这样的媒体法会影响你的决定,尤其是要抓取的数据属于某人的知识产权(http://www.dmlp.org/legal-guide/intellectual-property)时。

研究域名并查阅法律允许内容和禁止内容的有关提示,还要熟读robots 文件(http://www.robotstxt.org/robotstxt.html)来更好地理解网站所有者的意愿。如果你不确定数据能否被抓取,可联系律师或网站本身。取决于你的住址和使用数据的目的,如果你对本国法律和判例存有疑问,可能需要联系一家数字媒体法定组织。

 对于大多数的网络抓取,抓取文本会比抓取链接、图片或图表更合理。如果你还需要保存链接、图片或文件,这其中的大多数都可以使用简单的 bash 命令(例如 wget 或 curl,http://www.thegeekstuff.com/2012/07/wget-curl/)下载,而这不需要 Python。你可以直接保存一个 URL 列表到文件中并且写一个脚本来下载文件。

我们从简单的文本抓取开始。大多数网页的构建都基于适当的 HTML 标准,结构相似。大多数的网站有一个头部,大多数的 JavaScript 和页面样式文件在这里定义,同时还有其他额外信息,比如类似 Facebook、Pinterest 这样的服务的元标签,以及搜索引擎用法的描述信息。

头部之后是主体。主体是站点的主要部分。大多数的站点使用容器(类似 XML 节点的标记节点)来组织站点,并且允许站点内容管理系统加载内容到页面中。图 11-1 展示了一个典型的网页是如何组织的。

图 11-1:网页解剖

对于很多站点来说,页面的顶部部分包含到站点主要部分或者相关主题的导航和链接。链接或者广告通常出现在页面两边向下延展的位置。页面的中间部分通常包含你想要抓取的内容。

 熟悉大多数网页的结构(元素的视觉位置和它们在标记语言中的位置)会帮助你从互联网上抓取数据。如果可以聚焦到数据源,你就可以快速地构建抓取器。

一旦知道了在页面上寻找什么,并且通过学习页面源代码的结构分析了页面的组成,你就可以确定如何收集页面中的重要的部分。许多网页在第一次页面加载的时候提供内容,或者提供一个已加载好内容的缓存页面。对于这些页面,可以使用简单的 XML 或 HTML 解析器(我们会在本章学习它们),并且从第一个 HTTP 响应(在你请求一个 URL 时浏览器加载的内容)中直接读取内容。这与读取文档类似,只是需要一个初始的页面请求。

如果你需要首先同页面交互来获取数据(也就是输入数据和点击按钮),并且它不仅仅是一个简单的 URL 的改变,你需要使用一个基于浏览器的抓取器,在浏览器中打开页面同它交互。

如果需要遍历整个网站来收集数据,你会想要一个爬虫:一个机器人,它爬取网页,并且根据规则识别好的内容或跟踪更多页面。我们在爬取中使用的库非常地快速、灵活,让编写这些类型的脚本变得十分简单。

在开始编写抓取器代码之前,我们会查看一些网站,习惯于分析要使用那个类型的抓取器(页面读取器、浏览器读取器或爬虫),以及抓取数据会多难或多简单。有时,确定数据值得付出多少努力是很重要的。我们会介绍一些工具来确定为抓取数据需要付出多少努力,以及值得为这项工作投入多少时间。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文