Python入门之爬取电影信息

本文介绍了如何使用Python爬取基于ajax跳转的电影信息网页,包括分析网页结构、请求json文件、提取电影名称、电影排名、首日票房等信息,同时处理了反爬虫问题。
摘要由CSDN通过智能技术生成

爬取电影信息

***摘要:***之前爬取过基于html跳转的豆瓣TOP250的电影,以及基于ajax跳转的美团的评论,这次将介绍如何爬取基于html和ajax两种跳转方式且含有反爬虫程序和异常值的电影信息网页
**目标网站:**http://movie.mtime.com/boxoffice/#CN/2018

1、分析网页

	打开网页后,向下滑,根据页面分析可知,该网站每一年有100部电影,且有10个页面,每个页面有10部。

fly

1.1 爬取目标

fly

1.2 对2018年的电影的部分页面进行分析与对比

fly
对比可以发现,在2018年的电影里面,无论是哪个页面,它的网址都没有改变。
分析结果:
据以上结果可看出,当点击选择到2018年的电影信息,并进行切换时,链接都为
http://movie.mtime.com/boxoffice/#CN/2018
切换网页时链接没有发生改变,说明在2018年的电影信息这个部分,网页是基于ajax跳转的,可以利用抓包技术对网页进行爬取。

1.3 分析点击2018年时10个页面的json文件

1.3.1 寻找json文件

在2018年电影页面右键找到检查–>Network–>选中需要的页面–>点击文件:fly
第一个文件就为json文件,选中文件,右键copy–>copy link address:
fly
2018年时第一个页面的json文件链接为:

http://movie.mtime.com/boxoffice/?year=2018&area=china&type=MovieRankingYear&category=all&page=0&display=list&timestamp=1586871242566&version=07bb781100018dd58eafc3b35d42686804c6df8d&dataType=json

2018年时第二个页面的json文件链接为:

http://movie.mtime.com/boxoffice/?year=2018&area=china&type=MovieRankingYear&category=all&page=1&display=list&timestamp=1587188701100&version=07bb781100018dd58eafc3b35d42686804c6df8d&dataType=json

2018年时第十个页面的json文件链接为:

http://movie.mtime.com/boxoffice/?year=2018&area=china&type=MovieRankingYear&category=all&page=9&display=list&timestamp=1587188842026&version=07bb781100018dd58eafc3b35d42686804c6df8d&dataType=json

对比三个链接可以发现有两个地方不同:
fly
因为我们找的是第一页,第二页和第十页的链接,所以此处的0,1,9表示的是第一页,第二页和第十页
fly
此处的timestamp是时间戳。

1.4 请求并筛选我们需要的信息

1.4.1 导入需要用的库
import requests,csv,time, re
from lxml import etree
1.4.2 设置浏览器代理,构造字典,向服务器请求json文件
# 导入需要的库
import csv,requests,time
from lxml import etree
# 设置浏览器代理,构造字典
headers={
   
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.92 Safari/537.36'
    
}
#此处的url暂时放入的是page=0时,2018年的电影信息第一页
url="http://movie.mtime.com/boxoffice/?year=2018&area=china&type=MovieRankingYear&category=all&page=0&display=list&timestamp=1587124108705&version=07bb781100018dd58eafc3b35d42686804c6df8d&dataType=json"
requests.get(url=url,headers=headers).text

运行结果如下:fly
之所以会出现乱码,是因为遇到了反爬虫程序,所以请求的json文件内容为乱码。
.text去掉,再次运行:
fly
结果为200才是运行成功,所以此时我们需要为json文件找一个“身份证”,即cookie值。

1.4.2.1 寻找cookie值

右键–>检查–>Network–>选中需要的页面–>headers–>下拉找到cookie:
fly
利用cookie解决请求json源代码时返回乱码的问题
什么是cookie?
相当于一个能够成功访问网页内容的钥匙,有了这个钥匙,在面对反爬虫程序时,我们就能成功破解反爬虫程序,使得请求源代码时成功返回内容,而不再返回乱码

将cookie值构造为字典:

# 导入需要的库
import csv,requests,time
from lxml import etree
# 设置浏览器代理,构造字典
#同时构造多个字典时,字典之间要用逗号隔开(不是在最后一个字典结尾加)
headers={
   
   'Cookie':'_userCode_=20204181236133602; _userIdentity_=20204181236135645; userId=0; defaultCity=%25E5%258C%2597%25E4%25BA%25AC%257C290; _ydclearance=548f63b0a9eafb4499bcc9f2-2f5a-4569-8e14-35d82c84daf5-1587191747; _tt_=8DBF2DEB13DB835B64579E70790BBE50; Hm_lvt_6dd1e3b818c756974fb222f0eae5512e=1587184575; __utmc=221034756; __utmz=221034756.1587184575.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utma=221034756.1067809064.1587184575.1587184575.1587186771.2; Hm_lpvt_6dd1e3b818c756974fb222f0eae5512e=1587188372; __utmb=221034756.20.10.158718677',
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.92 Safari/537.36'
    
}
#此处的url暂时放入的是page=0时,2018年的电影信息第一页
url="http://movie.mtime.com/boxoffice/?year=20
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值