抓取的内容:猫眼电影五个榜单中的第一页数据
使用模块含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,请多指教