python爬虫--小白爬取豆瓣网电影排行Top250

爬取豆瓣网电影Top250

前言

爬取豆瓣网Top250电影名和评分,本次跟博主上两个内容差别在于:1. 将方法封装到函数中;2. 共爬取10页信息。本来是想爬取腾讯付费视频的,搞了一下午还是没搞明白,下次再继续。本次内容,通俗易懂,方法较简单,适合小白练手

一、爬取页面

在这里插入图片描述

二、代码

from bs4 import BeautifulSoup
import requests
import re
import pandas as pd

#获取豆瓣Top250页面
def get_Url(url):
    header={
        'Host': 'movie.douban.com',
        'User-Agent': 'Mozilla/5.0(Windows NT 10.0;Win64;x64;rv: 84.0)Gecko/20100101Firefox/84.0',
        'Accept': 'text/html,application/xhtml+xml, application/xml;q = 0.9,image/webp, */*;q = 0.8',
        'Accept-Language':'zh-CN,zh;q = 0.8, zh-TW;q = 0.7, zh-HK;q = 0.5, en-US;q = 0.3, en;q = 0.2',
        'Referer': "https://movie.douban.com/top250",
        'Connection': 'keep-alive',
        'Cookie': 'bid = DN_L_dUYnQQ'
    }
    #解析url
    html=requests.get(url,headers=header).text
    return html

#获取爬取页面中所需数据
def get_Data(html,all_title,all_score):
    soup = BeautifulSoup(html, features="html.parser")
    # 电影评分
    scores = soup.find_all('div', {"class": "info"})
    # 电影名
    titles = soup.find_all('span', {"class": "title"})
    # 遍历所有电影名,将所有电影名字放到all_title列表中
    for j in range(len(titles)):
        title = re.findall(r'"title">(.+?)</span>', str(titles[j]))
        if "/" not in title[0]:
            all_title.append(title[0])
    # # 遍历所有评分信息,将所有电影对应的评分放到all_score列表中
    for j in scores:
        all_score.append(re.findall(r'"v:average">(.+?)</span>', str(j))[0])

    return all_title,all_score
if __name__ == '__main__':
    all_title = []
    all_score=[]
    #遍历10页数据,每页25条
    for i in range(10):
        url="https://movie.douban.com/top250?start={}&filter=".format(i*25)
        html=get_Url(url)
        all_titles,all_scores=get_Data(html,all_title,all_score)
    # 放到字典中
    dict = {'title(电影名字)': all_titles, 'score(评分)': all_scores}
    # 转换成DataFrame格式
    df=pd.DataFrame(dict)
    # 索引从1开始
    df.index=df.index+1
    # 存放到excel中
    df.to_excel('E:/output/豆瓣电影排行.xlsx')




爬取结果

在这里插入图片描述

总结

还可以

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值