2016-01-20 68 views
0

我使用的nutch和scrapy没有先验信息的网页。他们需要种子网址来抓取。这意味着,应该已经知道将包含正在搜索的文本的网站/网页。抓取/废料的网站/含有特定的文字,具有约任何此类网站/网页

我的情况是不同的,我没有约含有我正在寻找文本的网站/网页的先验信息。因此,我无法使用种子URL通过nutch和scrapy等工具进行爬网。

有没有办法抓取一个给定文本的网站/网页,不知道任何网站/网页,将可能包含的文字?

回答

0

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

+0

我一直在使用上面提到的这种方法,发布此查询时。除了依赖Google之外,还有其他方式可以做到吗?感谢您的回复,谢谢! – Marco99

+0

除了创建自己的Google?我想你可以做这样的事情http://stackoverflow.com/a/4940212/5247482,并选择一个随机的网站作为种子,让它开始。 – 2016-01-26 14:14:28

+0

@乔恩:查询和链接中的解决方案提供与特定网站上的重点抓取以及可用的链接有关。我最近明白,抓取至少需要一个种子URL。换句话说,没有种子URL的(直接的)抓取可能是不可能的。感谢您的意见。 – Marco99

0

那么你可以使用请求模块来获取数据。

在这里,在下面的例子我正在从具有那些“比萨”一词的所有网站的数据。

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() 
+0

我同意你从抓取的网页中提取文本数据的解决方案。但是这种方法仍然使用谷歌搜索,然后抓取生成的网页。我正在寻找一种不使用任何这些搜索引擎的方式。有出路吗?感谢您的回应。 – Marco99

1

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

+0

@ Julien Nioche:这是一个很好的信息。你最有可能是对的。抓取需要一个起点。所有免费的抓取工具都需要一个种子来开始。 – Marco99