爬取猫眼电影榜单信息(翻页)

一. 获取url及headers

首先进入猫眼电影首页: 猫眼电影

之后点击菜单栏的 榜单 并在下面选择 TOP100榜

接着右击检查并刷新界面,在Network中找到4的加载文件,并双击打开获取右侧的url以及其他的headers信息

# 获取网页响应内容
def get_html(url):# 不能证明你是一个完整的浏览器用户headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome''/91.0.4472.114 Safari/537.36','Cookie': '__mta=252484534.1624686891066.1624687766500.1624687767500.10; uuid_n_v=v1; uuid=051E3230D643''11EBAD8677F166774E1C31527601D00A4827A818F22ED6663F50; _csrf=497ac6cb2543d3c99f7fd59acd4badb44''51d9e25e35637501cb8be564a0ce589; _lxsdk_cuid=17a46e28f16c8-045656e4dec5c6-6373267-144000-17a46''e28f16c8; _lxsdk=051E3230D64311EBAD8677F166774E1C31527601D00A4827A818F22ED6663F50; _lx_utm=utm_''source%3DBaidu%26utm_medium%3Dorganic; Hm_lvt_703e94591e87be68cc8da0da7cbd0be2=1624686891,162468''7015,1624687757; __mta=252484534.1624686891066.1624687746239.1624687759636.7; Hm_lpvt_703e94591e''87be68cc8da0da7cbd0be2=1624687767; _lxsdk_s=17a46e28f16-29d-098-66d%7C%7C36','Host': 'maoyan.com','Referer': 'https://maoyan.com/board/2',}response = requests.get(url, headers=headers)if response.status_code == 200:print("请求成功")return response.textreturn None

二. 利用正则获取电影信息

首先我们点击Elements查看网页信息,并在其中找到相对应的电影信息

之后利用正则分组匹配匹配出各个需要的信息

z = '<dd.*?board-index.*?">(.*?)</i>.*?href="(.*?)".*?title="(.*?)".*?>.*?<img.*?data-src="(.*?)".*?alt.*?/>' \'.*?<div.*?class="movie-item-info">.*?<p.*?class="star">(.*?)</p>.*?class="releasetime">(.*?)</p>' \'.*?"integer">(.*?)</i>.*?"fraction">(.*?)</i>.*?</dd>'

之后在把各个信息提取出来

def parse_html():z = '<dd.*?board-index.*?">(.*?)</i>.*?href="(.*?)".*?title="(.*?)".*?>.*?<img.*?data-src="(.*?)".*?alt.*?/>' \'.*?<div.*?class="movie-item-info">.*?<p.*?class="star">(.*?)</p>.*?class="releasetime">(.*?)</p>' \'.*?"integer">(.*?)</i>.*?"fraction">(.*?)</i>.*?</dd>'html = get_html(url.format(i * 10))   # 此处为下面的翻页处理result = re.findall(z, html, re.S)# print(result)for i in result:movies_ranking = i[0]  # 电影排名movies_link = "https://maoyan.com" + i[1]  # 电影链接movies_name = i[2]  # 电影名称img_url = i[3].split('@')[0]  # 图片链接name = i[4].strip()  # 主演信息movies_time = i[5]  # 上映时间movies_score = i[6] + i[7]  # 电影评分

三. 处理翻页部分

首先这里我们选出五页的url进行比对分析

https://maoyan.com/board/4?             # 第一页
https://maoyan.com/board/4?offset=10    # 第二页
https://maoyan.com/board/4?offset=20    # 第三页
https://maoyan.com/board/4?offset=30   # 第四页
https://maoyan.com/board/4?offset=40   # 第五页

通过比较五个页面的url我们可以发现在参数offset值上从0开始每页递增10,虽然第一页没有显示参数,但是将参数添加进去后在打开网页,我们发现依旧是第一页,所以规律成立

所以在构建url时我们将参数部分用花括号{}先代替,之后再循环加入

url = 'https://maoyan.com/board/4?offset={}'
    for i in range(10):print("正在爬取第{}页".format(i + 1))  # 提示信息... html = get_html(url.format(i * 10))  # 翻页处理

四. 数据的保存

这里我们将数据保存到excel里面

