抓取新浪博客关注的人的关注人

版权声明: https://blog.csdn.net/qq_34246164/article/details/82353491

目录

1 概要

2 内容


1 概要

通过cookies实现免密码登入,然后使用requests获取页面信息,之后使用re来提取js中的信息

项目地址:https://github.com/EricLULU/weibo

2 内容

本来想通过登入后在抓取的,不过研究了半天还是没发现怎么登入。。。还是努力学习早日成为大牛吧

                                            

废话不多说了,既然不能登入后在进行抓取,还可以使用其他的方式啊,比如selenium,或者cookies登入,通向罗马的路不止一条,何必在一个登入上吊死

                                                                

这里选择cookies登入,毕竟使用selenium的效率太低了。。。。

好了,打开新浪微博,然后愉快的输入账户、密码,点击登入,然后等待跳转。跳转的速度实在有点慢,然后就又点击了一次登入,然后就弹出了验证码。。。。所以,等待跳转就好,不要太着急。

然后就进入到了自己的主页,在搜索框里输入你想要搜索的东西,楼主是想抓取每个人的关注列表,然后实在想不起来哪个人了,就以自己的为例吧(实际上我搜的是一个明星,手动哈哈),点击打开个人主页,然后右键查看源码,我要的信息呢?都在哪里呢?原来,微博使用的javascript来处理的,这样就没办法直接看到需要的信息了。那怎么办呢?

                                                                     

别急,虽然源码是经过javascript处理后加载出来(javascript教程,可以点击这里),但处理也是需要东西才能的啊,那需要的东西不就是我们想要的了吗?

                                                                

所以,我们就来直接分析下源码吧

比如,我们想要抓取个人主页的关注人数和粉丝人数

                                               

直接查看源码的话,是找不到相关的标签的,那直接搜索关键字 “关注”, 看看能不能找到,嘻嘻

 

可以看到,我们已经找到我们需要的数据了(好像掉粉了。。。。),这种格式的数据肯定不能使用bs4后者pyquery等依靠标签的工具来进行解析了,是时候祭出正则表达式这面大旗了。 直接编写提取的表达式就好了。什么?还不知道正则表达式怎么写,点击这里了

废话不多说,匹配的模式如下:

p5 = r'<strong\sclass=\\"W_f12\\">(\d*?)<\\/strong><span\sclass=\\"S_txt2\\">关注<\\/span>'  #关注的人数
p6 = r'<strong\sclass=\\"W_f12\\">(\d*?)<\\/strong><span\sclass=\\"S_txt2\\">粉丝<\\/span>'  #粉丝数

由于粉丝人数太多,就不提取了,这里提取的是关注者列表(明星的粉丝真多啊(*——*))。

接下来是关注者列表的提取了,提取的idol的名字和首页链接,和上面同样的操操,就直接上图了:

在源码页面搜索这个“电子竞技俱乐部”

搜索结果如下:可以看到我们已经找到其中的链接了(href)是个人首页链接

然后是这里的正则表达式:

p2 = r'<a\starget=\\"_blank\\"\stitle=\\"(.*?[\u4e00-\u9fa5]{0,})\\"\shref=\\"(.*?)\\"\s>'

这样就能够提取出来需要的信息了。

其他的部分,我就放到的我的GitHub上了。最后,贴上一张我自己的运行图

哦,对了,多个账号在一台电脑上产生的cookies只有最后一个能用哦!

猜你喜欢

转载自blog.csdn.net/qq_34246164/article/details/82353491