我正在一家公司處理網絡釣魚和假Facebook賬戶。我想表達我對「使命」的奉獻精神。我們無法被動地監控Facebook頁面,當它們被刪除時。我在想一個網絡爬蟲,但我很好奇如何設計一個不斷檢查特定鏈接以查看Facebook頁面是否仍然活動的網頁。我希望這是有道理的?我在想網絡爬蟲,但如何開始?
回答
是的!您可以使用抓取。但是,如果您希望儘可能快,抓取可能不是最好的方式。如果你有興趣,這是我如何使用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
您可以發送一個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不需要等待一個請求被完成和處理,它可以發送 另一個請求或者在做其他事情的同時。這也意味着 即使某些請求失敗或處理它時發生了一個 錯誤,其他請求也可以繼續。
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以及其他元數據。
一個很好的起點,以瞭解架構是:
- Web Crawling
- Crawling the Web
- Mercator: A scalable, extensible Web crawler
- UbiCrawler: a scalable fully distributed web crawler
- IRLbot: Scaling to 6 billion pages and beyond
- (單服務器履帶)和MultiCrawler: a pipelined architecture
編程語言:具有良好的網絡庫的任何高級語言,你是舒服的罰款。我個人更喜歡Python/Java。由於您的爬蟲程序項目可能會在代碼大小方面增長,如果您使用設計受限的編程語言進行開發,則很難進行管理。雖然可以使用unix命令和shell腳本構建爬網程序,但出於顯而易見的原因,您可能不希望這樣做。
框架/庫:許多框架已經在其他答案中提出。我在這裏總結:
- 的Apache的Nutch和Heritrix的(JAVA):成熟的,規模大,配置
Scrapy(蟒蛇):技術上刮刀,但可用於建立一個履帶。
您還可以訪問https://github.com/scrapinghub/distributed-frontera - Scrapy的URL前沿和數據存儲,允許您運行大規模爬網。
- 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
建議可擴展的分佈式爬行:
- 最好是去一個異步模型,給出了問題的本質。
- 爲數據存儲選擇一個分佈式數據庫ex。 HBase的。
- 像redis這樣的分佈式數據結構也是值得考慮的URL邊界和重複檢測器。
欲瞭解更多信息,請訪問:https://www.quora.com/How-can-I-build-a-web-crawler-from-scratch
參考:
Olston,C.,& Najork,M.(2010)。網絡爬行。信息檢索的基礎和趨勢,4(3),175-246。
Pant,G.,Srinivasan,P.,& Menczer,F.(2004)。爬網。在Web Dynamics(第153-177頁)中。施普林格柏林海德堡。
Heydon,A.,& Najork,M.(1999)。墨卡託:一個可擴展的,可擴展的網絡爬蟲。萬維網,2(4),219-229。
Boldi,P.,Codenotti,B.,Santini,M.,& Vigna,S.(2004)。 Ubicrawler:一種可擴展的完全分佈式網絡爬蟲。軟件:實踐和經驗,34(8),711-726。
Lee,H.T.,Leonard,D.,Wang,X.,& Loguinov,D.(2009)。 IRLbot:縮小至60億頁及以上。 ACM Transactions on the Web(TWEB),3(3),8.
Harth,A.,Umbrich,J.,& Decker,S.(2006)。 Multicrawler:用於爬取和索引語義Web數據的流水線體系結構。在語義Web-ISWC 2006中(第258-271頁)。施普林格柏林海德堡。
- 1. 網絡爬蟲
- 2. C++網絡爬蟲
- 3. PHP網絡爬蟲
- 4. Python網絡爬蟲
- 5. java網絡爬蟲
- 6. 網絡爬蟲類
- 7. 自動網絡爬蟲
- 8. 網絡爬蟲的功能
- 9. 網絡爬蟲,反饋?
- 10. 網絡爬蟲的Java
- 11. 遞歸網絡爬蟲perl
- 12. 簡單的網絡爬蟲
- 13. Python中的網絡爬蟲
- 14. 需要網絡爬蟲
- 15. 網絡爬蟲文本雲
- 16. 硒與python網絡爬蟲
- 17. 網絡爬蟲從Android Market
- 18. 網絡爬蟲應用
- 19. 網絡爬蟲不打印
- 20. 網絡爬蟲提取
- 21. 網絡爬蟲如何處理javascript
- 22. 如何配置網絡爬蟲?
- 23. 如何使網絡爬蟲更有效?
- 24. 如何識別網絡爬蟲?
- 25. 如何忽略網絡爬蟲?
- 26. 什麼讓我的網絡爬蟲慢?
- 27. 如何最好地開發網絡爬蟲
- 28. 在Scala中的網絡爬蟲算法
- 29. 網絡爬蟲多處理在Python 3
- 30. 在android上的簡單網絡爬蟲?