我们使用联盟链接。它们让我们能够维持运营,而您无需承担任何费用。

主要网页抓取技术:实用指南

探索各种网页抓取技术来改进您的抓取工具。

网页抓取技术

网页抓取 这并不容易,因为每个网站的结构都需要不同的方法来成功收集数据。了解使用哪种网页抓取技术可以帮助您避免发出不必要的请求,找到嵌套在 JavaScript 元素中的数据,并仅提取您希望抓取的特定元素。

继续阅读本指南并了解收集数据的各种技术以及它们如何改进您的网络抓取工具。

为你的项目选择合适的工具

具有编程意识的用户经常 自己构建一个爬虫 使用网页抓取框架,例如 Scrapy 和 Selenium 或者像 BeautifulSoup 这样的库。你会在各种编程语言中找到相关的库,但 Python 和 Node.js 通常拥有最好的生态系统。

或者,你可以使用 网页抓取 API。 这是一种不太复杂的方法,您可以向 API 发送请求并简单地存储输出。提供商喜欢 Oxylabs, Decodo (以前 Smartproxy), 要么 Bright Data 向用户提供商业API。

如果你要使用自己的刮刀进行更大规模的刮削,请考虑 越来越 代理服务器 隐藏您的 IP 地址。这样,您就可以避免 IP 屏蔽、验证码和 其他障碍 一路上。如果你要追踪大型电子商务商店或其他受到良好保护的网站,请坚持 住宅代理否则,来自云服务提供商的数据中心代理就足够了。 

流行的网页抓取技术

1. 手动网页抓取

数据收集的最基本技术是手动抓取。它包括复制内容并将其粘贴到数据集中。尽管这是收集信息的最直接方法,但它重复且耗时。

网站的目标是阻止大规模自动化脚本。因此,手动复制粘贴信息的一个优点是您不必处理目标网站施加的严格规则。否则,如果您需要大量数据,请考虑自动抓取。

2. HTML 解析

当你想从网站获取数据时,你需要向目标服务器发送 HTTP 请求,然后目标服务器会以 HTML 格式返回信息。但原始 HTML 很难让人阅读。这就是 HTML 解析发挥作用的地方。通常,解析意味着将数据转换为易于阅读的格式,如 JSON 或 CSV。解析 HTML 有多种方法,例如 正则表达式 解析。但是,由于 HTML 数据被组织成树结构,因此可以使用 CSS 或 XPath 选择器等路径语言轻松清理。 CSS 选择器。 这些选择器用于查找用于设计网站样式的节点,因此它们可以根据名称轻松选择一组 HTML 元素。您可以按类、属性、类型或 ID 定位元素。所有网页抓取库(如 Selenium、Puppeteer 或 Cheerio)都支持 CSS 选择器。如果您想从页面中抓取几个元素,这种方法最有效,因为您只能从 父母对孩子 元素。您可以使用以下方法查找包含所需数据的特定元素 检查元素.
css 选择器
通过检查元素找到 CSS 选择器
XPath 选择器, 或 XML 路径,是一种主要用于获取 DOM元素 从 XML 或基于 HTML 的文档中获取数据。与 CSS 选择器类似,XPath 会告诉您特定元素的位置,您无需手动遍历元素列表。XPath 选择器可以从父级遍历到子级,反之亦然,因此在处理结构较差的网站时,您可以拥有更大的灵活性。使用 XPath 方法,您可以同时抓取多个页面。但是,由于 XPath 与页面结构相关,因此抓取工具比 CSS 选择器更容易出现故障。而且 Web 开发人员往往会经常更改 HTML 标记。您可以通过以下方式找到 XPath 选择器 检查元素.
通过检查元素查找 XPath 选择器
通过检查元素查找 XPath 选择器

3. JSON 用于链接数据

网页由 HTML 标签组成,这些标签告诉浏览器如何显示标签中包含的信息。搜索引擎会解析 HTML 代码以查找逻辑部分。但是,它们的理解能力有限;如果标签元素不包含其他标签,Google、Bing、Yahoo 或其他搜索引擎将无法正确显示您的内容。

JavaScript 链接数据对象表示法 (JSON-LD) 标签注释嵌入在页面中的元素并为搜索引擎构建数据。网站使用它是为了使搜索引擎能够返回更准确的结果并改善它们在 SERP 中的呈现方式。您可以在 JSON-LD (应用程序/ld+json) 标签中的  页面的一部分  元素,并在脚本中使用它来提取数据。

在网络选项卡中设置 XHR 请求过滤器

4. XHR 请求

社交媒体等网站加载其内容 动态 – 它们依赖于嵌套在 JavaScript 中的元素。XMLHttpRequest 对象或 XHR 是一种 JavaScript API,允许在客户端和服务器之间获取动态数据,而无需加载整个页面。这提供了不间断的浏览体验。以前,XHR 仅与 XML 一起使用,但现在它支持任何类型的数据,包括标准格式 JSON。所有现代浏览器都具有内置的 XHR 对象。由于交互式网站通常通过后端 API 获取元素,因此数据以 JSON 格式提供。因此,当您使用 XHR 对 API 端点进行逆向工程时,您将获得结构化数据并使用更少的带宽。要检查网站是否可以通过 XHR 访问,请设置过滤器以在浏览器的网络选项卡中仅显示 XHR 请求。

改进脚本的其他有用方法

缓存 HTTP 请求

当需要抓取多个页面时,你需要构建一个抓取工具 抓取逻辑,这将遍历数千个 URL。但是,一旦您知道哪些页面已被访问或需要重新访问相同的页面以获取更多数据,您就需要缓存 HTTP 请求。此技术允许您将响应存储在数据库中,您可以在后续请求中重复使用。

这种方法可以提高加载性能,因为服务器不需要再次解析或路由每个请求。消除这些步骤可以减少服务器的负载,并且无需每次都重新下载相同的资源。

规范网址

一些网站会存储多个显示相同内容的 URL。例如,一个网站可能包含桌面版和移动版,因此 URL 标签略有不同,但您的抓取机器人会将数据识别为重复。规范 URL 是一个 HTML 代码片段,用于定义重复或近似重复的主要版本。

规范标签(rel=” canonical”)可帮助开发人员和爬虫指定不同 URL 下相同或相似内容的哪个版本是主要版本。这样,您可以避免抓取重复内容。Scrapy 等 Web 抓取框架默认处理相同的 URL。您可以在网页的  部分。

处理重定向

HTML 重定向或转发是一种将用户从一个 URL 重定向到另一个 URL 的方法。HTML 重定向会使抓取工具感到困惑,并导致速度变慢。重定向响应具有 状态码 以 3 开头的 URL 会导致抓取工具陷入无限重定向循环的情况。基于 Python 的抓取库(如 Requests)通常默认遵循重定向并返回最终页面。此外,还有一个选项可以完全禁用重定向,方法是编写 允许重定向=False 参数随请求一起发送。例如,您可以禁止注册、登录或使用某些页面。Scrapy 等 Web 抓取框架具有处理页面重定向的中间件。
Adam Dubois 的图片
亚当·杜波依斯
代理极客和开发人员。