如何批量采集15000个网页指定span标签的data-price属性值
批量采集可行性说明
完全可以实现该采集需求,无需接触站点后台数据库,仅通过网页访问权限即可完成。
核心实现逻辑
- 按规则批量生成15000个目标URL,格式统一为
https://example.com/[1-15000] - 合理控制请求频率与并发量,避免触发目标站点反爬策略,常规场景下设置1-3秒请求间隔即可
- 请求拿到页面HTML内容后,通过DOM解析器定位ID为
lowest-1、lowest-2、lowest-3的三个span标签,直接提取其data-price属性值 - 将采集到的页码、三个价格值对应存储为CSV、JSON等结构化格式方便后续处理
参考代码(Python实现)
import time import csv import requests from bs4 import BeautifulSoup # 配置参数 MAX_PAGE = 15000 BASE_URL = "https://example.com/{}" REQUEST_INTERVAL = 2 # 秒,可自行调整 # 存储文件初始化 with open("price_data.csv", "w", newline="", encoding="utf-8") as f: writer = csv.writer(f) writer.writerow(["页码", "lowest-1价格", "lowest-2价格", "lowest-3价格"]) for page in range(1, MAX_PAGE + 1): try: # 发起请求 url = BASE_URL.format(page) resp = requests.get(url, timeout=10) resp.raise_for_status() # 解析内容 soup = BeautifulSoup(resp.text, "html.parser") price1 = soup.find("span", id="lowest-1")["data-price"] price2 = soup.find("span", id="lowest-2")["data-price"] price3 = soup.find("span", id="lowest-3")["data-price"] # 写入数据 with open("price_data.csv", "a", newline="", encoding="utf-8") as f: writer = csv.writer(f) writer.writerow([page, price1, price2, price3]) print(f"第{page}页采集完成,价格分别为{price1}、{price2}、{price3}") # 控制请求间隔 time.sleep(REQUEST_INTERVAL) except Exception as e: print(f"第{page}页采集失败:{str(e)}") # 可按需添加失败重试逻辑
注意事项
- 若目标页面为JavaScript动态渲染,静态请求拿不到完整HTML的情况下,可替换为selenium、playwright等模拟浏览器工具加载页面后再解析
- 建议先跑前10页的测试任务,确认解析逻辑、数据准确性没问题后再启动全量采集
- 若出现IP被封禁的情况,可按需接入代理IP池、增加请求间隔时间调整采集策略
内容的提问来源于stack exchange,提问作者HPA Informática
相关产品推荐
相关产品推荐

