python爬取豆瓣TOP250-再也不愁没电影看

python爬取豆瓣TOP250-再也不愁没电影看

你需要本地安装requests库和BeautifulSoup库

若你代码在IDE里面运行,比如Pycharm需要单独安装库

#安装命令
打开cmd复制上去
pip install requests #requests库安装命令
pip install beautifulsoup4 #BeautifulSoup库安装命令

首先导入库:

import requests
from bs4 import BeautifulSoup
#导入库

获取并解析数据:

for i in range(10):
    url='https://movie.douban.com/top250?'+'start='+str(i*25)+'&filter='
    #因为豆瓣是10页所以需要循环十次,豆瓣每一页start增加25,所以需要i*25
    res = requests.get(url)
    #获取豆瓣网页数据
    soup = BeautifulSoup(res.text, 'html.parser')
    #解析数据
    douban=soup.find_all('div',class_='item')
    #获取标签全部数据

因为豆瓣是10页所以需要循环十次,豆瓣每一页start增加25,所以需要i*25

把数据对象转换为tag并取元素:

    for x in douban:
        #写一个循环把数据对象转化成tag
        Number=x.find('em').text
        #取其em标签,为序列号
        movie_title=x.find(class_='title').text
        #取其title元素,为电影片名
        rating=x.find(class_='rating_num').text
        #取其rating_num元素为评分
        recommended=x.find(class_='inq').text
        #取其inq元素,为推荐语
        douban_url=x.find('a')
        #取其a标签,为链接做铺垫
        URL=douban_url['href']
        #取其a标签的属性名,为链接
        print(Number+'.',movie_title,rating+'分'+'\n','推荐语:'+recommended+'\n'+URL)
        #打印所有内容

写一个循环把数据对象转化成tag,然后取其元素和标签, 把Response对象转换为text属性!

写入本地:

all = '\n'+Number + '.', movie_title, rating + '分' + '\n', '推荐语:' + recommended + '\n' + URL
            #为写入本地准备
            with open('6.txt', 'a+',encoding='utf-8')as file:
                #为了避免打开文件后忘记关闭,占用资源或当不能确定关闭文件的恰当时机的时候,我们可以用到关键字with
                sep = ''
                #把输入传到sep写入本地
                file.write(sep.join(all))
                #字符串合并写入本地

需注意乱码问题

完整代码:

import requests
from bs4 import BeautifulSoup
#导入库
for i in range(10):
    url='https://movie.douban.com/top250?'+'start='+str(i*25)+'&filter='
    #因为豆瓣是10页所以需要循环十次,豆瓣每一页start增加25,所以需要i*25
    res = requests.get(url)
    #获取豆瓣网页数据
    soup = BeautifulSoup(res.text, 'html.parser')
    #解析数据
    douban=soup.find_all('div',class_='item')
    #获取标签全部数据
    try:
        for x in douban:
            #写一个循环把数据对象转化成tag
            Number=x.find('em').text
            #取其em标签,为序列号
            movie_title=x.find(class_='title').text
            #取其title元素,为电影片名
            rating=x.find(class_='rating_num').text
            #取其rating_num元素为评分
            recommended=x.find(class_='inq').text
            #取其inq元素,为推荐语
            douban_url=x.find('a')
            #取其a标签,为链接做铺垫
            URL=douban_url['href']
            #取其a标签的属性名,为链接
            print(Number+'.',movie_title,rating+'分'+'\n','推荐语:'+recommended+'\n'+URL)
            # 打印所有内容
            all = '\n'+Number + '.', movie_title, rating + '分' + '\n', '推荐语:' + recommended + '\n' + URL
            #为写入本地准备
            with open('6.txt', 'a+',encoding='utf-8')as file:
                #为了避免打开文件后忘记关闭,占用资源或当不能确定关闭文件的恰当时机的时候,我们可以用到关键字with
                sep = ''
                #把输入传到sep写入本地
                file.write(sep.join(all))
                #字符串合并写入本地

    except AttributeError:#报错没有影评的跳过
        print('没有影评,跳过')
分享到 :
相关推荐

零基础Python开发教程

这是一套为零基编程学习者撰写的Python入门教程。从初学者的角度出发,通过能和小白...

python微信随机发送表情包-催债利器

这一版我升级了随机表情包,不那么单调,升级了随机秒数防止微信屏蔽图片原版:女朋友生气...

价值百元的Python二级考试题库「附带答案」

软件介绍:不久以前,“Python”出现在了计算机二级考试科目中,Python在全国...

网易云课堂-零基础:21天搞定Python分布式爬虫

课程介绍:本课程完全从零基础出发,只要你有一点Python基础就可以听懂本课程!课程...

女朋友生气了怎么办?用Python发1万句我爱你哄好

说明:女朋友生气了让你给她发1000句道歉怎么办,用python的itchat模块,...

python爬取周杰伦200首隐藏歌曲

获取歌单文件:经过检查我们发现歌曲并不在网页源码中,既然不是媒体文件,自然只会是在X...