Python爬虫案例如何入门编写代码

wen python案例 24

Python爬虫案例入门:从零开始编写你的第一个数据采集程序

📚 目录导读

  1. Python爬虫是什么?为什么初学者要学?
  2. 环境搭建:你需要准备什么工具?
  3. 核心原理:网页请求与响应机制
  4. 抓取静态网页标题(Requests + BeautifulSoup)
  5. 提取表格数据并保存为CSV
  6. 处理动态加载内容(Selenium基础)
  7. 常见错误与调试技巧
  8. 合规与伦理:爬虫的边界在哪?
  9. Q&A 问答环节

Python爬虫是什么?为什么初学者要学?

Python爬虫,本质上是模拟浏览器发送HTTP请求,获取服务器返回的HTML、JSON等数据,再通过解析工具提取出有用信息的过程,对于编程新手来说,它有两个核心价值:

Python爬虫案例如何入门编写代码

  • 快速获得成就感:只需几十行代码,就能抓取新闻标题、天气预报、商品价格等真实数据。
  • 扎实理解网络通信:你会弄懂URL、HTTP状态码、HTML结构、CSS选择器等基础概念。

你可能会问:“不会JavaScript能写爬虫吗?”
答:完全可以,大部分入门案例基于静态页面,只用到Python基础语法和少量第三方库。


环境搭建:你需要准备什么工具?

在开始写代码前,请确保电脑上已安装以下内容:

工具 版本建议 下载方式
Python 3 8及以上 官网python.org 或 Anaconda
pip Python自带 无需额外安装
VS Code (或PyCharm) 最新版 官网下载社区版即可

安装所需库(在终端或命令行执行):

pip install requests beautifulsoup4 lxml
# 后续案例二需要:
pip install pandas
# 案例三需要(可选):
pip install selenium

检查是否成功: 在Python中执行 import requests 不报错即成功。


核心原理:网页请求与响应机制

一次简单的爬虫请求流程:

你的代码 → 模拟浏览器 → 发送GET请求 → 服务器返回HTML → 代码解析HTML → 提取数据
  • Requests库:负责“发送请求”和“接收响应”。
  • BeautifulSoup库:负责“解析HTML”和“提取数据”。

关键概念:

  • URL:你访问的网址
  • Response:服务器返回的内容(包含HTML文本、状态码、cookie等)
  • Status Code 200:请求成功
  • Status Code 404:页面不存在
  • Status Code 403:禁止访问(需要伪装头信息)

Q:为什么我的代码能访问,但返回空数据?
A:常见原因包括:①网页内容是通过JavaScript动态加载的(案例三解决);②网站反爬机制(需要添加User-Agent头)。


案例一:抓取静态网页标题

目标: 抓取一个简单新闻网站的标题列表。

步骤:

  1. 打开目标URL(以example.com为例,实际请替换为合法可爬取的网站)。
  2. 使用requests获取页面源码。
  3. 使用BeautifulSoup解析并提取<h2>标签内的文本。

代码示例(可直接运行):

import requests
from bs4 import BeautifulSoup
url = "https://httpbin.org/anything"  # 测试用安全页面
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
}
response = requests.get(url, headers=headers)
response.encoding = "utf-8"  # 防止中文乱码
soup = BeautifulSoup(response.text, "lxml")
# 假设页面中有h2标签,实际测试请换为真实页面
example_data = soup.find("body").get_text()[:200]
print("返回内容前200字符:", example_data)

解析说明:

  • headers:伪装成浏览器,避免被识别为爬虫。
  • soup.find("h2"):找到第一个匹配标签;soup.find_all("h2"):找到所有。

Q:如果找不到标签怎么办?
A:先打印 response.text 前500字符,确认页面源代码是否有目标标签。


案例二:提取表格数据并保存为CSV

目标: 从HTML表格中提取数据,保存为excel可打开的CSV文件。

适用场景: 天气报告、股票列表、排行榜等结构化表格数据。

代码示例:

