2016-01-20 24 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