19 简单爬虫实例
在上一篇中,我们讨论了反爬虫机制及如何使用代理与 User-Agent
来绕过这些机制。在本篇教程中,我们将通过实际案例来实现一个简单的爬虫,提取网页中的数据。最后一部分将为数据清洗与处理做铺垫。
爬虫的基本概念
爬虫,或称为网络爬虫,是一种自动访问互联网并提取网页信息的程序。我们通常用 Python 的 requests
和 BeautifulSoup
库来构建简单的爬虫。
环境准备
在开始之前,确保安装了以下 Python 库。如果还未安装,可以通过 pip
命令进行安装:
pip install requests beautifulsoup4
实例:抓取豆瓣电影榜单
下面,我们将创建一个简单的爬虫,从豆瓣电影的榜单页面抓取电影的名称和评分。
步骤1:发送请求
首先,我们需要向我们想要抓取的网页发送请求,并获取网页的 HTML 内容。在这一步中,我们将使用 requests
库。
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
来解析网页内容,提取电影的名称与评分。
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:整理输出
你可以把抓取到的数据存储到列表或其他数据结构中。以下是整理输出的代码示例:
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)
这样,所有电影的信息将被收集到一个列表中,便于后面的数据处理和清洗。
小结
在本篇教程中,我们完成了一个简单爬虫的实现,成功抓取了豆瓣电影榜单中的电影名称和评分。在实际爬虫开发中,可能会遇到更多的反爬虫机制。此外,爬取的数据常常需要进一步处理,这将在下一篇教程中详细介绍。
接下来,我们将讨论如何对爬取到的数据进行清洗与处理,以便于数据分析和使用。