这是一个简单的Python爬虫案例,通过发送 HTTP 请求,解析网页内容,提取目标信息,并循环爬取多页数据,最终获得了豆瓣电影 Top250 的电影名称、评分、评价人数等信息。您可以根据这个示例来编写其他爬虫案例,并根据需要对代码进行修改和扩展。
1. 目标:
爬取豆瓣电影 Top250 的电影名称、评分、评价人数等信息。
2. 实现过程:
2.1 导入必要的库
import requests
from bs4 import BeautifulSoup
2.2 发送 HTTP 请求并解析网页内容
def get_movie_data(url):
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
return soup
2.3 提取电影信息
def extract_movie_info(soup):
movie_list = []
items = soup.find_all('div', class_='item')
for item in items:
title = item.find('span', class_='title').text
rating = item.find('span', class_='rating_num').text
votes = item.find('span', class_='inq').text
movie_list.append({'title': title, 'rating': rating, 'votes': votes})
return movie_list
2.4 爬取多页数据
def crawl_top250():
base_url = 'https://movie.douban.com/top250?start={}&filter='
movie_data = []
for start in range(0, 250, 25):
url = base_url.format(start)
soup = get_movie_data(url)
movie_data.extend(extract_movie_info(soup))
return movie_data
2.5 执行爬虫并输出结果
if __name__ == "__main__":
top250_movies = crawl_top250()
for movie in top250_movies:
print(f"电影:{movie['title']},评分:{movie['rating']},评价人数:{movie['votes']}")
3. 代码实现讲解:
- 导入必要的库: 使用 `requests` 库发送 HTTP 请求,使用 `BeautifulSoup` 库解析网页内容。
- 发送 HTTP 请求并解析网页内容: `get_movie_data` 函数负责发送 HTTP 请求获取网页内容,并使用 BeautifulSoup 解析网页。
- 提取电影信息: `extract_movie_info` 函数从解析后的网页内容中提取电影的名称、评分、评价人数等信息,并以字典的形式保存。
- 爬取多页数据: `crawl_top250` 函数循环爬取豆瓣电影 Top250 的多个页面,并调用提取信息的函数。
- 执行爬虫并输出结果: 在 `__main__` 部分调用 `crawl_top250` 函数执行爬虫,并打印爬取结果。
这是一个简单的爬虫案例,通过发送 HTTP 请求,解析网页内容,提取目标信息,并循环爬取多页数据,最终获得了豆瓣电影 Top250 的电影名称、评分、评价人数等信息。您可以根据这个示例来编写其他爬虫案例,并根据需要对代码进行修改和扩展。