from openpyxl import workbookwb = workbook.Workbook()  # 创建excel对象
ws = wb.active  # 激活当前excel对象
ws.append(['排名', '电影链接', '电影名', '图片链接', '主演信息', '上映时间', '评分'])
...
wb.save('猫眼.xlsx')

五.全部代码及效果展示

import requests
import re
from openpyxl import workbookwb = workbook.Workbook()  # 创建excel对象
ws = wb.active  # 激活当前excel对象
ws.append(['排名', '电影链接', '电影名', '图片链接', '主演信息', '上映时间', '评分'])def get_html(url):# 不能证明你是一个完整的浏览器用户headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome''/91.0.4472.114 Safari/537.36','Cookie': '__mta=252484534.1624686891066.1624687766500.1624687767500.10; uuid_n_v=v1; uuid=051E3230D643''11EBAD8677F166774E1C31527601D00A4827A818F22ED6663F50; _csrf=497ac6cb2543d3c99f7fd59acd4badb44''51d9e25e35637501cb8be564a0ce589; _lxsdk_cuid=17a46e28f16c8-045656e4dec5c6-6373267-144000-17a46''e28f16c8; _lxsdk=051E3230D64311EBAD8677F166774E1C31527601D00A4827A818F22ED6663F50; _lx_utm=utm_''source%3DBaidu%26utm_medium%3Dorganic; Hm_lvt_703e94591e87be68cc8da0da7cbd0be2=1624686891,162468''7015,1624687757; __mta=252484534.1624686891066.1624687746239.1624687759636.7; Hm_lpvt_703e94591e''87be68cc8da0da7cbd0be2=1624687767; _lxsdk_s=17a46e28f16-29d-098-66d%7C%7C36','Host': 'maoyan.com','Referer': 'https://maoyan.com/board/2',}response = requests.get(url, headers=headers)if response.status_code == 200:print("请求成功")return response.textreturn Nonedef parse_html():for i in range(10):print("正在爬取第{}页".format(i + 1))z = '<dd.*?board-index.*?">(.*?)</i>.*?href="(.*?)".*?title="(.*?)".*?>.*?<img.*?data-src="(.*?)".*?alt.*?/>' \'.*?<div.*?class="movie-item-info">.*?<p.*?class="star">(.*?)</p>.*?class="releasetime">(.*?)</p>' \'.*?"integer">(.*?)</i>.*?"fraction">(.*?)</i>.*?</dd>'html = get_html(url.format(i * 10))result = re.findall(z, html, re.S)# print(result)for i in result:movies_ranking = i[0]  # 电影排名movies_link = "https://maoyan.com" + i[1]  # 电影链接movies_name = i[2]  # 电影名称img_url = i[3].split('@')[0]  # 图片链接name = i[4].strip()  # 主演信息movies_time = i[5]  # 上映时间movies_score = i[6] + i[7]  # 电影评分print("电影排名:" + movies_ranking)print("电影链接:" + movies_link)print("电影名称:" + movies_name)print("图片链接:" + img_url)print("主演信息:" + name)print("上映时间:" + movies_time)print("电影评分:" + movies_score)my_list = [movies_ranking, movies_link, movies_name, img_url, name, movies_time, movies_score]ws.append(my_list)if __name__ == '__main__':url = 'https://maoyan.com/board/4?offset={}'parse_html()wb.save('猫眼.xlsx')

结果展示:

