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

如何比对单元格条件筛选BeautifulSoup抓取的美国代理表格行

实现逻辑

你现有代码已经获取到表格所有行,该站点代理表的列顺序是固定的,直接按列索引做筛选、提取字段即可:

  • 第1列(索引0):代理IP地址
  • 第2列(索引1):代理端口
  • 第3列(索引2):国家二位代码
  • 第4列(索引3):国家全称

筛选美国代理只需判断国家列文本是否为United States,符合条件的行直接提取对应IP和端口,最后按需求存储即可。

修正后可运行代码
import requests
from bs4 import BeautifulSoup as bs
import csv

# 发起请求获取页面内容,添加UA避免被反爬拦截
r = requests.get(
    "https://sslproxies.org/",
    headers={
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
    },
    timeout=10
)
webpage = bs(r.content, "html.parser")

us_proxies = []

# 定位代理表格,跳过第一行表头遍历数据行
for row in webpage.find('table').find_all('tr')[1:]:
    cells = row.find_all('td')
    # 跳过空行、格式异常行
    if len(cells) < 4:
        continue
    # 提取国家字段判断是否为美国
    country = cells[3].text.strip()
    if country == "United States":
        ip = cells[0].text.strip()
        port = cells[1].text.strip()
        us_proxies.append({"ip": ip, "port": port})

# 示例:存储为CSV文件,可按需替换为JSON、数据库等存储方式
with open("us_proxies.csv", "w", newline="", encoding="utf-8") as f:
    writer = csv.DictWriter(f, fieldnames=["ip", "port"])
    writer.writeheader()
    writer.writerows(us_proxies)

print(f"共抓取到{len(us_proxies)}条美国代理,已存入us_proxies.csv")
注意事项
  • 所有单元格取值后用strip()清除多余空格、换行,避免文本匹配失效
  • 如果需要通过国家二位代码判断,可将筛选条件改为cells[2].text.strip() == "US"
  • 如果请求返回403或空内容,可调整请求头参数、增加请求间隔或配置代理访问

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 00:18:22