[爬虫项目]猫眼电影TOP100

一、项目背景

在学习之余需要放松身心,也需要得到有意义的提升,看电影成为大学生放松身心最主要的一种方法之一,此次项目收集了在猫眼电影上排名前100的电影,对电影进行筛选,即评分从高到低。
python版本:3.8
IDE:pycharm2021.1.1
要用到的库在cmd输入下载:pip install 库名 -i https://pypi.douban.com/simple
爬取的网站:https://www.maoyan.com/board/4

二、项目代码

2.1 相关包的导入

对程序中用到的库进行引入

import time  # 记录时间
import requests  # 得到服务器上的回复
from lxml import etree  # 对EXCEL表进行写操作
import xlwt  # 对EXCEL表进行读操作
from pyecharts import options as opts # python图形库
from pyecharts.charts import Bar  # 条形图,数据展示的样式
from pyecharts.charts import Pie  # 饼状图,数据展示的样式
import pandas as pd  # 数据分析,提取数据
import matplotlib.pyplot as plt  # 数据分析,展示数据
import wordcloud  # 词云库
import numpy as np  # 数字库

requests:用来抓取网页的HTML源代码
xlwt : 对EXCEL表进行读操作
lxml:对EXCEL表进行写操作
pandas:数据分析
pyecharts:用于生成 Echarts 图表的类库,其中Bar、Pie分别是将数据生成条形图、饼状图
wordcloud:词云库

2.2数据提取

影片详情链接的规则。所需要的字段在chrome用开发者工具查看网页源码,找到需要字段的相应位置:
第一步:打开chrome,右击检查,会出现元素栏
在这里插入图片描述

在这里插入图片描述

第二步:找到所需字段的相应位置,然后按照下图选项点击复制
在这里插入图片描述
在这里插入图片描述

    for page_html in board_html:
        img_link.extend(page_html.xpath('//img/@data-src'))
        film_link.extend(page_html.xpath('//*[@id="app"]/div/div/div[1]/dl/dd/div/div/div[1]/p[1]/a/@href'))
        film_name.extend(page_html.xpath('//*[@id="app"]/div/div/div[1]/dl/dd/div/div/div[1]/p[1]/a/@title'))
        star_org.extend(page_html.xpath('//*[@id="app"]/div/div/div[1]/dl/dd/div/div/div[1]/p[2]/text()'))
        releastime_org.extend(page_html.xpath('//*[@id="app"]/div/div/div[1]/dl/dd/div/div/div[1]/p[3]/text()'))
        integer.extend(page_html.xpath('//*[@id="app"]/div/div/div[1]/dl/dd/div/div/div[2]/p/i[1]/text()'))
        fraction.extend(page_html.xpath('//*[@id="app"]/div/div/div[1]/dl/dd/div/div/div[2]/p/i[2]/text()'))

2.3 爬取数据

进行数据爬取的编写

  • 定义爬取的url
    header用chrome的开发者工具获得:
    第一步:打开chrome,按F12,选择网络(Network)
    在这里插入图片描述

第二步:重新访问该网站,点击第一个网络请求,查看它所对应的标头(header)
在这里插入图片描述

  • 爬取数据
  • 保存数据(xls或db)

2.4函数体

2.4.1 爬取网页

def scraping():
    board_urls = ['https://maoyan.com/board/4?offset={0}'.format(i) for i in range(0, 100, 10)]  # format(i)替代{}里面的值
    # 'User-Agent':模拟浏览器访问
    # 'Cookie':模拟登录,绕过滑动拼图验证
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) '
                      'Chrome/84.0.4147.105 Safari/537.36',
        'Cookie': 'mta=222214055.1603977692790.1605667197555.1605667216476.84; uuid_n_v=v1; '
                  'uuid=A8B9B7F019E911EB9D95490677AB0FF651894580EC0942CDA95D1D5CD9BEE13D; '
                  '_lxsdk_cuid=175748545b3c8-0d6dc6ca2c5b4d-3c634103-144000-175748545b3c8; '
                  '_lxsdk=A8B9B7F019E911EB9D95490677AB0FF651894580EC0942CDA95D1D5CD9BEE13D; '
                  '_lx_utm=utm_source%3DBaidu%26utm_medium%3Dorganic; '
                  '__mta=222214055.1603977692790.1605606918555.1605606922430.33; '
                  '_csrf=e50e37a20022fed414d7d479d61fb627bd72f61c2be692b12edc786fdb91dea2; '
                  'Hm_lvt_703e94591e87be68cc8da0da7cbd0be2=1604192299,1605603303,1605612340,1605665922; '
                  'Hm_lpvt_703e94591e87be68cc8da0da7cbd0be2=1605667216; _lxsdk_s=175d9259dda-76-0bc-84b%7C%7C32'}

2.4.2 获取网页内容

    # 获得全部页面信息存入列表中
    board_html = []
    for board_url in board_urls:  # 遍历刚才网页获取的值
        board_url_data = requests.get(board_url, headers=headers)
        board_url_html = etree.HTML
  • 1
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值