2016-08-19 16 views
-1

我正在一家公司處理網絡釣魚和假Facebook賬戶。我想表達我對「使命」的奉獻精神。我們無法被動地監控Facebook頁面,當它們被刪除時。我在想一個網絡爬蟲,但我很好奇如何設計一個不斷檢查特定鏈接以查看Facebook頁面是否仍然活動的網頁。我希望這是有道理的?我在想網絡爬蟲,但如何開始?

回答

1

是的!您可以使用抓取。但是,如果您希望儘可能快,抓取可能不是最好的方式。如果你有興趣,這是我如何使用HTTPConnection來做到這一點。此外,不幸的是,鏈接必須是完全破碎。

如果您需要更多的信息,那麼你將最有可能使用一個API或Web爬蟲來檢查鏈接斷開(因此這意味着它鏈接到無處),

from http.client import HTTPConnection # Importing HTTPConnection from http.client. 

conn = HTTPConnection('www.google.com') # Connecting to 'google.com' 

conn.request('HEAD', '/index.html') # Request data. 
res = conn.getresponse() # Now we get the data sent back. 

print(res.status, res.reason) # Finally print it. 

如果返回'302找到'那麼它應該是一個活躍的網頁, 我希望這有助於!請告訴我,如果這不是你想要的。 :)

感謝,

〜Coolq

0

您可以發送一個HTTP請求通知帳戶被激活或不被它的響應狀態,Python有一些標準庫,你可以看看Internet Protocols and Support 。 就個人而言,我會建議使用請求:

import requests 
response = requests.get("http://facebook.com/account") 
if response.status_code == 302: # or 404 
    # the page is missing 

如果你真的關心速度和性能,你應該在Python中使用多或異步I/O(如GEVENT)。

如果你是注重抓取,你可以看看Scrapy

在這裏,你看到的關於Scrapy的主要優勢之一:請求是 調度和異步處理。這意味着Scrapy不需要等待一個請求被完成和處理,它可以發送 另一個請求或者在做其他事情的同時。這也意味着 即使某些請求失敗或處理它時發生了一個 錯誤,其他請求也可以繼續。

0

https://www.quora.com/How-can-I-build-a-web-crawler-from-scratch/answer/Raghavendran-Balu 我讀過關於爬行者的最好的文章之一。

一個網絡爬蟲可能聽起來像一個簡單的獲取 - 解析附加系統,但要小心!你可能過分看待複雜性。我認爲這是必要的,因爲構建一個Web爬行器,爬行器的體系結構比選擇語言/框架更重要。

架構:

最低限度履帶至少需要以下組件:

  • HTTP提取程序:從服務器檢索網頁。

  • 提取器:最小支持從頁面中提取URL,如錨鏈接。

  • Duplicate Eliminator:確保相同的內容不會無意中被提取兩次。將其視爲基於集合的數據結構。

  • URL Frontier:優先獲取必須提取和解析的URL。將其視爲優先隊列

  • 數據存儲區:存儲檢索頁面和URL以及其他元數據。

一個很好的起點,以瞭解架構是:

  1. Web Crawling
  2. Crawling the Web
  3. Mercator: A scalable, extensible Web crawler
  4. UbiCrawler: a scalable fully distributed web crawler
  5. IRLbot: Scaling to 6 billion pages and beyond
  6. (單服務器履帶)和MultiCrawler: a pipelined architecture

編程語言:具有良好的網絡庫的任何高級語言,你是舒服的罰款。我個人更喜歡Python/Java。由於您的爬蟲程序項目可能會在代碼大小方面增長,如果您使用設計受限的編程語言進行開發,則很難進行管理。雖然可以使用unix命令和shell腳本構建爬網程序,但出於顯而易見的原因,您可能不希望這樣做。

框架/庫:許多框架已經在其他答案中提出。我在這裏總結:

  1. 的Apache的Nutch和Heritrix的(JAVA):成熟的,規模大,配置
  2. Scrapy(蟒蛇):技術上刮刀,但可用於建立一個履帶。

    您還可以訪問https://github.com/scrapinghub/distributed-frontera - Scrapy的URL前沿和數據存儲,允許您運行大規模爬網。

  3. node.io(Javascript):Scraper。新生,但值得考慮,如果你準備好與JavaScript生活。

對於Python:參照Python的Introduction to web-crawling in Python

代碼:https://www.quora.com/How-can-I-build-a-web-crawler-from-scratch/answer/Rishi-Giri-1

建議可擴展的分佈式爬行

  1. 最好是去一個異步模型,給出了問題的本質。
  2. 爲數據存儲選擇一個分佈式數據庫ex。 HBase的。
  3. 像redis這樣的分佈式數據結構也是值得考慮的URL邊界和重複檢測器。

欲瞭解更多信息,請訪問:https://www.quora.com/How-can-I-build-a-web-crawler-from-scratch

參考

  1. Olston,C.,& Najork,M.(2010)。網絡爬行。信息檢索的基礎和趨勢,4(3),175-246。

  2. Pant,G.,Srinivasan,P.,& Menczer,F.(2004)。爬網。在Web Dynamics(第153-177頁)中。施普林格柏林海德堡。

  3. Heydon,A.,& Najork,M.(1999)。墨卡託:一個可擴展的,可擴展的網絡爬蟲。萬維網,2(4),219-229。

  4. Boldi,P.,Codenotti,B.,Santini,M.,& Vigna,S.(2004)。 Ubicrawler:一種可擴展的完全分佈式網絡爬蟲。軟件:實踐和經驗,34(8),711-726。

  5. Lee,H.T.,Leonard,D.,Wang,X.,& Loguinov,D.(2009)。 IRLbot:縮小至60億頁及以上。 ACM Transactions on the Web(TWEB),3(3),8.

  6. Harth,A.,Umbrich,J.,& Decker,S.(2006)。 Multicrawler:用於爬取和索引語義Web數據的流水線體系結構。在語義Web-ISWC 2006中(第258-271頁)。施普林格柏林海德堡。