簡體   English   中英

網絡搜尋(Python)期間的速度問題

[英]Problems with Speed during web-crawling (Python)

我希望這個程序可以大大提高速度。 它在10分鍾內讀取+-12000頁。 我想知道是否有什么對速度有很大幫助? 我希望你們知道一些技巧。 我應該閱讀+-數百萬頁...,這將花費太長時間:(這是我的代碼:

from eventlet.green import urllib2                          
import httplib                                              
import time                                                 
import eventlet   

# Create the URLS in groups of 400 (+- max for eventlet)                                    
def web_CreateURLS():
    print str(str(time.asctime( time.localtime(time.time()) )).split(" ")[3])
    for var_indexURLS in xrange(0, 2000000, 400):
        var_URLS = []
        for var_indexCRAWL in xrange(var_indexURLS, var_indexURLS+400):
            var_URLS.append("http://www.nu.nl")
        web_ScanURLS(var_URLS)    

# Return the HTML Source per URL
def web_ReturnHTML(url):
    try:
        return [urllib2.urlopen(url[0]).read(), url[1]]
    except urllib2.URLError:
        time.sleep(10)
        print "UrlError"
        web_ReturnHTML(url)

# Analyse the HTML Source
def web_ScanURLS(var_URLS):
    pool = eventlet.GreenPool()
    try:  
        for var_HTML in pool.imap(web_ReturnHTML, var_URLS):
               # do something etc..
    except TypeError: pass

web_CreateURLS()

我喜歡使用greenlets ..,但是我經常受益於使用分布在許多系統上的多個進程。或者僅使用一個系統就可以讓OS負責運行多個進程的所有檢查和平衡。

http://zeromq.org/上查看ZeroMQ,以獲取有關如何使TON的偵聽器完成調度程序所說的任何事情的良好示例。 另外,請簽出execnet,以獲取一種快速開始並行執行遠程或本地任務的方法。

我也經常使用http://spread.org/,並且有很多系統在監聽公用的傳播守護程序。.這是非常有用的消息總線,可以將結果匯總到一個線程並從一個線程分派。

然后當然總會有redis pub / sub或sync。 :)

“分擔負擔”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM