爬豆瓣电影top名单

感觉上个程序局限性比较大,改了一下,可以选择提取哪部分内容,以及提取多少页,从哪一页开始提取

import requests
# 引用BeautifulSoup库
from bs4 import BeautifulSoup

#请求头
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4302.0 Safari/537.36'}
class Douban:
    
    def __init__(self,a=1,b=1,c=1,d=1,e=1):      
        print('若哪个不要,就写0哦,要就写1') 
        a=int(input('要排序吗:'))
        b=int(input('要名字吗:'))
        c=int(input('要评分吗:'))
        d=int(input('要推荐语吗:'))
        e=int(input('要链接吗:'))
        self.name=b
        self.num=a
        self.star=c
        self.comment=d
        self.url=e
     
        
    
    def search(self):
        li=[]
        page=int(input('输入爬取的页数:'))        
        j=int(input('输入初始页码:'))-1
        sum=j+page
        nums=[];names=[];stars=[];comments=[];urls=[];#addresses = []
        
        while j<sum:
            # 获取网址
            address1 = 'https://movie.douban.com/top250?start='+str(j*25)+'&filter='
            address=requests.get(address1+str(j*25)+'&filter=',headers=headers)               	
            #addresses.append(address1)
            #获取数据       
            all_ = BeautifulSoup(address.text,'html.parser')
            #最小父标签
            all_books = all_.find_all('div', class_="item")
            
            j+=1
           
            #序号,名字,评分,推荐语,链接    
            for i in all_books:
                
                if self.num==1:                
                #print(i.text)
                    num = i.find('em',class_="").text
                else:
                    num = ' '
                nums.append(num)
               
                
                if self.name==1:   
                    name = i.find('span', class_="title").text
                else:
                    name=' '
                names.append(name)
            
                
                if self.star==1:               
                    star = i.find('span', class_="rating_num").text
                    
                else:
                    star=' '
                stars.append(star)
                
                if self.url==1:  
                    url = i.find('a')['href']
                    
                else:
                    url=' '
                urls.append(url)
                
                if self.comment==1:
                
                    #判断comment
                    try:
                        comment = i.find('span', class_="inq").text
        
                    except Exception: 
                        comment='这部电影没推荐语哦'
                else:
                    comment=' '
                comments.append(comment)
            
        #print(nums,names,comments,stars,urls)
            #print('所有网址:',addresses,end='\n')
        
        for k in range(len(nums)):
            li.append([nums[k],names[k],stars[k],comments[k],urls[k]])
            #b='排序:{},名称:{},评分:{},推荐语:{},链接:{}。'.format(nums[k],names[k],stars[k],comments[k],urls[k])
        print(li);#print(b)
dou=Douban()
dou.search()

运行结果:

