教你用python登陆豆瓣并爬取影评

这是我的第二篇原创文章

在上篇文章爬取豆瓣电影top250后,想想既然爬了电影,干脆就连影评也爬了,这样可以看看人们评价的电影,再加上刚出不久的移动迷官3好像挺热的,干脆就爬他吧,爬完看看好不好看!

进入主题

1.去找目标网页并找到所要找的数据

一进去网页就条件反射打开开发者工具,很容易就看到了这个

鼠标所点的就是我接下来要爬的网站,先看看他的response和请求头之类的信息,他的请求方式时get,response是一个网页结构,这就好办了,我们就可以用正则来匹配出所要的数据,正则还是个很好用的东西,请大家务必要学会啊。那接下来就动手敲代码咯!

2.用re+requests获取数据

获取信息

先把数据写入txt文件中(打开的文件要指定编码为utf-8,要不会出现编码问题,因为window的默认编码方式是gbk,而你的编码为utf-8)

正则表达式和网址

一点击运行,只运行了两页,就出了问题,因为这个评论不止两页

调试了下,在获取完第二页的时候他返回了个不存在的网页,导致我的正则表达式捕捉不到数据,出现了个空的page,所以就只下载了两页,这应该是被反爬了,继续回网页看看需要加什么请求头,然而我把全部的请求头的信息都加了,还是没用,这就触及到我的盲区了(尴尬脸),但是我可以百度啊,百度一看,看见有人说模拟登陆就可以了,那好,我就来模拟登陆一波!!!

3.模拟登陆豆瓣

首先需要看看登陆需要什么参数,这个参数是在豆瓣的登陆网址,先打开登陆,打开开发者工具(要不会看不到后面这个所需要的网页),填好信息点击登陆,然后点击这个login网页,往下拉就会看到From Data 这个框,这个就是登陆所要的参数

直接把他们复制过来即可

然后就用post把信息发到服务器完成登陆,但是这有个问题,怎么保存登陆信息呢?这就需要用到Session()来保留了,但是注意,只需要建立一个会话信息就可以了,不是每个都用这个方法,我初学时就是犯这个错误以至于我搞了很久还没有登陆成功。代码如下

然后用这个post上去,注意!注意!注意!post的网址是登陆网址,不是你要爬的网址,我刚学时也是被这个坑了很久(怎么感觉我很多问题),还有其他用requests的都需要替换成self.ssession()

最后这样

大功告成,由于只能获取500条这是因为豆瓣只开放了500条评论信息,多一条都不肯给

4.登陆多了需要填验证码

由于我多次登陆注销,然后我就需要填验证码了,然而这还是难不到我,还是分析网页找出验证码图片然后下载下来自己填写,还没有那些大佬那么厉害可以用人工智能来填写,代码如下

还有将数据保留到数据库,我就不贴了,代码和上篇文章的差不多

通过这个我学会了使用session来保存会话信息来登陆简单网页,还可以填写验证码,自己还是觉得有点高大上的,嘻嘻。由于本人还没学数据分析,就只能到这里,而生成词云也有点不会,直接复制粘贴来无趣,所以就先不写了,等大神你来写吧!

最后非常感谢你看完了我的文章,如果觉得有用可以点赞,转发哈!若需要完整代码在我后台回复影评即可,若需要python相关的电子书也可以回复pdf获得,日后还会有更多福利发给你

原文发布于微信公众号 - 日常学python(daily_learn)

原文发表时间:2018-02-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏架构师之路

应用层/安全层/传输层如何进行协议选型?

系统设计,协议先行。 大部分技术人没有接触协议的设计细节,更多的是使用已有协议进行应用层的编码,例如: (1)使用http作为载体,设计get/post/coo...

4165
来自专栏文大师的新世界

9. redux如何精简代码

通过之前的代码不难看出redux系统里的ActionType、Action、Reducer都有一定的共性,小项目无所谓,这样写更清晰,但是一旦组件以及业务增多,...

1805
来自专栏along的开发之旅

Android逆向分析概述

学习逆向的初衷是想系统学习Android下的hook技术和工具, 想系统学习Android的hook技术和工具是因为Android移动性能实战这本书. 这本书里...

8114
来自专栏编程

6款好用的C语言编译器推荐

一些刚开始接触C语言编译的网友想下载一款C语言编译器来使用,不过,网络上有不少C语言编译器相关的软件,让人很难抉择。那么,C语言编译器哪个好?今天的文章里,我给...

9988
来自专栏FreeBuf

一款隐藏嵌入式Rookit的DDoS木马分析

该款木马分析文章在2015年由@PETER KÁLNAI 最先发表于AVAST的公开blog中,木马的架构严谨,设计精良,应该是产业化的一部分。接下来我们就来看...

2747
来自专栏程序猿DD

优雅处理你的Java异常

来源:https://my.oschina.net/c5ms/blog/1827907

2802
来自专栏用户1191492的专栏

JClouds的命令行界面

我已经使用JCloud(一种面向Java支持多种云的工具集)一年了。到目前为止,我已经在很多领域广泛地使用了JCloud,特别是在Fuse Eco...

3239
来自专栏along的开发之旅

Android逆向分析概述

学习逆向的初衷是想系统学习Android下的hook技术和工具, 想系统学习Android的hook技术和工具是因为Android移动性能实战这本书. 这本书里...

1843
来自专栏小詹同学

Python | 开发者必备的 6 个库

链接:https://www.oschina.net/translate/6-essential-libraries-for-every-python-deve...

4243
来自专栏IT平头哥联盟

webpack4配置详解之常用插件分享

  继上一次 webpack 的基础配置分享之后,本次将分享一些工作中项目常用的配置插件、也会包含一些自己了解过觉得不错的插件,如有分析不到位的,欢迎纠错,嗯,...

2660

扫码关注云+社区

领取腾讯云代金券