【问题标题】:Web Scraping - What's a robust and extensible approach? [closed]Web Scraping - 什么是强大且可扩展的方法? [关闭]
【发布时间】:2014-04-04 03:10:32
【问题描述】:

我在使用 Beautiful Soup 和 Nokogiri 等工具进行网络抓取方面经验有限。

到目前为止,我在查找信息时的方法是首先检查 HTML 元素和 CSS 标记,然后应用选择器。虽然这可行,但网站之间的细微差异/变化会使代码无用。此外,在某些情况下,网站根本不将选择器标签添加到其 HTML 元素中,因此我曾经不得不求助于选择元素的样式属性的 hacky 方法。

如何设计一种可以跨多个站点工作的抓取工具?我知道解决方案将取决于上下文,但是这样做是否有一般的良好做法?在这个问题之前的一次采访中,我实际上被问到了,我不知道。

我尝试过用谷歌搜索,但我发现的大部分内容都没有超越基础知识,我不知道去哪里找。任何帮助将不胜感激。

【问题讨论】:

  • 这取决于你要抓取什么内容。
  • “网站根本不将选择器标签添加到其 HTML 元素”是什么意思?

标签: javascript python html ruby web-scraping


【解决方案1】:

从您的问题中不清楚您到底想要完成什么。如果您想要页面的内容(例如在文章中) - 您应该尝试goose,这应该可以帮助您。也可以尝试搜索meta tags等常规网页方式。

无论哪种方式,您都应该记住这是World Wild Web,而HTML 是一种非常宽容的语言,它可以让人们设计非常的页面机器难以阅读。即使是大型网站有时也会有其专有的惯例中断,这会强制您的代码中出现异常以便阅读它们。网站逻辑也可能与传统逻辑或其他主要网站冲突

这意味着您的代码可能包含大量用例和异常。

我对您的建议是保留您要抓取的网站页面样本,并进行单元测试以迭代它们并验证抓取结果。这样,每次您发现一个新的怪癖时,您都可以将其添加到您的收藏中,并确保如果您所做的更改破坏了其他网站的抓取,您会知道它。

【讨论】:

    猜你喜欢
    • 2012-03-14
    • 1970-01-01
    • 2010-09-29
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    • 2011-10-17
    • 1970-01-01
    相关资源
    最近更新 更多