若哪个不要,就写0哦,要就写1
要排序吗:1
要名字吗:1
要评分吗:0
要推荐语吗:1
要链接吗:0
输入爬取的页数:2
输入初始页码:1
[['1', '肖申克的救赎', ' ', '希望让人自由。', ' '], ['2', '霸王别姬', ' ', '风华绝代。', ' '], ['3', '阿甘正传', ' ', ' 一部美国近现代史。', ' '], ['4', '这个杀手不太冷', ' ', '怪蜀黍和小萝莉不得不说的故事。', ' '], ['5', '泰坦尼克号', ' ', '失去的才是永恒的。 ', ' '], ['6', '美丽人生', ' ', '最美的谎言。', ' '], ['7', '千与千寻', ' ', '最好的宫崎骏,最好的 久石让。 ', ' '], ['8', '辛德勒的名单', ' ', '拯救一个人,就是拯救整个世界。', ' '], ['9', '盗梦空间', ' ', '诺兰给了我 们一场无法盗取的梦。', ' '], ['10', '忠犬八公的故事', ' ', '永远都不能忘记你所爱的人。', ' '], ['11', '海上钢琴师', ' ', '每个人都要走一条自己坚定了的路,就算是粉身碎骨。 ', ' '], ['12', '星际穿越', ' ', '爱是一种力量,让我们超越时空感知它 的存在。', ' '], ['13', '楚门的世界', ' ', '如果再也不能见到你,祝你早安,午安,晚安。', ' '], ['14', '三傻大闹宝莱坞', ' ', '英俊版憨豆,高情商版谢耳朵。', ' '], ['15', '机器人总动员', ' ', '小瓦力,大人生。', ' '], ['16', '放牛班的春天', ' ', '天籁一般的童声,是最接近上帝的存在。 ', ' '], ['17', '大话西游之大圣娶亲', ' ', '一生所爱。', ' '], ['18', '熔炉', ' ', '我们一路奋战不是为了改变世界,而是为了不让世界改变我们。', ' '], ['19', '疯狂动物城', ' ', '迪士尼给我们营造的乌 托邦就是这样,永远善良勇敢,永远出乎意料。', ' '], ['20', '无间道', ' ', '香港电影史上永不过时的杰作。', ' '], ['21', ' 教父', ' ', '千万不要记恨你的对手,这样会让你失去理智。', ' '], ['22', '龙猫', ' ', '人人心中都有个龙猫,童年就永远不会 消失。', ' '], ['23', '当幸福来敲门', ' ', '平民励志片。 ', ' '], ['24', '怦然心动', ' ', '真正的幸福是来自内心深处。', ' '], ['25', '触不可及', ' ', '满满温情的高雅喜剧。', ' '], ['26', '控方证人', ' ', '比利·怀德满分作品。', ' '], ['27', '蝙蝠侠:黑暗骑士', ' ', '无尽的黑暗。', ' '], ['28', '活着', ' ', '张艺谋最好的电影。', ' '], ['29', '末代皇帝', ' ', '“不要跟我比惨,我比你更惨”再适合这部电影不过了。', ' '], ['30', '寻梦环游记', ' ', '死亡不是真的逝去,遗忘才是永恒的 消亡。', ' '], ['31', '乱世佳人', ' ', 'Tomorrow is another day.', ' '], ['32', '何以为家', ' ', '凝视卑弱生命,用电影改变命运。', ' '], ['33', '指环王3:王者无敌', ' ', '史诗的终章。', ' '], ['34', '摔跤吧!爸爸', ' ', '你不是在为你一个人 战斗,你要让千千万万的女性看到女生并不是只能相夫教子。', ' '], ['35', '飞屋环游记', ' ', '最后那些最无聊的事情,才是最值得怀念的。 ', ' '], ['36', '少年派的奇幻漂流', ' ', '瑰丽壮观、无人能及的冒险之旅。', ' '], ['37', '哈利·波特与魔法石', ' ', '童话世界的开端。', ' '], ['38', '十二怒汉', ' ', '1957年的理想主义。 ', ' '], ['39', '素媛', ' ', '受过伤害的人总是笑得最开心,因为他们不愿意让身边的人承受一样的痛苦。', ' '], ['40', '哈尔的移动城堡', ' ', '带着心爱的人在天空飞翔。', ' '], ['41', '鬼子来了', ' ', '对敌人的仁慈,就是对自己残忍。', ' '], ['42', '天空之城', ' ', '对天空的追逐,永不停止。 ', ' '], ['43', '大话西游之月光宝盒', ' ', '旷古烁今。', ' '], ['44', '我不是药神', ' ', '对我们国家而言,这样的电影多 一部是一部。', ' '], ['45', '闻香识女人', ' ', '史上最美的探戈。', ' '], ['46', '罗马假日', ' ', '爱情哪怕只有一天。', ' '], ['47', '天堂电影院', ' ', '那些吻戏,那些青春,都在影院的黑暗里被泪水冲刷得无比清晰。', ' '], ['48', '辩护人', ' ', '电影的现实意义大过电影本身。', ' '], ['49', '搏击俱乐部', ' ', '邪恶与平庸蛰伏于同一个母体,在特定的时间互相对峙。', ' '], ['50', '猫鼠游戏', ' ', '骗子大师和执著警探的你追我跑故事。 ', ' ']]

