一、观察网页
(一)观察单页
1、打开Google浏览器,找到豆瓣电影Top250的网址(https://movie.douban.com/top250)。2、确定要爬取的这个html页面是动态页面还是静态页面,静态页面是可以直接爬取的,动态页面需要从js或者XHR里面去找动态的json数据。本次爬取的网页本质上还是静态的,因为内容都在页面里,我们不需要去js或者xhr里面找数据。
(二)观察翻页规律
翻看不同页数,找出不同页数的网址规律,以便后续循环。
第1页:https://movie.douban.com/top250?start=0&filter=
第2页:https://movie.douban.com/top250?start=25&filter=
第3页:https://movie.douban.com/top250?start=50&filter=
二、请求数据
在向服务器发送请求之前,需要知道请求方式,通过观察Headers的数据,得到网页的URL以及网页的请求方式为GET请求,于是通过requests库来请求数据。加入For循环语句,利用前面观察到的网页的规律表示URL,这样就能得出10页的全部数据,代码如下:
#用户浏览器信息 headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36'} lst=[['编号','名称','推荐语','评分','链接地址']] #列表中共有5个元素,分别对应excel中的5列 for i in range(10): #向服务器发送请求 resp=requests.get('https://movie.douban.com/top250?start='+str(i*25)+'&filter=',headers=headers)
三、解析数据
得到数据后,要对获取的所有数据进行解析,筛选出我们所需要的数据。通过检查网页,我们发现所有的电影名称信息都存储在span标签中,class为title,以此类推分别找出电影编号、推荐语、评分和超链接的标签,利用BeautifulSoup库的find、find_all函数找出这些数据。
代码如下:
from bs4 import BeautifulSoup bs=BeautifulSoup(resp.text,'html.parser')#解析器为html.parser grid_view=bs.find('ol',{'class':'grid_view'})#提取ol中的所有内容 all_li=grid_view.find_all('li') for item in all_li: no=item.find('em') #电影的标号 title=item.find('span',class_='title') #电影的名称 inq=item.find('span',class_='inq') #电影的推荐语 rat=item.find('span',class_='rating_num') #获取评分 url_films=item.find('a')['href']#获取超链接 lst.append([no.text,title.text,inq.text if inq!=None else '',rat.text,url_films])#将数据存储到列表中
四、保存数据
将爬取的数据存储为名为films的Excel文件,采用openpyxl库。代码如下:
import openpyxl #将数据存储到列表中 wb=openpyxl.Workbook() #创建工作表(对应文件中的一个sheet页) sheet=wb.active #为工作表起名 sheet.title='豆瓣电影TOP250' #向工作表中添加数据 for item in lst: sheet.append(item) #保存到本地 wb.save('films.xlsx')
五、全套代码
import requests import openpyxl from bs4 import BeautifulSoup #用户浏览器信息 headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36'} lst=[['编号','名称','推荐语','评分','链接地址']] #列表中共有5个元素,分别对应excel中的5列 for i in range(10): #向服务器发送请求 resp=requests.get('https://movie.douban.com/top250?start='+str(i*25)+'&filter=',headers=headers) bs=BeautifulSoup(resp.text,'html.parser') grid_view=bs.find('ol',{'class':'grid_view'})#提取ol中的所有内容 all_li=grid_view.find_all('li') for item in all_li: no=item.find('em') #电影的标号 title=item.find('span',class_='title') #电影的名称 inq=item.find('span',class_='inq') #电影的推荐语 rat=item.find('span',class_='rating_num') #获取评分 url_films=item.find('a')['href']#获取超链接 lst.append([no.text,title.text,inq.text if inq!=None else '',rat.text,url_films])#将数据存储到列表中 wb=openpyxl.Workbook() #创建工作表(对应文件中的一个sheet页) sheet=wb.active #为工作表起名 sheet.title='豆瓣电影TOP250' #向工作表中添加数据 for item in lst: sheet.append(item) #保存到本地 wb.save('films.xlsx')
最后得出的Excel文件如下图,得到了豆瓣Top250的电影排名、电影名称、推荐语、评分以及对应的超链接,爬取数据成功。
以上就是“Python获取豆瓣Top250的电影基本信息”的全部内容,希望对你有所帮助。
关于Python技术储备
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、Python必备开发工具
三、Python视频合集
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
四、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
五、Python练习题
检查学习结果。
六、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
最后祝大家天天进步!!
上面这份完整版的Python全套学习资料已经上传至CSDN官方,朋友如果需要可以直接微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。