Python脚本从url列表中获取HTML源代码,有没有一种方法可以让它更快?也许使用线程池?

2024-04-29 14:41:09 发布

您现在位置:Python中文网/ 问答频道 /正文

在实习期间,我必须解析一系列域以获取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结果。我在其他线程中读到,使用多线程特别是线程池可以节省时间,但我不确定如何在这里实现它。有人能帮我快点吗?在


Tags: 代码inurltargetfordata源代码domain
1条回答
网友
1楼 · 发布于 2024-04-29 14:41:09
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)

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

相关问题 更多 >