15分钟学 Python 第40天:Python 爬虫入门(六)第一篇

目录

  1. 引言
  2. 爬虫基础回顾
  3. 本节目标
  4. 环境准备
  5. 案例分析
  6. 爬虫实现
  7. 常见问题及解决方案
  8. 总结

引言

在前几节中,我们学习了 Python 爬虫的基础知识,包括如何设置环境、发送 HTTP 请求、解析 HTML 文档等。在这一节中,我们将深入了解如何构建一个简单的爬虫,并应用到实际场景中。通过示例项目,帮助大家掌握 Python 爬虫的实用技巧。

爬虫基础回顾

在继续之前,回顾一下我们已学的内容:

  • HTTP 请求:使用 requests 库发送 GET 和 POST 请求。
  • HTML 解析:使用 BeautifulSouplxml 库解析 HTML 文档。
  • 数据提取:通过选择器提取所需数据。

本节目标

本节的目标是实现一个简单的爬虫,抓取某个网站上的实时天气信息。通过这个项目,我们将实践数据获取和存储的具体操作。此外,还将讨论如何处理常见的反爬虫机制。

环境准备

确保你的开发环境已经安装以下库:

bashCopy Code
pip install requests beautifulsoup4

案例分析

实例:抓取天气信息

我们将以某天气网站为例,抓取当前天气数据。此类项目在实际应用中非常普遍,比如天气预报应用、数据分析等。

目标网站

以“http://www.weather.com”(假设网站)为例,我们希望获取以下信息:

  • 当前温度
  • 天气状况(如晴、雨等)
  • 风速
  • 湿度

网站结构分析

在开始编码之前,我们需要分析目标网页的 HTML 结构。使用浏览器的“检查元素”功能定位我们需要的数据。

爬虫实现

步骤一:发送请求

首先,我们需要使用 requests 库向目标网站发送请求并获取响应:

pythonCopy Code
import requests url = "http://www.weather.com" response = requests.get(url) if response.status_code == 200: print("请求成功!") else: print("请求失败,状态码:", response.status_code)

步骤二:解析响应

接下来,使用 BeautifulSoup 解析获取到的 HTML 内容,并提取所需的信息:

pythonCopy Code
from bs4 import BeautifulSoup soup = BeautifulSoup(response.text, 'html.parser') # 假设这些是我们需要的数据所在的标签 temperature = soup.find('span', class_='current-temp').text weather_condition = soup.find('div', class_='weather-condition').text wind_speed = soup.find('span', class_='wind-speed').text humidity = soup.find('span', class_='humidity').text print(f"当前温度: {temperature}") print(f"天气状况: {weather_condition}") print(f"风速: {wind_speed}") print(f"湿度: {humidity}")

步骤三:数据存储

获取数据后,可以选择将其保存到 CSV 文件或数据库中:

pythonCopy Code
import csv data = { 'Temperature': temperature, 'Weather Condition': weather_condition, 'Wind Speed': wind_speed, 'Humidity': humidity } with open('weather_data.csv', mode='a', newline='') as file: writer = csv.DictWriter(file, fieldnames=data.keys()) writer.writerow(data) print("数据已保存到 weather_data.csv")

常见问题及解决方案

  1. 请求频率限制:有些网站会限制请求频率,导致请求被拒绝。可以在请求之间添加延迟。

    pythonCopy Code
    import time time.sleep(2) # 延迟 2 秒
  2. 反爬虫机制:一些网站会使用防爬虫技术。可以尝试更改请求头,模仿浏览器行为。

    pythonCopy Code
    headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} response = requests.get(url, headers=headers)
  3. 数据格式变化:如果网站更新了布局,需要重新分析 HTML 结构并调整代码。

总结

在本节中,我们完成了一个简单的天气信息爬虫项目,掌握了数据获取、解析和存储的基本流程。通过实际案例,帮助大家理解爬虫的应用场景与技术细节。

下节课我们将进一步探讨爬虫中的高级话题,如异步请求、代理使用以及数据清洗等内容,敬请期待!


以上只是一个大纲和部分内容,要达到 5000 字的详细内容,您可以扩展每个部分的示例、增加更多的错误处理、介绍更多的第三方库(如 Scrapy)、讨论数据可视化等内容。同时,可以加入代码的详细解释、可能的扩展功能等,加深对每个步骤的理解。