Python抓取新浪微博用户信息(Selenium+PyQuery+BeautifulSoup) - Go语言中文社区

Python抓取新浪微博用户信息(Selenium+PyQuery+BeautifulSoup)


代码移步:https://github.com/AnRanbel/Python/tree/master/PythonCrawler/weibospider

我是在这位作者https://github.com/dataabc/weiboSpider代码的基础上加了微博数抓取(主要是想用一下selenium试试)和分析数据,当前代码只能抓取原创微博,其实要实现全部微博的获取(转发+原创)也很简单,大家可以自己试试(用手机网页版https://weibo.cn/抓取微博,2012年以前的原创微博没有包括在原创模式下,所以变量filter的意义不大)

结果展示

使用说明

因为要使用selenium,所有需先安装库selenium以及下载对应版本的Chrome Webdriver或者Firefox Webdriver(自行百度).可根据自己的情况选择使用Chrome或Firefox,以及有头模式或无头模式,见代码272行:

  1. 获取微博登录cookies
    浏览器地址栏输入https://passport.weibo.cn/signin/login,打开浏览器开发者工具(Chrome快捷键F12),切换到Network,勾选Preserve log,点击登录按钮,获取cookies,用于模拟登录
  2. 获取微博用户id
    登录后,浏览器地址栏输入https://weibo.cn,搜索微博用户,获取相应id

    地址栏u/后面的那串数字就是user_id,复制粘贴到user_id变量中
  3. 程序运行中可能会出现的问题
  • 报错requests.exceptions.SSLError: HTTPSConnectionPool(host='weibo.cn', port=443): Max retries exceeded with url: /1192329893/info (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:833)'),))
    通常只需要隔一会儿再重新启动程序即可
  • 微博拒绝访问和网页获取失败
    此程序大体分为6步进行,其中最易出错的就是get_weibo_info()和get_weibo_num()。如果你要抓取的微博用户微博数过多(>1000)可以考虑两个函数分两次运行(第一次运行先注释掉self.get_weibo_num,另外注释掉write_txt()中"#将微博发布数写入文件"的代码和analyse()中"#发布数统计——条形图"的代码;第二次运行先删掉第一次的注释,再注释掉self.get_weibo_info,另外注释掉write_txt()中"# 将微博内容写入文件"的代码和analyse()中"# 词汇统计——词云"的代码)

    (1)get_weibo_info()获取微博数太多,微博可能会拒绝访问
    只需要等几分钟,重新运行程序
    注意:如果不想再从第一条微博开始抓取,想接着上次继续抓取,可以对代码做如下修改:
    将代码500行的"wb"改为"ab"

    打开存放微博内容的文本(your_user_id.txt),查看上次抓取到的最后一条微博的序号x,再将代码486行的"str(i)"改为"str(x+i)"

    用手机网页版打开微博用户页面https://weibo.cn/u/your_user_id,查看上次抓取停止在哪一页,如果上次停止在y页,则将代码139行的"for page in range(1, page_num + 1)"改为"for page in range(y+1, page_num + 1)",然后再次运行程序(注意删除文本中这次运行新添加的非微博内容信息)

    (2)get_weibo_num()获取微博数太多,网络性能会降低
    微博数很多的话,运行程序的同时最好不要干其他事
版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/lovedbaobao/article/details/82630913
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-02-13 13:52:31
  • 阅读 ( 1319 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