Python全栈开发-Python爬虫-05 爬取猫眼电影榜单信息相关推荐

  1. 使用PHP+QueryList 爬取猫眼电影榜单信息

    爬虫是我一直以来跃跃欲试的技术,现在的爬虫框架很多,比较流行的是基于python,nodejs,java,C#的的框架,其中又以基于python的爬虫流行最为广泛,还有的已经是一套傻瓜式的软件操作,如 ...

  2. 正则爬取猫眼电影榜单信息

    预期效果 代码实现 import requests from requests.exceptions import RequestException import re import jsondef ...

  3. 【python爬虫自学笔记】(实战)----爬取猫眼电影榜单Top100

    目的:爬取猫眼电影榜单TOP100的信息并保存在文档中. 查看网站结构,确定思路: 首先请求网页的地址为maoyan.com/board/4,电影信息的内容包含在一个个dd标签之中,分析dd标签中的内 ...

  4. 利用requests库和Xpath爬取猫眼电影榜单【Python】

    博主的前几篇有关定向网络爬虫的博客,在解析HTML界面时,都是运用了BeautifulSoup和re库进行解析,这篇博客写一下怎么用Xpath语法进行HTML界面解析,从而得到我们想要的结果. 说明 ...

  5. 利用python爬取猫眼电影榜单TOP100

    代码如下 import re import requests import json #from multiprocessing import Pool # 多进程#url = 'https://ma ...

  6. Python爬取猫眼电影榜单评分,以及评论

    猫眼电影评论爬取 [目标] (1)爬取榜单电影名称以及评分,简单的数据可视化. (2)爬取< 你好,李焕英>的评论,用词云显示 第一步:了解反爬机制: 1.请求过多,ip地址会被封掉24h ...

  7. python战反爬虫:爬取猫眼电影数据 (一)(Requests, BeautifulSoup, MySQLdb,re等库)

    姓名:隋顺意 博客:Sui_da_xia 微信名:世界上的霸主 本篇文章未涉及猫眼反爬,主要介绍爬取无反爬内容,战反爬内容请去 python战反爬虫:爬取猫眼电影数据 (二)(Requests, Be ...

  8. python战反爬虫:爬取猫眼电影数据 (二)(Requests, BeautifulSoup, MySQLdb,re等库)

    姓名:隋顺意 博客:Sui_da_xia 微信名:世界上的霸主 本文主要介绍破解反爬,可以先去上一篇观看爬取无反爬内容 python战反爬虫:爬取猫眼电影数据 (一)(Requests, Beauti ...

  9. python战反爬虫:爬取猫眼电影数据 (一)

    非常荣幸邀请到 赛迪人工智能大赛(简称AI世青赛)全球总决赛银奖的获得者 隋顺意 小朋友为本公众号投稿,隋小朋友虽然小小年纪,但编程能力已经比大多数大学生强非常多了,欢迎大家关注,捧场. 姓名:隋顺意 ...

最新文章

  1. Centos 内存占满 释放内存
  2. 树套树 ---- 树状数组套权值线段树模板题 P2617 Dynamic Rankings 动态第K大
  3. 简易数字频率计(verilog HDL设计)(2020维护版本)
  4. eclipse 无法解析导入 javax.servlet 的解决方法
  5. 自学python还是报班-转行Python开发自学还是报班?老男孩全日制学习
  6. caddy php sock,Caddy环境下一些Web应用程序的配置参考
  7. springboot集成springDataJpa
  8. 知乎万赞:人并不是活一辈子,而是活几个瞬间
  9. 计算机网络之数据链路层:4、流量控制和可靠传输机制(停止等待协议、后退N帧协议、选择重传协议)
  10. jQuery——入门(三)JQuery DOM操作(核心处理和文档处理)
  11. 使用LINQ遇到的问题,请高手解答下原理
  12. eclipse 中配置外部 tomcat 的debug
  13. Python不能做游戏?游戏实战之-----《ink spill》(附游戏完整源码)
  14. 卸载掉360之后无法删除360safe文件夹解决办法!
  15. 览沃livox_大疆览沃浩界(Livox Horizon)激光雷达测评
  16. 服务器装系统不识别硬盘分区,安装系统无法识别分区解决方法
  17. r语言 rgl 强制过程中_R语言正则表达式:提取括号中的内容
  18. UltraCompare 21 for Mac(mac文本对比工具)
  19. 屌炸天的SpringBoot2 +WxJava 整合微信
  20. 用matlab软件心得体会,MATLAB软件实训报告 - 图文

热门文章

  1. vue js打印并去掉页眉和页脚
  2. Spring新版本抛弃JVM,可独立部署,网友:要自立门户???
  3. centos linux 包管理,Linux和CentOS软件包管理
  4. 计算机音乐乐谱童话镇,童话镇曲谱
  5. C语言主编李念,李念远大前程剧照走红 自曝为角色爱上旗袍与国粹
  6. word在另外计算机格式不对,为什么word 2007文件在不同电脑上排版显示不同?应该如何解决?...
  7. 《Go web编程》ChitChat论坛
  8. python在服务器上运行慢_服务器响应慢问题
  9. Android 11.0 系统默认授予app安装权限(去掉app首次运行时权限授权弹窗)
  10. 2020大学生网络知识大赛总决赛个人12——18急救包(最后还是肝完了,累~)