python 爬虫 小电影 不会告诉网址_想看电影不知道看啥,python爬虫告诉你!

闲着在家想看电影,但是猛地不知道要看啥电影,脑子想半天也想不出来一个好电影名字!干脆直接在豆瓣电影上获取最近热门的电影,然后一个一个挨着看打发时间!

获取豆瓣电影信息也是学爬虫的一个入门例子,不知道为啥好多人学爬虫都拿豆瓣电影来练手,一个应该是爬取比较简单,另一个应该是这个平台反爬措施比较low,接下来让我们来看看怎么去实现获取豆瓣电影前200个热门电影信息!

1.请求数据

第一步先打开豆瓣电影网页,分析请求看怎样才能请求到数据。

刷新豆瓣电影网页,从浏览器自带的开发工具network中XHR可以看到各种请求,其中标黄的search_subject?type_movie这个请求就是请求电影信息,下面的type_tv就是请求电视剧信息的。从右边标黄的request url中看到是请求的链接,但参数信息都被编码,用urllib.parse.unquote()方法来进行解码:

解码后的请求连接如图所示,猜想page_limt为每次请求到的数据量,page_start为从第几页开始请求,将这个链接在浏览器中打开来验证一下猜想。

看到返回的是一个json字符串,里面包含50条电影信息,其中有名字,评分,链接等,将page_start = 0 变为1,就请求到下一个50条信息。根据链接的这个规律,可以对page_start 不断赋值,从而实现多条信息的获取!(公众号 ly戏说编程)

第二步构造请求头,即看看浏览器通过这个链接向服务器发送了什么请求参数才拿到这些json数据,打开浏览器开发者工具。

按照图中1到4步可以看到这个请求的request headers,将请求头里面的信息全部拿出来,构造为爬虫的请求头。

坑:请求头构造的时候Accept-Encoding要将br去掉。原因:Accept-Encoding用来声明浏览器支持的编码类型,一般有gzip,deflate,br 等等。但在python3的requests包中:response.content 字节方式的响应体,会自动为你解码 gzip 和 deflate 压缩 类型:bytes

reponse.text 字符串方式的响应体,会自动根据响应头部的字符编码进行解码。类型:str

但偏偏不支持br的解码,如果加上br可能造成你请求回来的是乱码!所以要去掉br!

这样通过模拟浏览器请求数据,就可以得到服务器返回的json字符串,再解析json字符串得到每一个电影的详情链接。

2.提取信息

在得到每一个电影的链接后,依次访问每一个电影的链接,然后根据关键信息所在标签用xpath进行提取。这里只对电影名字、年份、导演、类型、评分进行提取。

例如提取1917,在网页右击“1917”,然后选择检查,在Elements中1917所在位置右击,选择Copy,然后Copy XPath即可拿到1917的Xpath路径,其它信息的提取操作步骤一样。

但是不同电影网页里面相同类型的信息所在的XPath路径可能不同,这就需要找到他们的相同处,提取相同的XPath路径,从而进行大批量提取。

比如电影类型,用直接copy xpath的方法就不好使,不同电影网页里面电影类型所处的标签位置不同,用copy xpath拷贝出来的路径有差异,这就需要根据所在标签的property属性来获取。主要代码如下:

对每一网页链接里面的信息进行提取,这里每提取一个就停1s,为的是避免平台检测到异常访问,这样就拿到每一个电影的信息,然后再将这信息保存到excel中,效果如图所示

前几名都是奥斯卡得奖电影有木有!感兴趣的小伙伴快来试试!话不多说,挨着去看电影咯!去哪看?去公众号 ly戏说编程 首页vip影院看,里面还有各种学习资源免费分享!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值