Python实现数据分析中爬取网页数据的详细教程【教程】

Python爬网页需用requests+BeautifulSoup组合,注意加headers、处理编码、用开发者工具定位标签,应对简单反爬要延时和换UA,保存优先选CSV再转DataFrame,先确认网页是否静态渲染。

用Python爬网页数据不难,关键在选对工具、避开反爬、处理好编码和结构。下面从零开始,讲清楚怎么稳定抓取常见网页内容。

选对库:requests + BeautifulSoup 是入门黄金组合

requests 负责发请求、拿HTML;BeautifulSoup(简称BS4)负责解析HTML、定位数据。比原生urllib简洁,比Selenium轻量,适合静态页面。

  • 安装命令:pip install requests beautifulsoup4
  • requests.get() 要加 headers 模拟浏览器,否则很多网站直接返回403
  • 中文网页记得用 r.encoding = 'utf-8'r.apparent_encoding 防止乱码

定位数据:用开发者工具找对标签和选择器

别靠猜——按F12打开浏览器开发者工具(推荐Chrome),右键目标文字 → “检查”,看它在哪层div、class或table里。复制CSS选择器最省事。

  • BS4常用方法:soup.find('div', class_='title')soup.select('.news-list li a')
  • 提取文本用 .get_text(),取链接用 .get('href')
  • 多个结果用 .find_all(),再循环遍历

应对简单反爬:加延时、换User-Agent、处理Cookies

大多数新闻站、博客、企业官网只做基础防护。不用上代理或登录,几招就能绕过。

  • 每次请求后加 time.sleep(1),避免高频触发风控
  • headers里至少带 'User-Agent',可从真实浏览器中复制一段(如Chrome最新UA)
  • 若需登录态,先用requests.Session(),调用login接口后自动携带cookies

保存结果:优先用CSV,结构化数据再转DataFrame

别一上来就pandas.to_csv——先用内置csv模块稳妥写入,验证数据格式正确后再升级。

  • 写CSV示例:csv.writer(f).writerow([title, link, date])
  • 后续想分析?用 pd.read_csv() 导入,缺失值用 dropna() 清洗
  • 字段含换行或逗号?写入时设 quoting=csv.QUOTE_ALL

基本上就这些。真正卡住的往往不是代码,而是没看清网页是静态渲染还是JS加载——先右键“查看网页源代码”,搜关键词,找不到就是动态内容,得换Selenium或API方式。不复杂但容易忽略。