帮我写一个爬取邮箱地址的代码 要求多线程 可以同时爬取多个网站内的邮箱地址 可以放入多个ip代理运行
时间: 2024-04-01 19:34:53 浏览: 71
邮件爬取_爬邮件代码_
5星 · 资源好评率100%
好的,以下是一个爬取邮箱地址的 Python 代码,支持多线程和使用代理 IP:
```python
import requests
from bs4 import BeautifulSoup
import re
import threading
import queue
# 设置请求头,模拟浏览器请求
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
# 设置代理 IP
proxies = {
'http': 'http://10.10.1.10:3128',
'https': 'https://10.10.1.11:1080'
}
# 设置线程数和任务队列
thread_num = 10
task_queue = queue.Queue()
# 添加任务到队列
task_queue.put('https://www.example1.com')
task_queue.put('https://www.example2.com')
task_queue.put('https://www.example3.com')
# 定义线程函数
def crawl_emails():
while not task_queue.empty():
url = task_queue.get()
# 发送请求
try:
response = requests.get(url, headers=headers, proxies=proxies)
except:
continue
# 解析HTML文档
soup = BeautifulSoup(response.text, 'html.parser')
# 查找邮箱地址
pattern = re.compile(r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b')
emails = re.findall(pattern, response.text)
# 输出邮箱地址
for email in emails:
print(email)
# 创建线程并启动
threads = []
for i in range(thread_num):
t = threading.Thread(target=crawl_emails)
t.start()
threads.append(t)
# 等待所有线程完成
for t in threads:
t.join()
```
这段代码使用了 requests 库和 BeautifulSoup 库。其中,requests 库用于发送 HTTP 请求,BeautifulSoup 库用于解析 HTML 文档。同时,使用了 Python 的多线程机制来加速爬取过程。需要注意的是,爬取邮件地址可能涉及隐私问题,请在合理范围内使用爬虫技术。
阅读全文