使用Python爬取豆瓣电影Top250排行榜数据并保存为CSV

引言

随着互联网的发展,爬虫技术已经成为了一种重要的数据收集手段。本文将介绍如何使用Python编写一个简单的爬虫脚本,用于抓取豆瓣电影Top250排行榜的数据,并将这些数据保存为CSV文件。

准备工作

首先,我们需要安装必要的Python库。本项目依赖于requestsfake_useragent以及pandas库。如果你还没有安装这些库,可以通过pip命令安装:

pip install requests 
pip install fake_useragent 
pip install pandas

代码实现

1. 导入库

首先导入所需的库:

import requests
from fake_useragent import UserAgent
import re
import time
import pandas as pd

2. 定义请求头

为了避免被网站识别为爬虫,我们使用fake_useragent库来随机设置User-Agent字段:

headers = {
    "User-Agent": UserAgent().random
}

3. 初始化数据字典

我们将使用一个字典来存储抓取的数据:

data = {}

4. 定义获取数据的函数

定义一个函数get_data来发送GET请求并解析返回的HTML内容,提取我们需要的信息:

def get_data(url):
    """
    发送GET请求以获取网页内容,并提取感兴趣的数据。
    """
    resp = requests.get(url, headers=headers, timeout=10)
    if resp.status_code == 200:
        content = resp.content.decode("utf-8")
        pattern_packing = r'<em class="">(.*?)</em>'
        pattern_imgUrl = r'<img width="100" alt=".*?" src="(.*?)" class="">'
        pattern_moiver_cename = r'<a href=".*?" class="">.*?<span class="title">(.*?)</span>'
        pattern_moiver_oname = r'<span class="other">&nbsp;/&nbsp;(.*?)</span>'

        packing = re.findall(pattern_packing, content)
        imgUrl = re.findall(pattern_imgUrl, content)
        moiver_cname = re.findall(pattern_moiver_cename, content, re.S)
        moiver_oname = re.findall(pattern_moiver_oname, content)

        data["排名"] = packing
        data["图片链接"] = imgUrl
        data["电影名称"] = moiver_cname
        data["其他信息"] = moiver_oname
        time.sleep(1)
    else:
        print("请求失败")

5. 定义保存数据的函数

定义一个函数save_data来将数据保存到CSV文件中,并且合并现有数据和新数据,去重:

def save_data(data, filename='result2.csv'):
    """
    将数据保存到CSV文件中,合并现有数据和新数据,并去重。
    """
    df = pd.DataFrame(data)
    if pd.io.common.file_exists(filename):
        existing_df = pd.read_csv(filename)
        combined_df = pd.concat([existing_df, df], ignore_index=True)
        unique_df = combined_df.drop_duplicates(subset=['电影名称'], keep='first')
        unique_df.to_csv(filename, index=False, encoding='utf-8-sig')
    else:
        df.to_csv(filename, index=False, encoding='utf-8-sig')

6. 主函数

最后,在if __name__ == '__main__':块中定义我们的主函数:

if __name__ == '__main__':
    for i in range(0, 250, 25):
        url = f"https://movie.douban.com/top250?start={i}&filter="
        print(f"开始采集数据第 {i/25+1} 页的数据...")
        get_data(url)
        save_data(data)
    print("采集数据数据成功")

这段代码会遍历豆瓣电影Top250的每一页,并调用前面定义的函数来抓取数据和保存数据。

结语

通过以上步骤,我们已经完成了一个基本的Python爬虫脚本,它可以抓取豆瓣电影Top250排行榜上的数据,并将其保存为CSV文件。这只是一个简单的示例,实际应用中可能还需要考虑更多的情况,比如错误处理、更复杂的网页结构等。希望这篇博客能帮助你了解如何使用Python进行Web爬虫开发。

爬取豆瓣读书Top250数据通常涉及网络爬虫技术,这是一个常见的数据抓取数据分析项目。以下是大致的步骤: 1. **明确目标**:首先,你需要访问豆瓣读书Top250面(https://book.douban.com/top250/)以确定数据结构。 2. **分析网页结构**:查看网页源代码或使用开发者工具检查数据是如何呈现的。可能包含HTML、JSON或API接口。 3. **选择爬取方法**: - 如果是直接从HTML获取,可能需要使用Python的BeautifulSoup或Scrapy等库来解析网页。 - 如果网站提供了API,那么使用API会更方便,但要确保遵循其使用规定,可能需要注册应用或处理OAuth授权。 4. **编写爬虫脚本**:使用Python的requests库发送HTTP请求,然后处理返回的HTML或API响应。对于爬取数据,通常需要解析title、作者、评分、简介等信息。 5. **数据存储**:将抓取到的数据保存文件(如CSV、JSON或数据库),方便后续分析。 6. **异常处理和反爬策略**:注意可能遇到的验证码、动态加载、速率限制等问题,可能需要设置延时、代理或使用Selenium等工具模拟浏览器行为。 7. **合法性**:在进行爬取之前,确保你的行为符合网站的使用政策,尊重版权并避免对服务器造成过度压力。 **相关问题--:** 1. 豆瓣读书的API接口可用吗?如果可用,如何使用? 2. 如何处理HTML的JavaScript数据,如果数据不在静态HTML里? 3. 为了防止被豆瓣封禁,应该如何合理设置爬虫的频率和策略?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值