感觉上个程序局限性比较大,改了一下,可以选择提取哪部分内容,以及提取多少页,从哪一页开始提取
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,推荐语:满满温情的高雅喜剧。,链接: 。
还可以改进一下,比如把排序这几个字去掉,或者空格都去掉,想到的办法是用循环,但感觉有增加了运算量。
改了一下错