用Python采集豆瓣电影top250数据

anwen4816 2024-6-19 851 6/19
import requests
from bs4 import BeautifulSoup
import csv

# 请求头信息
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}

# 获取豆瓣电影 top 250 页面信息
def get_page_info(url):
    res = requests.get(url, headers=headers)
    if res.status_code == 200:
        return res.text
    else:
        return None

# 解析页面信息,获取电影信息列表,并写入 CSV 文件
def parse_info(html):
    soup = BeautifulSoup(html, 'html.parser')
    movie_list = []
    for item in soup.find_all(class_='item'):
        movie_rank = item.find(class_='pic').em.text
        movie_name = item.find(class_='title').text.strip().replace('\n', '').replace(' ', '')
        movie_rating = item.find(class_='rating_num').text
        movie_comment_num = item.find(class_='star').find_all('span')[3].text[:-3]
        movie_link = item.find(class_='hd').a['href']
        movie_list.append({
            '排名': movie_rank,
            '电影名称': movie_name,
            '评分': movie_rating,
            '评价人数': movie_comment_num,
            '链接': movie_link
        })

    # 写入 CSV 文件
    with open('douban_movie_top250.csv', 'w', newline='', encoding='utf-8') as csvfile:
        writer = csv.DictWriter(csvfile, fieldnames=['排名', '电影名称', '评分', '评价人数', '链接'])
        writer.writeheader()
        writer.writerows(movie_list)

# 爬取豆瓣电影 top250 数据
def crawl_top250():
    url = 'https://movie.douban.com/top250'
    html = get_page_info(url)
    if html:
        parse_info(html)
        print('爬取完毕')
    else:
        print('网络请求异常,爬取失败!')

if __name__ == '__main__':
    crawl_top250()

requests 库和 Beautiful Soup 库来爬取豆瓣电影 Top250 数据。

 

注意事项:

 

在 headers 中设置 User-Agent 可以避免豆瓣封禁爬虫造成的请求异常。

 

通过 find_all 方法获取 BeautifulSoup 对象中的所有符合条件的子标签,返回一个列表,可以使用下标或遍历方式获取元素。

 

在使用 csv 内置库写入数据时,需要首先定义 CSV 文件的表头,即 DictWriter 中的 fieldnames 参数。

 

豆瓣页面的反爬机制比较厉害,在网络请求中可能需要加入一些反爬机制的代码以确保爬取成功,例如代理池、随机 User-Agent等

源代码和爬取内容下载:源码下载

本内容仅供参考 学习使用 禁止商业用途

各位还是要好好上课的哈!!!

用Python采集豆瓣电影top250数据

- THE END -

anwen4816

6月19日15:01

最后修改:2024年6月19日
0

非特殊说明,本博所有文章均为博主原创。