import requests
from bs4 import BeautifulSoup
import pandas as pd
url = "https://httpbin.org/html"  # 测试页面,无实用表格
response = requests.get(url)
soup = BeautifulSoup(response.text, "lxml")
# 定位表格(假设id为"data-table")
table = soup.find("table", id="data-table")
if table:
    rows = table.find_all("tr")
    data = []
    for row in rows:
        cells = row.find_all("td")
        if cells:
            data.append([cell.get_text(strip=True) for cell in cells])
    df = pd.DataFrame(data)
    df.to_csv("output.csv", index=False, encoding="utf-8-sig")
    print("数据已保存至 output.csv")
else:
    print("未找到表格,请检查页面结构")

关键技巧:

  • utf-8-sig:防止CSV用Excel打开时中文乱码。
  • 先用浏览器开发者工具(F12)查看表格的结构和class/id属性。

案例三:处理动态加载内容(Selenium基础)

痛点: 有些网站的内容在滚动页面或点击按钮后才出现(如评论区、无限滚动列表),此时静态请求拿不到数据。

解决方案: 使用Selenium模拟真实浏览器操作。

安装与简单用法:

pip install selenium
# 还需要下载对应浏览器的驱动,如ChromeDriver

示例代码(打开百度并搜索):

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
driver = webdriver.Chrome()  # 确保chromedriver在PATH中
driver.get("https://www.example.com")
time.sleep(2)  # 等待加载
# 搜索框输入关键词
search_box = driver.find_element(By.NAME, "q")
search_box.send_keys("Python爬虫")
search_box.send_keys(Keys.RETURN)
time.sleep(3)
print("当前页面标题:", driver.title)
driver.quit()

Q:Selenium一定比requests慢吗?
A:是的,因为它要启动真实浏览器,优先用requests(静态页面),动态页面再考虑Selenium。


常见错误与调试技巧

错误现象 可能原因 解决方法
ConnectionError 网络中断或网址错误 检查URL、重试或使用代理
HTTP 403 被反爬识别 添加headers和延时time.sleep(1)
中文乱码 编码不对 强制设置response.encoding = "utf-8"
AttributeError: 'NoneType' 标签未找到 先用soup.prettify()查看实际结构

调试三件套:

print(response.status_code)  # 检查状态码
print(response.text[:500])   # 查看页面源码前500字符
soup = BeautifulSoup(response.text, "lxml")
print(soup.prettify()[:1000]) # 格式化输出

合规与伦理:爬虫的边界在哪?

初学者最容易忽略的是法律风险,请务必遵守:

  • robots.txt:访问 目标网址/robots.txt 查看允许爬取的范围。
  • 频率控制:每次请求间隔至少1秒,避免对服务器造成压力。
  • 公开数据:仅爬取公开可访问的内容,不要突破登录验证。
  • 不要:抓取个人隐私、付费内容、并用于商业盈利。

Q:爬虫会被抓吗?
A:如果你遵守规则,爬取公开可访问的非敏感数据,且不攻击服务器,通常没有问题,但若大规模并发抓取或伪造数据,可能面临法律风险。


Q&A 问答环节

Q1:没有编程基础能学爬虫吗?
A:可以,但建议先了解Python基础(变量、循环、列表、字典、函数)大约2周即可上手。

Q2:遇到反爬虫(如验证码)怎么办?
A:新手建议换个网站练习,进阶可了解IP代理池、Cookie模拟登录,但并非入门内容。

Q3:抓下来的数据如何存储?
A:常用方式:CSV(通用)、JSON(结构灵活)、SQLite(小型数据库)、Excel。

Q4:推荐学习资源有哪些?
A:官方文档(Requests、BeautifulSoup、Selenium)是最权威的,其次可看GitHub上的实战项目。

Q5:用别人的API不好吗?为什么要写爬虫?
A:API有访问限制、需要密钥、或根本不存在公开API,爬虫可以获取定制化的数据。



Python爬虫入门并不难,核心在于理解“请求→解析→存储”三步骤,从今天起,打开你的IDE,跟着案例一行行敲代码,很快你就能拥有属于自己的数据采集工具。实践是最好的老师,但合规是底线,现在就开始你的第一个爬虫项目吧!

抱歉,评论功能暂时关闭!