19 简单爬虫实例

在上一篇中,我们讨论了反爬虫机制及如何使用代理与 User-Agent 来绕过这些机制。在本篇教程中,我们将通过实际案例来实现一个简单的爬虫,提取网页中的数据。最后一部分将为数据清洗与处理做铺垫。

爬虫的基本概念

爬虫,或称为网络爬虫,是一种自动访问互联网并提取网页信息的程序。我们通常用 Python 的 requestsBeautifulSoup 库来构建简单的爬虫。

环境准备

在开始之前,确保安装了以下 Python 库。如果还未安装,可以通过 pip 命令进行安装:

1
pip install requests beautifulsoup4

实例:抓取豆瓣电影榜单

下面,我们将创建一个简单的爬虫,从豆瓣电影的榜单页面抓取电影的名称和评分。

步骤1:发送请求

首先,我们需要向我们想要抓取的网页发送请求,并获取网页的 HTML 内容。在这一步中,我们将使用 requests 库。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import requests

url = 'https://movie.douban.com/chart'
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)

if response.status_code == 200:
html_content = response.text
print("请求成功!")
else:
print("请求失败,状态码:", response.status_code)

在上面的代码中,我们向 豆瓣电影榜单 发送了一个 GET 请求,并使用了合适的 User-Agent 以模拟浏览器访问。

步骤2:解析 HTML 内容

接下来,我们需要提取我们关心的数据。在这里,我们将使用 BeautifulSoup 来解析网页内容,提取电影的名称与评分。

1
2
3
4
5
6
7
8
9
from bs4 import BeautifulSoup

soup = BeautifulSoup(html_content, 'html.parser')

movies = soup.select('td.title a')
ratings = soup.select('span.rating_nums')

for movie, rating in zip(movies, ratings):
print(f"电影名称:{movie.get_text()}, 评分:{rating.get_text()}")

在这段代码中,我们分别使用 soup.select 方法抓取电影名称和评分的元素,然后打印出来。

步骤3:整理输出

你可以把抓取到的数据存储到列表或其他数据结构中。以下是整理输出的代码示例:

1
2
3
4
5
6
7
8
9
10
movie_data = []

for movie, rating in zip(movies, ratings):
movie_info = {
'name': movie.get_text(),
'rating': rating.get_text()
}
movie_data.append(movie_info)

print(movie_data)

这样,所有电影的信息将被收集到一个列表中,便于后面的数据处理和清洗。

小结

在本篇教程中,我们完成了一个简单爬虫的实现,成功抓取了豆瓣电影榜单中的电影名称和评分。在实际爬虫开发中,可能会遇到更多的反爬虫机制。此外,爬取的数据常常需要进一步处理,这将在下一篇教程中详细介绍。

接下来,我们将讨论如何对爬取到的数据进行清洗与处理,以便于数据分析和使用。

作者

IT教程网(郭震)

发布于

2024-08-11

更新于

2024-08-11

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论