快速发送5000个Python多线程请求

时间:2018-12-26 00:19:14

标签: python-3.x multithreading subprocess

我有5000个网址来进行请求,并检查每个网址的来源中是否有特定的单词

我想尽快完成,我是python新手

这是我的代码

import requests
def checkurl(url):
    r = requests.get(url)
    if 'House' in r.text:
        return True
    else:
        return False

如果我进行循环,这将花费很多时间,所以我需要一个解决方案 用于多线程或多处理

非常感谢您的帮助:)

1 个答案:

答案 0 :(得分:1)

检查scrapy(在https://scrapy.org/),有适合您目的的工具。

以我的经验,scrapy比下载“字符串”要好,因为requests.get并没有(例如)实际上不呈现页面。

如果您想以任何方式处理请求(以徒手书写,因此可能包含拼写错误或其他错误):

import requests
from multiprocessing import ThreadPool    

def startUrlCheck(nr):
   pool = ThreadPool(threads)
   results = pool.map(checkurl, YourUrls)
   pool.close()
   pool.join()
   # Do something smart with results
   return results

def checkurl(url):
    r = requests.get(url)
    if 'House' in r.text:
        return True
    else:
        return False