新宝6 新宝6登录 新宝6官网 一号站 一号站注册 五大联赛赔率 足球赔率 欧冠决赛赔率
当前位置:上饶新闻热线 > 上饶新闻 > 文章

Python爬虫——新浪微博(网页版)

时间:2019-04-10 点击:

  确定了我们要找的消息,接下来就是去解析网页了(一个大的难题要呈现了),正在我看来获取网页目前碰到的:1.解析源码,2.抓包(json),可是新浪微博这个就比力烦了,他这个是正在js中,而且是未加载的(只能用正则或者selenium模仿浏览器了),看到这个之后我想了一段时间而且问了罗罗攀 有没有其他的方式,不可我就用selenium,他说仍是保举正则,解析快一点,selenium是最初的选择,没法子了只好硬着头皮去写正则了,这里正在测试正则能否准确,能够利用正在线测试东西,进行正则的测试,不必去一遍又一遍运转代码。

  这个URL,给大师提个醒间接用这个是看不到从页消息的,可是正在代码的测试源码中我们能看到一个location沉定向的毗连,是将#之后的部门替代为&retcode=6102,所以URL该当为:,

  然后,别的一个点,不是每一小我的源码都是一样的,怎样说呢最较着的本人能够去对比下,登录微博后看一下本人粉丝的分页那部门源码和你搜刮的阿谁用户的源码一样不,除此之外其他的源码消息也有纷歧样,我实的指向说一句,大公司就是厉害。

  整个获取过程就是各类坑,之上次要是说了数据的获取体例和URL及粉丝分页的问题,现正在我们来看一下新浪微博的一些反扒:

  我点击毗连测试了一下,看到的内容和第一条毗连一样,而且还有一点,我们之后获取的所有毗连都要替代#之后的内容,来一个示例吧:

  代码这一块,确实没整好,问题也比力多,可是能够把焦点代码贴出来供大师参考和切磋(感受本人写的有点乱)

  我本想能够解析一小我的粉丝,就能够获取大量的数据,可仍是栽正在了系统(我正在爬取的时候第五页之后就前往不到数据)

  辅帮类之一(存mysql,能够参考Mr_Cxy的python对Mysql数据库的操做小例),其他的两个关于随机代办署理和获取cookie,鄙人篇文章会细致

  通过这两个URL我们能够看出,不同就正在后半部门,除了之前我说的要将是将#之后的部门替代为&retcode=6102,之外还要改动一点,就是follow?之后的内容那么改动后,我们就从第二页去构制URL。

  目前新浪微博是碰到问题最多的一个,不外也学到了良多学问,好比正则表达式,随机代办署理等等,正在进修的过程中就是碰到的问题越多,堆集的越多,前进越快,所以碰到问题和犯错也是幸事。说一下代码运转过程中存正在碰到的问题吧(能够一块交换处理):

  当我看到这个的时候感受很成心思和搞头就想去整一整,所以我的一个设法就是去找一个粉丝比力多的人去解析他的阐发消息,然后再去解析他粉丝的粉丝,以此类推(感受解析初始用户的关心的人的粉丝会更好一点,由于他的粉丝比力多,他关心的人粉丝量必定不会小),可是到后来我就想放弃这个设法了,由于碰到的问题实的一大堆,好了废话不多说,来看一下我抓取的消息:

  比来工作比力多,所以从上周就起头写的新浪微博爬虫一曲拖到了现正在,不外不得不说新浪微博的反扒,我只想说我实的服气了。

  现正在消息的我们都清晰正在哪了,那么就是写婚配消息的正则了,这个只能是本人慢慢去写,能够正则表达式。

  那么URL分页问题就搞定了,也能够说处理了一个难题。若是你认为新浪微博只要这些反扒的话,就太天实了,让我们接着往下看。

  看到这个之后,系统,这个又是什么,好吧只能看100个粉丝的消息,没法子了也只能继续写下去。所以说我们只需考虑5页的数据,总页数大于5页按五页看待,小于5页的一般去写就能够,这个搞大白之后,就是要去处理分页的毗连了,通过URL进行对比:

  起首,正在请求的时候必需加cookies进行身份验证,这个挺一般的,可是正在这来说他实的不是全能的,由于cookie也是有期的,这个正在获取小我消息的时候还没什么问题,可是正在获取粉丝页面消息的时候就呈现了过时的问题,那该怎样处理呢,想了好久,最初通过selenium模仿登录处理了,这个之后正在细致说,总之,这一点要留意。

  三个辅帮类:第一个去模仿登岸前往cookies(再爬取数据的过程中,仿佛是只挪用了一次,可能是代码的问题),第二个辅帮类去前往一个随机代办署理,第三个辅帮类将小我消息写入mysql。

  相关链接: