由于疫情关系,宅在家里。记录一下作业,猫眼电影爬虫及分析,爬取猫眼电影数据,并对爬取的数据进行分析和展示。
猫眼电影爬虫
基于requests库和lxml库进去猫眼电影TOP100榜电影爬取,爬取地址为:https://maoyan.com/board/4
爬取的信息有:电影名字,主演名字,上映时间以及地点,猫眼评分得分,电影类型,电影时长。
电影数据保存为.csv格式。表头:电影名字(title),主演名字(author),上映时间以及地点(pub_time),猫眼评分得分(star),电影类型(style),电影时长(long_time)。
import requests
from lxml import etree
import csv
headers = {
# 设置header
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36'
}
def get_url(url): # top100电影获取
res = requests.get(url, headers=headers) # 请求
# print(res.text)
html = etree.HTML(res.text) # 获取网页源码
infos = html.xpath('//dl[@class="board-wrapper"]/dd') # 获取页面的10部电影,xpath
for info in infos:
title = info.xpath('div/div/div[1]/p[1]/a/text()')[0] # 电影名称
author = info.xpath('div/div/div[1]/p[2]/text()')[0].strip().strip('主演:') # 电影主演,strip()去掉空格
pub_time = info.xpath('div/div/div[1]/p[3]/text()')[0].strip('上映时间:') # 上映时间
star_1 = info.xpath('div/div/div[2]/p/i[1]/text()')[0] # 得分1(整数部分)
star_2 = info.xpath('div/div/div[2]/p/i[2]/text()')[0] # 得分2(小数部分)
star = star_1 + star_2 # 电影得分
movie_url = 'https://maoyan.com' + info.xpath('div/div/div[1]/p[1]/a/@href')[0] # 电影的详细页
# print(title,author,pub_time,star,movie_url)
get_info(movie_url, title, author, pub_time, star) # 进入电影的详细页爬取
print(‘保存完毕!’)
def get_info(url, title, author, pub_time, star): # 电影详细获取
res = requests.get(url, headers=headers)
html = etree