【问题标题】:Crawl/scrape websites/webpages containing a specific text, with no prior information about any such websites/webpages抓取/抓取包含特定文本的网站/网页,而没有关于任何此类网站/网页的事先信息
【发布时间】:2016-04-26 10:57:24
【问题描述】:

我使用了 nutch 和 scrapy。他们需要种子 URL 才能抓取。这意味着,人们应该已经知道将包含正在搜索的文本的网站/网页。

我的情况不同,我没有关于包含我正在搜索的文本的网站/网页的先验信息。所以我将无法使用种子 URL 被 nutch 和 scrapy 等工具抓取。

有没有办法在不知道任何可能包含该文本的网站/网页的情况下抓取给定文本的网站/网页?

【问题讨论】:

    标签: python web-scraping scrapy screen-scraping nutch


    【解决方案1】:

    你可以解析the commoncrawl dataset。它包含数十亿个网页。他们的网站包含有关如何使用 MapReduce 进行操作的示例。 除此之外,任何网络爬虫都需要有一些起点。

    【讨论】:

    • @ Julien Nioche:这是一条很好的信息。你很可能是对的。爬行需要一个起点。所有免费提供的爬虫都需要一个种子才能开始。
    【解决方案2】:

    你可以使用 requests 模块来获取数据。

    在下面的示例中,我从所有包含“pizza”字样的网站获取数据。

    import requests
    url = 'http://www.google.com/search'
    my_headers = { 'User-agent' : 'Mozilla/11.0' }
    payload = { 'q' : 'pizza', 'start' : '0' }
    r = requests.get( url, params = payload, headers = my_headers )
    

    您可以使用 BeautifulSoup 库从检索到的数据(HTML 数据)中提取任何类型的信息

    from bs4 import BeautifulSoup
    soup = BeautifulSoup( r.text, 'html.parser' )
    

    现在如果你想要文本数据,你可以使用这个函数

    soup.getText()
    

    【讨论】:

    • 我同意您关于从抓取的网页中获取文本数据的解决方案。但是这种方法仍然使用google搜索然后抓取生成的网页。我正在寻找一种不使用任何这些搜索引擎的方法。有出路吗?感谢您的回复。
    【解决方案3】:

    您可以使用 Google 搜索 API (https://developers.google.com/custom-search/json-api/v1/overview?csw=1) 每天进行 100 次免费查询。搜索结果将采用 JSON 格式,您可以使用该格式将链接提供给您的爬虫。

    【讨论】:

    • 在发布此查询时,我一直在使用您上面提到的这种方法。除了依靠谷歌之外,我们还有其他方法可以做到吗?感谢您的回复,谢谢!!
    • 除了创建自己的 Google 之外?我想你可以做这样的事情stackoverflow.com/a/4940212/5247482,然后随机选择一个网站作为种子来启动它..
    • @Jon :提供的链接中的查询和解决方案与特定网站上的重点抓取以及那里可用的链接有关。我最近明白,爬虫至少需要一个种子 URL。换句话说,没有种子 URL 的(简单的)抓取可能是不可能的。感谢您的 cmets。
    • 如果有办法在没有种子 URL 的情况下进行爬网,我不知道。但这并不一定是坏事——只需选择一个好的起点。如果您正在旅行,您需要从某处开始......但您仍然可以在任何地方结束。如果不想选择种子 URL,那么您可以尝试随机生成 URL 名称...
    • @ Jon :好吧,我可以从某个地方开始,但我想抓取最合适的网页,这意味着在抓取的 100 个页面中,80% 到 85% 需要相关。否则,绝大多数抓取的页面将毫无用处。同样,这就是我回到谷歌的原因。回到原点。 :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多