温馨提示:本教程仅供学习交流,请遵守网站使用规则,不要高频访问目标网站!!!

一、爬虫原理大揭秘(简单易懂版)

爬虫其实就是自动化网页机器人!!它的工作流程就像这样:

  1. 发送HTTP请求 -> 2. 接收响应 -> 3. 解析数据 -> 4. 存储结果

举个栗子🌰:就像你打开浏览器访问天气预报网站,然后把看到的数据手动抄下来。只不过现在让Python代码帮你自动完成整个过程!(是不是很酷?)

二、准备工作(3分钟搞定)

需要安装的库:

pip install requests beautifulsoup4 pandas

推荐开发工具:

  • VS Code(新手友好)
  • Jupyter Notebook(交互式调试更方便)
  • Chrome浏览器(开发者工具必备)

三、实战开始!上代码!!

步骤1:分析目标网站结构

我们以中国天气网为例(https://www.weather.com.cn/)

按F12打开开发者工具 -> 点击元素选择器 -> 找到城市和温度数据对应的HTML标签

(关键发现!!)城市名在<a class="name">标签,温度在<span class="temp">标签

步骤2:发送HTTP请求

import requests

url = "http://www.weather.com.cn/textFC/hb.shtml"
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
}

try:
    response = requests.get(url, headers=headers, timeout=10)
    response.encoding = 'utf-8'  # 解决中文乱码
    print("请求成功!状态码:", response.status_code)
except Exception as e:
    print("请求失败!!!错误信息:", e)

步骤3:解析数据(BeautifulSoup大显身手)

from bs4 import BeautifulSoup

soup = BeautifulSoup(response.text, 'html.parser')

cities = []
temps = []

# 抓取城市名称
for city in soup.find_all('a', class_='name'):
    cities.append(city.text.strip())

# 抓取温度数据
for temp in soup.find_all('span', class_='temp'):
    temp_tags = temp.text.split('/')
    if len(temp_tags) > 1:  # 防止空数据
        temps.append(temp_tags[0].strip())

步骤4:保存结果(CSV格式)

import pandas as pd

df = pd.DataFrame({
    '城市': cities,
    '温度': temps
})

df.to_csv('weather_data.csv', index=False)
print("数据保存成功!!快去查看weather_data.csv文件吧~")

四、数据可视化(让数据会说话!)

温度分布折线图

import matplotlib.pyplot as plt

plt.figure(figsize=(12,6))
plt.plot(df['城市'][:20], df['温度'][:20], 'r--o')
plt.title('华北地区温度分布')
plt.xlabel('城市')
plt.ylabel('温度(℃)')
plt.xticks(rotation=45)
plt.grid(True)
plt.show()

![温度分布示例图](此处应有图片,请自行运行代码查看效果)

五、高级技巧(避坑指南)

  1. 反爬对策

    • 随机User-Agent(重要!!!)
    • 使用代理IP池
    • 设置随机请求间隔(time.sleep(2))
  2. 异常处理

    from retrying import retry
    
    @retry(stop_max_attempt_number=3)
    def safe_request(url):
        # 包含超时、重试机制的请求
    
  3. 定时任务
    用Windows任务计划或Linux crontab设置每天自动运行

六、常见问题Q&A

Q:为什么我抓不到数据?
A:检查:①网页结构是否变化 ②是否触发反爬 ③编码是否正确

Q:数据抓取不全怎么办?
A:尝试增加延迟/更换IP/模拟浏览器(Selenium方案)

Q:会被抓去喝茶吗?
A:遵守robots.txt协议!单次少量抓取学习用途没问题~

七、完整代码获取

(项目已上传GitHub,私信回复"天气爬虫"获取源码包!包含可视化+数据存储+定时任务完整版)


今日作业
尝试修改代码抓取其他地区的天气数据,并在评论区晒出你的运行结果!(前10名有惊喜🎁)

下期预告:用Scrapy框架打造分布式天气预警系统!想知道如何实时监控极端天气?记得关注哦~

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