从一个爬虫的角度看长生生物问题疫苗事件

版权声明: https://blog.csdn.net/zheng_weibin/article/details/81510717

雪球爬虫

股友评论词云
​ 长生生物问题疫苗事件严重且恶劣,长生生物作为上市公司,影响着千千万万个股民,为了一探股民们在事件爆发后的看法,我爬取了10000条雪球评价进行分析。

​ 本爬虫采取的是requests+bs4的路线,为了对抗反爬,使用了修改请求头、伪装cookies、降低爬取频率等策略,并将爬取到的数据存储在mysql数据库中,最后通过jupyter notebook进行数据分析。

下面是部分关键代码介绍:

异步数据爬取

我们发现雪球网跟新浪等网站一样,需要进行异步爬虫,使用Chrome浏览器的开发者工具,可以非常简单的获取到数据的接口为:https://xueqiu.com/statuses/search.json?sort=reply&source=all&q=长生生物&count=10&page=2 ,其中page=2是页码,不断更换页码即可获得相对应的数据,经过检测,雪球网只能提供100页的数据,再往后的数据就获取不到了,这时候我们可以更改排序规则sort=reply,按照不同的规则提取前100页数据,得到的结果去重,就能过获得尽量多的数据了。

数据接口

反爬虫对抗

1.修改请求头

我们使用一个非常方便的库——fake_useragent,可以得到随机的浏览器请求头,用法如下

from fake_useragent import UserAgent
ua = UserAgent()
headers = {'User-Agent':ua.random}

2.修改cookies

雪球的评论数据需要登录后才能获取,下面介绍一种非常简单方便的绕过登录的方法。

  1. 在网页上进行登录
  2. 使用Chrome浏览器的开发者工具,查询当前请求的cookie
  3. 复制浏览器中的cookie,使用此cookie对我们的请求进行伪装

查看Cookie

cookie= "_ga=GA1.2.1905714326.1532395769; device_id=be9593a249df60ae51b867286720b231; __utmz=1.1532398933.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); s=eu15gphfkh; xqat=f43ff28fe0acc77123e46a2c2d7f1c845fd07937; xq_token_expire=Sat%20Aug%2018%202018%2017%3A04%3A05%20GMT%2B0800%20(CST); remember=1; remember.sig=K4F3faYzmVuqC0iXIERCQf55g2Y; xq_a_token=335a8e1cc93e22928bf71958a0071e9beebaa198; xq_a_token.sig=Z2oUYC0glc8azFKa5BTc7r1PPm8; xq_r_token=65b1f1371018967271b558ef6b2e78bcff4abdf3; xq_r_token.sig=zO3zYtihH8Ux3xif-7SQ0qkJK_0; xq_is_login=1; xq_is_login.sig=J3LxgPVPUzbBg3Kee_PquUfih7Q; u=5666096594; u.sig=m8tX_8HigejmRbYpdav-15nLl8c; _gid=GA1.2.1191566340.1533051346; aliyungf_tc=AQAAAHFuNEekywsAgrpscS6vFvp7dNRj; Hm_lvt_1db88642e346389874251b5a1eded6e3=1532673104,1532694661,1533051345,1533104883; _gat_gtag_UA_16079156_4=1; Hm_lpvt_1db88642e346389874251b5a1eded6e3=1533107325; __utma=1.1905714326.1532395769.1532434163.1533107326.3; __utmc=1; __utmt=1; __utmb=1.1.10.1533107326"

headers = {'Cookie':cookie,
          'User-Agent':ua.random}

3.降低爬取频率

一个简单又有效的方法就是降低爬取频率,毕竟高频率的爬取对服务器也是一个考验,如果对速度的要求不是很高的话,建议把频率放慢一点,你好我好大家好!

import random
import time
time.sleep(6*random.random())

分析结果

事件回顾

2018年7月15日,国家药品监督管理局发布通告指出,长春长生生物科技有限公司冻干人用狂犬病疫苗生产存在记录造假等行为。 2018年7月22日,李克强总理就疫苗事件作出批示。7月23日,正在国外访问的习近平主席对吉林长春长生生物疫苗案件作出重要指示指出,长生生物公司违法违规生产疫苗行为,性质恶劣,令人触目惊心。 2018年7月24日,长生生物董事长高某芳等15名涉案人员因涉嫌刑事犯罪,被刑事拘留强制措施。

雪球数据爬虫

作为一名老股民,我既为长生生物的故意造假的恶劣行为感到气愤,又对买了长生生物股票的股民感到悲伤。长生问题疫苗事件持续登上了雪球的今日话题,为了一探雪球上股民们对长生问题疫苗事件的看法,我用python爬虫,爬取了3740条讨论、8338条评论数据。

扫描二维码关注公众号,回复: 3238198 查看本文章

技术路线为:requests+BeautifulSoup的技术路线,通过谷歌浏览器的开发者工具,查询到评论数据的接口地址,通过修改user-agent、伪装cookies、放慢请求速度等,进行异步数据爬虫,爬取的数据存储到MYSQL数据库,最后通过pandas进行数据分析,详细技术实现请见我的技术贴《用requests库进行雪球评论异步数据爬取》。

舆情分析

按时间发展看

舆情分析

上图中,横轴为时间,7月15日-7月25日,纵轴为评论数量,可以看到7月15日药监局通告长生生物造假,评论数超500,随后平复,在21日开始评论数大幅上升,22日李克强总理做出批示,雪球讨论数进一步上升,23日正在国外访问的习近平主席做出重要指示,雪球舆论达到顶峰。

按地域看

各省份用户

参与讨论长生疫苗问题的用户,广东最多,北京、上海次之,看来经济发达的省份踩中长生生物这个雷的也更多,而且我大广东的股民们损失是最多的,呜呜。

股友的评论词云

那么损失严重的股民们对长生问题疫苗事件的看法如何呢,请看词语图:

评论词云

虽然长生生物的股民们因为踩雷损失不少,但是从词云图中可以看出,对于此次疫苗事件,股民们都希望造假企业付出沉重代价,退市、跌停是股民们最大的希望,并对监管问题、和对涉案人员的处理表示关心,甚至出现死刑的字眼。 下面展示出点赞最多的5条评论,括号内为点赞次数:

  • (跌停)10个起步,15个不多,20个刚好,最后退市!支持草菅人命的无良企业退市的朋友请点赞!这次要… (1646)
  • 这事要在国外,长生死十次都不够!在天朝,要么自己去报仇,要么不了了之! (1473)
  • 这个必须给深圳所点赞。 (1184)
  • 长生生物,康泰生物 必须退市!退市!退市! (954)
  • 国家监管形同虚设 (787)

跌停数预测

大家都希望长生生物这种无良企业应该退市,同样的股民们也对长生生物的跌停数进行了预测。我分析了所有的评论,发现有关股友预测跌停数的评论有972条,爬取的数据是截止7月25日,长生生物已跌停7次,预测还会有10个跌停的股友最多,股友们预测跌停数的平均值为13个,其中还有股友预测还会跌停100次,哈哈,手动点个赞。

跌停个数预测

长生生物是否会跟股友们预测一样,跌停10次呢,我们继续关注。

猜你喜欢

转载自blog.csdn.net/zheng_weibin/article/details/81510717