Python 爬虫:抓取豆瓣top250电影数据

接到项目需求为爬取豆瓣top250电影数据,主要包含以下四个字段信息:‘电影名称’,‘上映年份’,‘豆瓣评分’,‘点评人数’
本文通过re正则对豆瓣网页数据进行解析提取

import requests
import re
import pandas as pd

df = pd.DataFrame(columns=['电影名称','上映年份','豆瓣评分','点评人数'])   #创建表头

#创建空列表用于存放数据
movie_name =[]
first_year =[]
douban_score =[]
rate_peop = []

#UA伪装
headers = {"User-Agent":
               "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36"}

#找到分页规律:一页25条电影记录,一共10页,正好250条
for page in range(0,251,25):

    #url不要写死,便于分页抓取数据
    url =f'https://movie.douban.com/top250?start={page}'

    resp = requests.get(url=url,headers=headers).text     #获取网页信息

    #爬取电影名称数据
    obj = re.compile('<li>.*?<span class="title">(?P<name>.*?)</span>'
                     '.*?<p class="">.*?<br>(?P<year>.*?)&nbsp;'
                     '.*?<span class="rating_num" property="v:average">(?P<score>.*?)</span>'
                     '.*?<span>(?P<pop>.*?)人评价</span>',re.S)
    content = obj.finditer(resp)


    for i in content:
        #print(i.group("name"),end="   ")
        #print(i.group("year").strip(),end="   ")
        #print(i.group("score"),end="   ")
        #print(i.group("pop"))

        dic = i.groupdict()
        dic['year'] = dic['year'].strip()     #从网页提取出来会有很多空格,此处需要删除空格

        #将每抓取的一笔数据都写入的列表里
        movie_name.append(dic['name'])
        first_year.append(dic['year'])
        douban_score.append(dic['score'])
        rate_peop.append(dic['pop'])

#将前面创建的df中加载数据
df = pd.DataFrame({'电影名称':movie_name,'上映年份':first_year,'豆瓣评分':douban_score,'点评人数':rate_peop})

#将df中的数据写入到csv中
df.to_csv(".\豆瓣电影top250清单")

最后打开刚刚写入的csv文件里,包含里爬取出来的数据。
项目结束,完结撒花✿✿ヽ(°▽°)ノ✿
在这里插入图片描述

  • 13
    点赞
  • 153
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值