beautifulsoup中国医疗保险网爬虫

突然想分析下这次疫情影响和国内医疗资源分配的关系,小试牛刀,在笔记本上把代码调好后在vpn上跑了起来,速度自然是快了很多。
爬取的中国医疗保险网,比较官方,这个网站有个坑,我分析它的html页面时发现网站有隐藏元素,政策浏览看不到医院的联系方式(地址,联系电话,网站,邮件),这个就是给爬虫者挖的坑。但是即便知道有坑我还是跳了,联系方式重要性不言而喻。被封了ip再说,手里有三个vpn+笔记本,估计能爬完1529页(30580家医院的信息)。爬完清洗下数据,做下分析再晒图。
代码虽然不长,但是花了我很多时间,最近牺牲的休息时间太多了。最大的坑就是那个隐藏元素不知道怎么有效地提取出来,网页上显性的东西都在html数上比较清晰,深度不算深,方便索引出来。
图一是笔记本上的代码缩略图,2-4是vpn上跑代码图,估计需要一两个小时吧!虽然代码花了一两天,但是远远比人工复制粘贴1529页容易太多。
代码采取了几个简单的反爬策略,即vpn,header设置(time out时间,浏览器伪装等,)随机休眠时间,出错应对策略等。对于比较简单的网站基本上够了。
图五是爬取的第一页,信息还算详细。完事了清洗下数据可以用pyecharts做个图做个可视化。数据有偿可取,请我吃顿饭即可[呲牙]

很可惜服务器出问题,图丢失了不少,后补几张感受下pyecharts的精美吧:

如何在Jupyter Notebook直接输出(render)图片

http://pyecharts.org/#/zh-cn/render_images

官网虽然有介绍,但是思路不清晰,没有分类的step-by-step,我一通乱撞终于弄好了。最后参考:

  • 我们的目的是实现:
  • make_snapshot(snapshot, '2019-nCoV 数据一览.html', "2019-nCoV 数据一览.png")
  • $ pip install pyecharts-snapshot
  • $ pip install snapshot-selenium

Usage details

Command line options:

$ snapshot output.html [png|jpeg|gif|svg|pdf] [delay] [pixel ratio]
make_snapshot(snapshot, chart_function().render(), "outputfile.png")