在实习期间,我必须解析域列表以获得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)
下面是一个使用多处理的示例