打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
python爬虫练习,爬取豆瓣最受欢迎的250部电影,并保存至excel
userphoto

2022.11.06 浙江

关注

简介

目标:使用 BeautifulSoup + Reuqests,爬取豆瓣上评分最高的250部电影,并保存到excel表格中。

requests库,参考前面文章:python爬虫之reuqests库

BeautifulSoup库,参考前面文章:python爬虫之Beautiful Soup库

一、创建xls表格

需要用到xlwt库,没安装的话,安装即可

pip install xlwt

创建空表格#创建一个excel表格,定义编码为utf-8,默认为ASCII编码excl=xlwt.Workbook(encoding='utf-8')movie=excl.add_sheet('movie top 250')movie.write(0,0,'排名')movie.write(0,1,'名称')movie.write(0,2,'导演演员')movie.write(0,3,'评分')movie.write(0,4,'链接')

二、创建请求函数

这里创建douban_re的函数,包括链接和headers,用于访问页面。

def douban_re(url): headers={'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko)Chrome/65.0.3325.162 Safari/537.36'} re=requests.get(url=url,headers=headers) return re.text

三、提取数据并存入excel表格

同样创建一个函数,BeatifulSoup 解析数据,然后用循环的方式依次追加内容到表中。

需要先分析页面信息

获取页面内容,具体可以参考文章:python爬虫之Beautiful Soup库def write_excel(soup):    list=soup.find(class_='grid_view').find_all('li')    for item in list:        item_num=item.find('em').string        item_name=item.find(class_='title').string        item_act=item.find('p').text.replace(' ','')        item_sc=item.find(class_='rating_num').string        item_link=item.find('a')['href']        #print('排名:'+item_num,'\n电影名称:'+item_name,item_act,item_sc,item_link)        #获取内容循环追加到表中。        global n        movie.write(n,0,item_num)        movie.write(n,1,item_name)        movie.write(n,2,item_act)        movie.write(n,3,item_sc)        movie.write(n,4,item_link)        n = n+1

四、循环多个页面的内容

分析网址信息:

#首页https://movie.douban.com/top250?start=0&filter=#第二页https://movie.douban.com/top250?start=25&filter=#第三页https://movie.douban.com/top250?start=50&filter=

可以发现就start=25的数字不同,同样用循环的方式依次访问页面即可。

创建访问页面函数main,在后面调取循环的页面数即可。def main(page):    url='https://movie.douban.com/top250?start='+str(page*25)+'&filter='    #url='https://movie.douban.com/top250'    html=douban_re(url)    soup=BeautifulSoup(html,'lxml')    write_excel(soup)if __name__=='__main__':    for i in range(0,10):        main(i)

五、完整代码

import requestsfrom bs4 import BeautifulSoupimport xlwtexcl=xlwt.Workbook(encoding='utf-8')movie=excl.add_sheet('movie top 250')movie.write(0,0,'排名')movie.write(0,1,'名称')movie.write(0,2,'导演演员')movie.write(0,3,'评分')movie.write(0,4,'链接')n=1def douban_re(url): headers={'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko)Chrome/65.0.3325.162 Safari/537.36'} re=requests.get(url=url,headers=headers) return re.textdef write_excel(soup): list=soup.find(class_='grid_view').find_all('li') for item in list: item_num=item.find('em').string item_name=item.find(class_='title').string item_act=item.find('p').text.replace(' ','') item_sc=item.find(class_='rating_num').string item_link=item.find('a')['href'] #print('排名:'+item_num,'\n电影名称:'+item_name,item_act,item_sc,item_link) global n movie.write(n,0,item_num) movie.write(n,1,item_name) movie.write(n,2,item_act) movie.write(n,3,item_sc) movie.write(n,4,item_link) n = n+1def main(page): url='https://movie.douban.com/top250?start='+str(page*25)+'&filter=' #url='https://movie.douban.com/top250' html=douban_re(url) soup=BeautifulSoup(html,'lxml') write_excel(soup)if __name__=='__main__': for i in range(0,10): main(i)excl.save('movie_top_250.xls')

最后excl.save保存并命令即可,注:xlwt只能创建保存为xls格式的表,不能保存xlsx格式的表格

执行结果,得到一个名称为movie_top_250.xls的表格,打开表格。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
python爬虫08 | 你的第二个爬虫,要过年了,爬取豆瓣最受欢迎的250部电影慢慢看
单线程、多线程和协程的爬虫性能对比
用python实现一个抓取腾讯电影的爬虫
python爬取44130条用户观影数据,分析挖掘用户与电影之间的隐藏信息!
Python爬虫入门保姆级教程!看完不会来找我
小白喜提python爬虫(一)看完即会,大神请绕路或是莅临指导!!
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服