Python 爬虫入门(六)第一篇

在前面几天的学习中,我们逐渐掌握了使用 Python 进行网络爬虫的基础知识,包括如何发送请求、解析 HTML 数据等。今天,我们将更深入地学习使用 requests 和 BeautifulSoup 库进行网页数据的抓取和解析,以便获取我们需要的信息。

1. 环境准备

如果你还没有安装 requests 和 BeautifulSoup 库,可以通过 pip 命令进行安装:

pip install requests beautifulsoup4

2. 基本的爬虫流程

在进行爬虫之前,让我们明确一下基本的爬虫流程:

  1. 发送请求:使用 requests 库发送 HTTP 请求,获取网页的 HTML 内容。
  2. 解析数据:使用 BeautifulSoup 解析 HTML 页面,提取需要的数据。
  3. 保存数据:将提取到的数据保存到本地文件或数据库中。
  4. 处理异常:处理可能出现的异常情况,如请求失败、数据解析失败等。

3. 示例代码

下面我们将以抓取一个简单的网页为例,展示如何使用 requests 和 BeautifulSoup 进行爬虫操作。

示例网站

我们将以 http://quotes.toscrape.com/ 作为示例网站,这个网站专门用于爬虫学习,提供了一些名人名言的信息。

爬虫代码

import requests
from bs4 import BeautifulSoup

# 发送请求
url = 'http://quotes.toscrape.com/'
try:
    response = requests.get(url)
    response.raise_for_status()  # 如果请求失败,抛出异常
except requests.RequestException as e:
    print(f'请求失败: {e}')
    exit()

# 解析数据
soup = BeautifulSoup(response.text, 'html.parser')

# 提取数据
quotes = soup.find_all('div', class_='quote')
for quote in quotes:
    text = quote.find('span', class_='text').get_text()
    author = quote.find('small', class_='author').get_text()
    print(f'名言: {text} — 作者: {author}')

代码解释

  1. 请求网页:我们使用 requests.get() 方法获取网页内容,并且利用 response.raise_for_status() 确保请求成功。如果请求失败,会抛出一个异常。

  2. 解析网页:使用 BeautifulSoup 解析获得的 HTML 文本。我们指定解析器为 html.parser

  3. 查找数据:使用 soup.find_all() 方法查找所有带有 quote 类的 <div> 标签。然后,循环遍历这些名言,从中提取名言文本和作者信息。

  4. 输出结果:打印出每条名言及其作者。

4. 扩展功能

在上述代码的基础上,我们可以增加一些功能,比如分页抓取。如果我们想抓取多页的数据,可以通过 URL 中的页码参数进行循环请求:

for page in range(1, 4):  # 爬取前3页
    url = f'http://quotes.toscrape.com/page/{page}/'
    response = requests.get(url)
    response.raise_for_status()

    soup = BeautifulSoup(response.text, 'html.parser')
    quotes = soup.find_all('div', class_='quote')

    for quote in quotes:
        text = quote.find('span', class_='text').get_text()
        author = quote.find('small', class_='author').get_text()
        print(f'名言: {text} — 作者: {author}')

这样就可以抓取到多页的名人名言啦。

5. 注意事项

在进行爬虫时要注意:

  • 尊重网站的 robots.txt 文件,了解网站对爬虫的限制。
  • 控制请求频率,避免对目标网站造成过大压力。
  • 如果需要大量抓取数据,建议使用代理 IP,避免被封禁。

通过这一系列的学习,我们已经掌握了 Python 爬虫的基本技巧。希望大家在实际应用中能够灵活运用。继续加油!

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部