Python脚本从URL列表中获取HTML源代码,有没有办法更快?也许使用了Threadpool



在实习期间,我必须解析域列表以获得HTML源代码,然后确定HTML中是否有目标字符串(var target(。

我正在写一个Python脚本。到目前为止,我有:

domains = open("domains.txt").readlines()
urls = ['http://' + domain[:-1] for domain in domains]
matches = 0
timeouts = 0
for url in urls:
    try:
        usock = urllib2.urlopen(url, timeout = 1)
        data = usock.read()
        usock.close()
        if target in data:
            matches += 1
    except:
        timeouts += 1

代码的工作原理是在应该有匹配的地方找到匹配,但它运行得非常慢,因为我必须在数千个域的巨大集群上运行它,而实时接收器正在等待URL结果。我在其他线程中读到,专门使用ThreadPool的多线程可以节省时间,但我不知道如何在这里实现这一点。有人能帮我把速度快一点吗?

from multiprocessing import Pool
import requests
def f(url):
    response = requests.get(url)
    return response.content
if __name__ == '__main__':
    p = Pool(3)
    urls = ["http://www.google.com", "http://www.stackoverflow.com", "http://www.youtube.com"]
    sources = p.map(f, urls)

下面是一个使用多处理的示例

相关内容

  • 没有找到相关文章

最新更新