抓取量一大,出口成了瓶颈
语料动辄千万页,几台云服务器的 IP 扛不住,429 越来越多,增量更新一拖再拖。
常用平台与工具
语料动辄千万页,几台云服务器的 IP 扛不住,429 越来越多,增量更新一拖再拖。
多语言模型需要各国本地网站的原文;从同一个地点访问,很多站点只给国际版或英文版。
多模态数据一个批次就是 TB 级下载,按 GB 计费时预算很难算准。
分页评论、带筛选条件的列表要连续几次请求才能读完,出口中途一变,前后页就对不上。
动态住宅 IP 来自真实家庭宽带,覆盖 195+ 国家和地区,抓取负载摊到整个池子,而不是压在几台服务器上。
采集英文语料走美国或英国出口,日文走日本,德文走德国;美国还能细到 36 个州、112 个城市。
互不相关的页面每次请求换一个出口;分页评论、带参数的列表用粘性会话,整段读完再换。
动态住宅代理不限并发,采集集群想加多少 Worker 都行;访问节奏由你按目标站点的承受能力来定。
文本用流量套餐(起始 $0.8/GB),流量包不过期;TB 级图片、音视频下载用带宽套餐,独享 100Mbps–1Gbps、不限流量(公平使用)。
HTTP、HTTPS、SOCKS5 三种协议,账号密码或 IP 白名单认证;Scrapy、HTTPX、Playwright 或自研 AI 爬虫改一处代理配置就能用。
开通后拿到接入地址和端口,替换示例中的占位符即可运行:先用 cURL 确认出口,再用 HTTPX 并发抓文本,整站语料交给 Scrapy。
GATEWAY、PORT、USER、PASS 是占位符,换成开通后拿到的接入信息;IP 白名单认证不需要 USER 与 PASS。
-x 指定代理,-I 只取响应头,用来确认连通和认证都没问题。socks5h:// 走 SOCKS5 并由代理解析域名;IP 白名单认证时去掉 USER:PASS@。
# Check connectivity and auth, headers only
curl -I -x http://USER:PASS@GATEWAY:PORT https://example.com/
# SOCKS5, hostnames resolved by the proxy
curl -I -x socks5h://USER:PASS@GATEWAY:PORT https://example.com/ AsyncClient 用 proxy 参数走代理(HTTPX 0.26+);Semaphore 控制同时在途的请求数,按目标站点的承受能力调。User-Agent 写明爬虫名称和联系方式,方便站长识别。
import asyncio
import httpx
PROXY = "http://USER:PASS@GATEWAY:PORT"
UA = "ExampleCorpusBot/1.0 (+https://example.com/bot)"
URLS = ["https://example.com/a", "https://example.com/b"]
async def fetch(client, sem, url):
async with sem:
r = await client.get(url, timeout=30)
return url, r.status_code, len(r.text)
async def main():
sem = asyncio.Semaphore(8)
client = httpx.AsyncClient(proxy=PROXY, headers={"User-Agent": UA})
async with client:
jobs = [fetch(client, sem, u) for u in URLS]
for row in await asyncio.gather(*jobs):
print(row)
asyncio.run(main()) 跟随站内链接抓正文,每个请求都在 meta 里带上 proxy。ROBOTSTXT_OBEY 保持开启,AutoThrottle 自动调速,DEPTH_LIMIT 控制抓取深度;async def start() 需要 Scrapy 2.13+。
import scrapy
PROXY = "http://USER:PASS@GATEWAY:PORT"
class CorpusSpider(scrapy.Spider):
name = "corpus"
allowed_domains = ["example.com"]
custom_settings = {
"ROBOTSTXT_OBEY": True,
"AUTOTHROTTLE_ENABLED": True,
"DEPTH_LIMIT": 3,
}
async def start(self):
url = "https://example.com/"
yield scrapy.Request(url, meta={"proxy": PROXY})
def parse(self, response):
text = " ".join(response.css("p::text").getall())
yield {"url": response.url, "text": text}
for href in response.css("a::attr(href)").getall():
yield response.follow(href, meta={"proxy": PROXY}) 文本和多语言语料用动态住宅 IP 按 GB 计费;持续下载图片和视频换成带宽套餐;要求登记来源 IP 的数据接口用静态 IP。
动态住宅 IP · 流量套餐
按 GB 计费、不限并发,按国家定向抓各语言网页;流量包不过期,适合一批一批推进的语料采集。
起始 $0.8/GB
了解详情 · 动态住宅 IP · 流量套餐动态住宅 IP · 带宽套餐
30 天一期,独享 100Mbps–1Gbps、不限流量(公平使用),TB 级持续下载成本固定;美、英、德、法、日、韩的数据源需选旗舰套餐。
100Mbps / $980/30天
了解详情 · 动态住宅 IP · 带宽套餐数据中心 IP
授权数据源要求登记来源 IP 时,配一个独享数据中心 IP:整个租期地址固定,大文件下载单价更低。
$3/IP/月
了解详情 · 数据中心 IP静态住宅 · 短效 IP
入库前要人工抽查一批来源页面时,用短效 IP:1–24 小时独享,按 IP 数量包购买,用不完不过期。
起始 $0.17/IP
了解详情 · 静态住宅 · 短效 IP常见来源有公开网页、开放数据集、授权数据和合成数据。代理用在公开网页这一环:让 AI 爬虫从对应语言市场的住宅网络发出请求,分散负载、拿到当地版本的页面。授权数据和需要登录的内容,走官方接口或数据合作。
纯文本页面体积小,按 GB 计费的流量套餐(起始 $0.8/GB)通常够用,流量包不过期。要下载大量图片、音视频或 PDF,带宽套餐(100Mbps / $980/30天,基础套餐)更容易控制成本。可以先用小流量包跑一个样本批次,按实际数据量再定。
遵守 robots.txt 和网站条款,不少站点会单独声明是否允许用于 AI 训练的抓取;User-Agent 写明爬虫名称和联系方式;控制访问频率;涉及个人信息的字段在入库前去除。代理只决定请求从哪里发出,不改变网站的授权范围,具体项目请咨询法律顾问。
面向普通读者的新闻、论坛和百科页面,用住宅 IP 拿到的是当地读者看到的版本;开放数据接口、镜像站和大文件下载,用独享数据中心 IP,吞吐大、单价低。
适合连续几次请求才能读完的内容:分页评论、带筛选条件的列表、先选语言再进入的页面。粘性会话让这一段请求保持同一个出口,其余互不相关的页面照常每请求轮换。
动态住宅代理本身不限并发,瓶颈通常在目标站点。建议每个域名单独设并发上限和请求间隔,遇到 429 按 Retry-After 退避;先小规模试跑,确认数据质量后再扩大集群。
可以。支持 HTTP、HTTPS 与 SOCKS5,认证用账号密码或 IP 白名单;每个 Worker 配同一个接入地址和端口即可,出口轮换由 NexIP 处理,不用自己维护 IP 列表。
没找到答案?