Python网页爬虫无报错但无法下载纽约TLC出行记录数据
Python网页爬虫无报错但无法下载纽约TLC出行记录数据
我看了你的代码和问题描述,马上发现几个关键问题导致爬虫没实际干活,还得解决依赖卡住的麻烦,咱们一步步来排查修复:
1. 最核心的错误:爬错页面了!
你目标是纽约TLC的官方数据页面,但代码里的base_url写的是文件存储的CDN地址——这个CDN页面根本没有你要找的div.faq-answers、div.faq-questions这类元素!所以你的循环for section in soup.find_all("div", class_="faq-answers")直接跳过了所有下载逻辑,程序啥也没干就直接打印“完成”,自然目录里空空如也。
修复方法:把base_url改成你实际要爬的官方页面地址:
base_url = "https://www.nyc.gov/site/tlc/about/tlc-trip-record-data.page"
另外,官方页面里的下载链接本身就是完整的CDN地址,所以后续拼接URL的时候,直接用link.get("href")就行,不用再调用urljoin啦。
2. 文件写入模式错误,会损坏下载的Parquet文件
你的download_file函数里用了文本模式"w"来写入Parquet文件,但Parquet是二进制格式,这么写会直接损坏文件,就算下载成功后续转CSV也会失败。
修复方法:把文件打开模式改成二进制写入"wb":
def download_file(url, file_path): # 这里省略其他代码... with open(file_path, "wb") as f: f.write(response.content)
3. 解决依赖安装卡住的问题
你提到fake_useragent安装没完没了,这个包经常会因为网络问题无法拉取最新的User-Agent列表,导致安装或运行时卡住。给你两个替代方案:
- 方案一:手动维护User-Agent列表,彻底不用
fake_useragent,简单又稳定:# 提前准备几个常用的User-Agent USER_AGENTS = [ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36", "Mozilla/5.0 (Macintosh; Intel Mac OS X 14_2) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.1 Safari/605.1.15", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" ] # 在函数里随机选一个 user_agent = random.choice(USER_AGENTS) headers = {"User-Agent": user_agent} - 方案二:如果一定要用fake_useragent,可以设置离线模式,避免每次运行都去拉取数据:
from fake_useragent import UserAgent ua = UserAgent(use_cache_server=False) # 或者提前下载好缓存文件,指定路径
4. 额外的调试小技巧
为了确认爬虫是否正确识别到页面元素,可以在循环前加个打印:
sections = soup.find_all("div", class_="faq-answers") print(f"找到{len(sections)}个年份区块")
如果输出是0,要么是页面结构变了,要么是你被网站反爬拦截了——这时候记得给初始的requests.get也加上User-Agent headers,避免被当成机器人:
headers = {"User-Agent": random.choice(USER_AGENTS)} response = requests.get(base_url, headers=headers)
备注:内容来源于stack exchange,提问作者Flosrv
相关产品推荐
相关产品推荐

