豆瓣爬取排行榜电影

import requests
from bs4 import BeautifulSoup
import csv

# 豆瓣电影榜单的URL
url = 'https://movie.douban.com/chart'

# 设置请求头,伪装成浏览器访问
header = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36 Edg/92.0.902.55',
    'Cookie': ''
}

# 发送GET请求
response = requests.get(url, headers=header)
print(response.status_code)
# 检查请求是否成功
if response.status_code == 200:
    # 使用BeautifulSoup解析HTML内容
    soup = BeautifulSoup(response.content, 'html.parser')

    # 选择电影标题的元素,这里假设电影标题在具有'pl2 a'类的<a>标签中
    movie_info = soup.select('.item')
    movices = []
    for each in movie_info:
        movie = {}
        title = each.select('.pl2 a')[0].text.split('/')[0].strip()
        try:
            rating = each.select_one('.rating_nums').text
        except AttributeError:
            rating = "暂无评分"
        try:
            count = int(each.select('.star .pl')[0].text[1:-4])
        except:
            pass
        print(title)
        print(rating)
        print(count)
        movie['title'] = title
        movie['rating'] = rating
        movie['count'] = count
        movices.append(movie)
else:
    print(f"请求失败,状态码:{response.status_code}")
print(movices)

# 数据写入
with open("movies.csv", "w", newline='', encoding='utf-8') as csvfile:
    writer = csv.writer(csvfile)
    writer.writerow(["片名", "评分", "评价人数"])
    # 选择你要导出的讲师还是教授
    for member in movices:
        writer.writerow([member['title'], member['rating'], member['count']])

爬取豆瓣电影排行榜通常涉及网络爬虫技术,这里简述一种常见的Python库——BeautifulSoup和Requests配合使用的步骤: 1. **安装所需库**: 首先需要安装`requests`用于发送HTTP请求,以及`bs4`(BeautifulSoup4)处理HTML内容。可以使用pip进行安装: ``` pip install requests beautifulsoup4 ``` 2. **发送GET请求**: 使用`requests.get('https://movie.douban.com/top250')`获取电影排行榜页面的HTML源码。 3. **解析HTML**: ```python import bs4 response = requests.get('https://movie.douban.com/top250') soup = bs4.BeautifulSoup(response.text, 'lxml') # 使用lxml解析器 ``` 4. **定位数据元素**: 找到包含电影信息的HTML标签,这通常是`<div>`标签,其中包含电影标题、评分等信息。例如,电影标题可能在`<h3>`标签内。 5. **提取数据**: 使用`soup.find_all()`查找并提取你需要的数据,如电影名、评分等,然后将其存储在一个列表或字典结构中。 6. **循环遍历**: 如果有多个结果页,可能需要循环请求多次,并将所有数据合并在一起。 7. **处理异常**: 网络请求过程中可能会遇到错误,记得加入适当的错误处理和重试机制。 8. **保存数据**: 最后,你可以选择将数据直接打印出来,也可以写入文件或者数据库。 ```python # 示例代码 movies_data = [] for page in range(1, 6): # 假设总共有5页 url = f'https://movie.douban.com/top250?start={page * 25}' response = requests.get(url) soup = bs4.BeautifulSoup(response.text, 'lxml') movie_elements = soup.find_all('div', class_='hd') for movie in movie_elements: title = movie.h3.a.text rating = movie.strong.text movies_data.append({'title': title, 'rating': rating}) # 输出或保存数据 for movie in movies_data: print(f"{movie['title']}: {movie['rating']}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值