【问题标题】:Web-scraping only a specific domain仅对特定域进行 Web 抓取
【发布时间】:2013-09-08 20:30:22
【问题描述】:

我正在尝试制作一个网络浏览器,例如,从 Reuters.com 抓取新闻文章。我想得到标题和日期。我知道我最终只需要从每个地址中提取源代码,然后使用 JSoup 之类的东西解析 HTML。

我的问题是:我如何确保我对 Reuters.com 上的每篇新闻文章都执行此操作?我怎么知道我已经访问了所有 reuters.com 地址?是否有任何 API 可以帮助我解决这个问题?

【问题讨论】:

  • 简短的回答是你一直在抓取,直到你发现的新 URL 的数量(与旧的数量相比)趋于零。除非他们在其 URL 中使用简单的索引文章代码,否则您无法确定 reuters.com 托管了多少文章。不幸的是,许多报纸网站使用复杂的 URI 方案,而且很少简洁或优雅。

标签: html web screen-scraping jsoup scraper


【解决方案1】:

您所指的是所谓的网页抓取加网页抓取。您需要做的是访问符合某些条件的每个链接(抓取),然后抓取内容(抓取)。我从未使用过它们,但这里有两个适用于这项工作的 java 框架

  1. http://wiki.apache.org/nutch/NutchTutorial
  2. https://code.google.com/p/crawler4j/

当然,您必须在收集完 url 后使用 jsoup(或类似的)来解析内容

更新 查看Sending cookies in request with crawler4j? 以获得更好的爬虫列表。 Nutch 非常好,但如果您只想抓取一个站点,则非常复杂。 crawler4j 非常简单,但我不知道它是否支持 cookie(如果这对你很重要,那就是一个交易破坏者)。

【讨论】:

  • 太好了,谢谢。你有任何使用这些框架的经验吗(我假设我只会使用其中一个,对吗?)?
  • 正如我在帖子中提到的,不幸的是我没有。我将在一个我有(scrapper)的项目中使用一个来添加爬行,但这将在一段时间后,所以我没有检查它们。是的,您将使用其中之一。我相信第二种,是最简单的。如果这回答了您的问题,请不要忘记接受答案。
【解决方案2】:

试试这个网站http://scrape4me.com/

我能够为标题生成此网址:http://scrape4me.com/api?url=http%3A%2F%2Fwww.reuters.com%2F&head=head&elm=&item[][DIV.topStory]=0&ch=ch

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-18
    • 1970-01-01
    • 2023-02-03
    • 2020-05-24
    相关资源
    最近更新 更多