python多线程爬虫多个url实例解析
时间: 2023-11-14 14:05:14 浏览: 116
可以使用Python的多线程模块`threading`来实现多线程爬虫。以下是一个示例代码,可以同时爬取多个URL,并将每个URL的实例解析结果保存到一个列表中:
```python
import requests
import threading
from bs4 import BeautifulSoup
urls = ['http://example.com/page1', 'http://example.com/page2', 'http://example.com/page3']
def get_data(url, results):
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
# 解析实例,将结果存入结果列表
results.append(soup.find_all('div', {'class': 'example'}))
def main():
results = []
threads = []
# 创建线程
for url in urls:
t = threading.Thread(target=get_data, args=(url, results))
threads.append(t)
t.start()
# 等待所有线程完成
for t in threads:
t.join()
# 输出结果
print(results)
if __name__ == '__main__':
main()
```
在该示例中,我们首先定义了一个URL列表,然后定义了一个`get_data`函数,该函数以URL和结果列表作为参数。在函数中,我们使用`requests`库获取URL的HTML内容,并使用`BeautifulSoup`库解析实例。最后,将解析结果存入结果列表中。
在主函数中,我们创建多个线程,并将它们添加到线程列表中。然后,我们启动所有线程,并使用`join`方法等待它们完成。最后,我们输出结果列表。
注意,多线程爬虫可能会被目标网站视为恶意行为,因此在使用之前请确保已经了解目标网站的使用政策。
阅读全文