天天看点

python爬虫新浪微博

一、新浪微博全栈爬虫

先不扯皮,直接上获取数据效果图

爬虫策略:递归获取每个用户的粉丝用户id,想要获取多少用户id,则可以获取多少;利用获取的用户id再获取每个用户的所有数据

python爬虫新浪微博
python爬虫新浪微博

 例如爬黑猫警长GIAO的一条微博所有评论

爬虫策略:进入手机端找到微博对应的微博id,进行爬虫,利用如下方式组合成url,进行爬虫

url组合方式:'https://m.weibo.cn/comments/hotflow?id={}&mid={}&max_id_type={}'.format(id, id, max_id_type)

python爬虫新浪微博

 爬到的评论数据,由于截图有限,只能显示部分数据

python爬虫新浪微博

二、杂谈

最近利用空闲时间研究了一下新浪微博全栈爬虫,目前可以获取微博上面每个用户的全部信息,包括用户发布的所有博客评论、点赞数量、转发数量、评论数量和用户个人性别、昵称、地区、生日、粉丝等信息。

个人感受从新浪上面爬少量用户数据并没有很大难度,但是如果想快速获取大量数据的话,还是有些困难,目前新浪好像将个人账户对网站的访问做了限流,同一时间如果访问量过大,直接会被新浪把部分请求拒绝,从而导致爬虫大量用户信息失败。

如果想获取大量数据,采用异步线程,增加并发量的策略是行不通的;我感觉目前只能通过使用代理ip池的形式,进行多个账户同时连接,可以快速获取大量数据。

三、爬虫技巧分享

1、技巧一
   如何采用requests用户登录的话,python3使用如下第三方库,可以将cookielib记住,
   防止后续爬虫cookie过期的问题
   import http.cookiejar as cookielib
   session = requests.session()
   session.cookies = cookielib.LWPCookieJar(filename='cookie')
2、技巧二
   爬虫新浪使用手机端链接爬虫要比PC版的链接好获取数据许多,PC版新浪提供了一部分数据获取接口,
   但是能获取数据很受限制,不利于全栈获取数据
3、技巧三
   个人感觉使用第三方库lxml中etree.HTML格式化requests请求获取到的数据,要比bs4中BeautifulSoup
   格式化数据更友好,etree.HTML的对象搭配使用xpath,格式化数据速度很快,而且获取一些标签数据也很
   容易
4、技巧四
   第三方库concurrent.futures是异步爬虫的一个利器,直接可以创建异步线程池,增加数据获取并发相当简单
           

分享即快乐,以上仅献给想研究如何爬虫的程序猿

个人邮箱:[email protected],有问题欢迎指正