Python爬虫新手也能搞定!一步步教你抓取豆瓣电影排行榜

点击上方蓝字关注我们

在数据分析和机器学习领域,数据获取是基础且关键的一步。本文将通过一个具体案例——爬取豆瓣电影排行榜,演示如何从实际网页中提取有价值的数据。

picture.image

01

分析豆瓣电影网页结构

首先,要爬取豆瓣电影排行榜的信息,需要通过浏览器的开发者工具查看其HTML结构。在豆瓣电影的网页中,每部电影的信息被封装在div标签中,具体的类名为item。每部电影的标题通常嵌套在span标签中,类名为title,而电影的评分则存放在类名为rating\_numspan标签中。

picture.image

02

数据提取和清洗

通过Python的库requestsBeautifulSoup,可以方便地请求网页并解析其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

运行效果

picture.image

picture.image

总结

picture.image

本节通过分析豆瓣电影排行榜的网页结构,详细介绍了如何使用Python进行网页数据的提取、清洗和保存。特别强调了使用User-Agent伪装和处理分页数据的重要性,通过这个实战案例,读者可以学习到网络爬虫在数据获取过程中的关键步骤和技术。

picture.image

更多内容请关注:

你好,我是呈予贝,坐标北京,专注于自动驾驶开发,探索AI在编程中的新应用,分享编程和AI编程的知识。

0
0
0
0
评论
未登录
暂无评论