点击上方蓝字关注我们
在数据分析和机器学习领域,数据获取是基础且关键的一步。本文将通过一个具体案例——爬取豆瓣电影排行榜,演示如何从实际网页中提取有价值的数据。
01
分析豆瓣电影网页结构
首先,要爬取豆瓣电影排行榜的信息,需要通过浏览器的开发者工具查看其HTML结构。在豆瓣电影的网页中,每部电影的信息被封装在div标签中,具体的类名为item。每部电影的标题通常嵌套在span标签中,类名为title,而电影的评分则存放在类名为rating\_num的span标签中。
02
数据提取和清洗
通过Python的库requests和BeautifulSoup,可以方便地请求网页并解析其DOM结构。使用适当的User-Agent(UA)伪装成浏览器访问,可以避免被网站封锁。以下是一个示例代码,展示了如何从网页中提取电影的标题和评分,并将这些信息存储到pandas的DataFrame中:
import requests
from bs4 import BeautifulSoup
import pandas as pd
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.36'
}
base\_url = "https://movie.douban.com/top250"
all\_movies = pd.DataFrame()
for start in range(0, 250, 25): # 分页处理
url = f"{base\_url}?start={start}"
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
movie\_items = soup.find\_all('div', class\_='item')
for item in movie\_items:
title = item.find('span', class\_='title').get\_text(strip=True)
rating = item.find('span', class\_='rating\_num').get\_text(strip=True)
movie\_data = pd.DataFrame({'Title': [title], 'Rating': [rating]})
all\_movies = pd.concat([all\_movies, movie\_data], ignore\_index=True)
03
保存数据到CSV
数据提取和清洗后,最后一步是将数据保存到CSV文件中。这可以通过pandas的to\_csv方法实现,非常方便地将DataFrame导出为CSV文件,以便于进一步分析或存储。
all\_movies.to\_csv('douban\_movie\_ratings.csv', index=False, encoding='utf\_8\_sig')
04
运行效果
总结
本节通过分析豆瓣电影排行榜的网页结构,详细介绍了如何使用Python进行网页数据的提取、清洗和保存。特别强调了使用User-Agent伪装和处理分页数据的重要性,通过这个实战案例,读者可以学习到网络爬虫在数据获取过程中的关键步骤和技术。
更多内容请关注:
你好,我是呈予贝,坐标北京,专注于自动驾驶开发,探索AI在编程中的新应用,分享编程和AI编程的知识。
