在Python中实现基于代理IP的多线程网络爬虫的方法
以下是一个基于代理IP的多线程网络爬虫的示例代码:
import requests import threading import queue # 设置代理IP proxies = { "http": "http://127.0.0.1:8888", "https": "https://127.0.0.1:8888" } # 设置要爬取的URL列表 urls = [ "https://www.pidancode.com", "https://www.pidancode.com/page1", "https://www.pidancode.com/page2", "https://www.pidancode.com/page3", "https://www.pidancode.com/page4", "https://www.pidancode.com/page5" ] # 设置线程数和队列 thread_count = 4 work_queue = queue.Queue() # 将所有URL放入队列 for url in urls: work_queue.put(url) # 定义爬取函数 def crawl(): while True: url = work_queue.get() try: # 使用代理IP发起请求 response = requests.get(url, proxies=proxies) print(response.text) except Exception as e: print("Error: ", e) finally: work_queue.task_done() # 创建线程池并启动线程 for i in range(thread_count): t = threading.Thread(target=crawl) t.daemon = True t.start() # 等待队列中的所有任务完成 work_queue.join() print("All tasks are done.")
在这个示例代码中,我们首先定义了要爬取的URL列表和使用的代理IP。然后,我们设置了一个工作队列,将所有要爬取的URL放入队列中。接着,我们定义了一个爬取函数,每个线程从队列中获取URL并使用代理IP发起请求,然后将响应内容输出。最后,我们创建了线程池,并等待队列中的所有任务完成。
这个示例代码中使用的代理IP是本地代理,如果需要使用真实的代理IP,请自行替换。另外,这个示例代码中并没有对获取到的响应进行任何处理,实际应用中可能需要根据需要进行处理和解析。
相关文章