还有一种不用列表的打印方式:

for k in range(len(nums)):
            #li.append([nums[k],names[k],stars[k],comments[k],urls[k]])
            b='排序:{},名称:{},评分:{},推荐语:{},链接:{}。'.format(nums[k],names[k],stars[k],comments[k],urls[k])
        #print(li);
        	print(b)

结果如下:

若哪个不要,就写0哦,要就写1
要排序吗:0
要名字吗:1
要评分吗:1
要推荐语吗:1
要链接吗:0
输入爬取的页数:1
输入初始页码:1
排序: ,名称:肖申克的救赎,评分:9.7,推荐语:希望让人自由。,链接: 。
排序: ,名称:霸王别姬,评分:9.6,推荐语:风华绝代。,链接: 。
排序: ,名称:阿甘正传,评分:9.5,推荐语:一部美国近现代史。,链接: 。
排序: ,名称:这个杀手不太冷,评分:9.4,推荐语:怪蜀黍和小萝莉不得不说的故事。,链接: 。
排序: ,名称:泰坦尼克号,评分:9.4,推荐语:失去的才是永恒的。 ,链接: 。
排序: ,名称:美丽人生,评分:9.5,推荐语:最美的谎言。,链接: 。
排序: ,名称:千与千寻,评分:9.4,推荐语:最好的宫崎骏,最好的久石让。 ,链接: 。
排序: ,名称:辛德勒的名单,评分:9.5,推荐语:拯救一个人,就是拯救整个世界。,链接: 。
排序: ,名称:盗梦空间,评分:9.3,推荐语:诺兰给了我们一场无法盗取的梦。,链接: 。
排序: ,名称:忠犬八公的故事,评分:9.4,推荐语:永远都不能忘记你所爱的人。,链接: 。
排序: ,名称:海上钢琴师,评分:9.3,推荐语:每个人都要走一条自己坚定了的路,就算是粉身碎骨。 ,链接: 。
排序: ,名称:星际穿越,评分:9.3,推荐语:爱是一种力量,让我们超越时空感知它的存在。,链接: 。
排序: ,名称:楚门的世界,评分:9.3,推荐语:如果再也不能见到你,祝你早安,午安,晚安。,链接: 。
排序: ,名称:三傻大闹宝莱坞,评分:9.2,推荐语:英俊版憨豆,高情商版谢耳朵。,链接: 。
排序: ,名称:机器人总动员,评分:9.3,推荐语:小瓦力,大人生。,链接: 。
排序: ,名称:放牛班的春天,评分:9.3,推荐语:天籁一般的童声,是最接近上帝的存在。 ,链接: 。
排序: ,名称:大话西游之大圣娶亲,评分:9.2,推荐语:一生所爱。,链接: 。
排序: ,名称:熔炉,评分:9.3,推荐语:我们一路奋战不是为了改变世界,而是为了不让世界改变我们。,链接: 。
排序: ,名称:疯狂动物城,评分:9.2,推荐语:迪士尼给我们营造的乌托邦就是这样,永远善良勇敢,永远出乎意料。,链接: 。
排序: ,名称:无间道,评分:9.2,推荐语:香港电影史上永不过时的杰作。,链接: 。
排序: ,名称:教父,评分:9.3,推荐语:千万不要记恨你的对手,这样会让你失去理智。,链接: 。
排序: ,名称:龙猫,评分:9.2,推荐语:人人心中都有个龙猫,童年就永远不会消失。,链接: 。
排序: ,名称:当幸福来敲门,评分:9.1,推荐语:平民励志片。 ,链接: 。
排序: ,名称:怦然心动,评分:9.1,推荐语:真正的幸福是来自内心深处。,链接: 。
排序: ,名称:触不可及,评分:9.2,推荐语:满满温情的高雅喜剧。,链接: 。

还可以改进一下,比如把排序这几个字去掉,或者空格都去掉,想到的办法是用循环,但感觉有增加了运算量。

改了一下错

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值