python实例,爬取猫眼电影的几大类排行榜,并存储excel

mac2025-06-04  15

抓取的内容:猫眼电影五个榜单中的第一页数据

使用模块含BeautifulSoup4、requests、pandas、xlsxwriter

首先需要安装BeautifulSoup模块,其他模块安装方法类同 安装方法: win + r 打开运行窗口输入cmd 黑窗输入 where python cd 进入工作目录下,输入 pip install BeautifulSoup4

出现下图即安装成功

import requests from bs4 import BeautifulSoup import pandas import xlsxwriter menuList = [1,2,4,6,7] #用这个列表组装请求地址 urlList = [] #存储请求地址列表 allLis = {} #总字典 def getUrlList(url): ''' 处理组装url ''' for i in menuList: urlList.append(url.format(i)) if len(urlList) > 0 : return 0 else: return -1 def getSinglePage(url): ''' 主函数 ''' if getUrlList(url) == 0 : for val in urlList: single = {} smallList = [] headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'}#从页面中拿取的User-Agent,如果不加头部信息,会被浏览器拦截,出现403的情况 res = requests.get(val,headers=headers).text #模拟浏览器请求 requests.encoding = 'utf-8' #以utf-8编码格式拿取 soup = BeautifulSoup(res,'html.parser') #以'html.parser'去解析所拿到的文本内容 soupList = soup.select('dd') #抓取页面元素中dd标签 for i in soupList: #单字典处理,分别抓取所有需要字段 single['排名'] = i.select('dd i')[0].text single['电影名']=i.select('.name a')[0].text single['主演'] = i.select('.star')[0].text single['上映时间'] = i.select('.releasetime')[0].text smallList.append(single)#通过append向smallList中添加数据 single = {}#为了防止循环所有结果后single指向相同,导致结果出现误差,每次循环后重新给其赋值 allLis[getTitles(val.split('/')[-1])] = smallList #拆分url,吊桶函数匹配字典key值 smallList = [] #也是为了防止指向相同,结果失常 writeExcel(allLis) def getTitles(val): ''' 手动switch,通过url路径分割,匹配titles ''' switer = { '7':'热映口碑榜', '6':'最受期待榜', '1':'国内票房榜', '2':'北美票房榜', '4':'TOP10榜'} return switer.get(val) def writeExcel(Ols): ''' 写入excel ''' tables = pandas.DataFrame(Ols) #使用pandas去处理我们的数据 tables.to_excel('MovieRank.xlsx') getSinglePage('https://maoyan.com/board/{}') #调用主函数

最后,运行代码。就会在当前工作目录生成一个名为MovieRank.xlsx的excel文件

初学python,请多指教

最新回复(0)