天天看点

使用Scrapy爬取知乎网站使用cookie模拟登陆通过账号登陆其他一些技巧

从这篇文章你可以学习到如何获取一个网站的 cookie 信息。下面所讲述的方法就是使用 cookie 来模拟登陆知乎网站并爬取用户信息。

一个模拟登陆知乎网站的示例代码如下:

formrequest 请求中有一个回调函数 parse_item 用于解析页面内容。

header 和 cookies 在 settings.py 中定义如下:

这两个参数你都可以通过浏览器的一些开发工具查看到,特别是 cookies 中的信息。

使用账户和密码进行登陆代码如下:

该代码逻辑如下:

重写 <code>start_requests</code> 方法,通过设置 formrequest 的 formdata 参数,这里是 email 和 password,然后提交请求到 <code>http://www.zhihu.com/login</code>进行登陆,如果登陆成功之后,调用 <code>after_login</code> 回调方法。

在 <code>after_login</code> 方法中,一个个访问 <code>start_urls</code> 中的 url

rules 中定义了一些正则匹配的 url 所对应的回调函数

在 <code>parse_user</code> 方法里,你可以通过 xpath 获取到用户的相关信息,也可以去获取关注和粉丝列表的数据。

例如,先获取到用户的关注数 <code>followee_num</code>,就可以通过下面一段代码去获取该用户所有的关注列表。代码如下

然后,你需要增加一个处理关注列表的回调方法 <code>parse_follow_url</code>,这部分代码如下:

获取粉丝列表的代码和上面代码类似。

由于隐私设置的缘故,有些用户可能没有显示一些数据,故针对某些用户 xpath 表达式可能会抛出一些异常,如下面代码获取用户的名称:

你可以将上面代码修改如下,以避免出现一个异常: