You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python拆分网页链接并通过for循环批量爬取邮箱

批量爬取多页面邮箱的解决方案

这里我们可以通过格式化URL字符串,结合for循环来遍历你指定的数字范围(50到5000),同时优化脚本的稳定性和结果去重(避免重复邮箱)。

修改后的完整代码

from selenium import webdriver
import re

# 初始化浏览器驱动(注意:如果你的Chrome版本较新,建议用webdriver-manager自动管理驱动)
driver = webdriver.Chrome("C:/Users/Sam/Downloads/chromedriver_win32/chromedriver.exe")

# 用集合存储所有爬取到的邮箱,自动实现去重
all_emails = set()

# 遍历50到5000的数字(range是左闭右开,所以结束值写5001)
for org_id in range(50, 5001):
    # 用f-string格式化URL,替换掉原来固定的1488
    url = f'https://stuactonline.tamu.edu/app/organization/profile/public/id/{org_id}'
    try:
        driver.get(url)
        doc = driver.page_source
        # 提取当前页面的邮箱
        page_emails = re.findall(r'[\w\.-]+@[\w\.-]+', doc)
        # 将当前页面的邮箱添加到集合中
        all_emails.update(page_emails)
        print(f"已完成ID {org_id} 的爬取,找到 {len(page_emails)} 个邮箱")
    except Exception as e:
        print(f"爬取ID {org_id} 时出现错误: {str(e)}")
        continue

# 关闭浏览器释放资源
driver.quit()

# 输出所有去重后的邮箱
print("\n所有爬取到的邮箱:")
for email in all_emails:
    print(email)

关键修改点说明

  • URL动态生成:使用Python的f-string语法f'...{org_id}',能快速把循环中的数字插入到URL末尾,替代原来固定的1488,实现批量遍历页面。
  • 去重处理:用set()存储邮箱,这样即使不同页面出现相同邮箱,也只会保留一条记录。
  • 异常捕获:添加try-except块,避免单个页面加载失败导致整个脚本崩溃,同时能输出错误信息方便排查问题。
  • 循环范围:range(50, 5001)会生成从50到5000的所有整数(因为range是左闭右开区间)。

额外优化建议

  • 如果你的Chrome浏览器经常更新,手动指定驱动路径容易出现版本不兼容问题,推荐用webdriver-manager自动管理驱动:
    1. 先安装库:pip install webdriver-manager
    2. 修改驱动初始化代码:
      from selenium.webdriver.chrome.service import Service
      from webdriver_manager.chrome import ChromeDriverManager
      
      driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
      
  • 可以添加适当的等待时间(比如time.sleep(1)或者Selenium的显式等待),避免请求过于频繁被网站拦截。

内容的提问来源于stack exchange,提问作者Plattering

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:48:39