前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >爬一爬哪个操蛋的药品网站,建立药品库

爬一爬哪个操蛋的药品网站,建立药品库

作者头像
BUG弄潮儿
发布2020-06-12 15:47:38
1.4K0
发布2020-06-12 15:47:38
举报
文章被收录于专栏:JAVA乐园JAVA乐园

互联网医疗公司,有一个完整、完全、正确的药品库非常重要;今天来说一说小编在上一个东家为了建立一个自己的药品库是怎么做的。首先我们是一家小公司,但是我们有一个纽约敲钟的梦想,虽然就要闹得发不了工资、最终还闹上了劳动仲裁委,就是不说了,满满的都是泪,“宝宝,我没有用~~~”。

首先分析对手,目前国内做互联网医疗的公司非常多,但是做的还可以的就那么几家,而且做医药商城、药品比较齐全的主要有京东医药、360好药、阿里健康等,但是他们也不是最全的,药品最全的要数国家药监局

今天就来看看怎么使用JAVA把这个网站的数据爬下来,要爬数据,首先要先分析一下网站的结构。分析网站发现这个国家级的网站,身负华夏千千万万人生命的药品的网站,做的确实烂,不知道找了国内哪个大学的、还没毕业的研究生做了。并不想黑哪个大学或者那些研究生。打开谷歌浏览器的js调试器,发现代码中大量充斥debugger对象,是一个测试网站吗?

步骤一: 在药品列表页随便找一条药品数据查看代码

<a href="javascript:commitForECMA(callbackC,'content.jsp?tableId=63&amp;tableName=TABLE63&amp;tableView=药品注册补充申请备案情况公示&amp;Id=1214',null)">2.胆炎康胶囊 (贵州百灵企业集团制药股份有限公司CYZB0801888黔)</a>

步骤二: 继续分析点击一下任何一条药品数据

http://app1.sfda.gov.cn/datasearchcnda/face3/content.jsp?tableId=63&tableName=TABLE63&tableView=%D2%A9%C6%B7%D7%A2%B2%E1%B2%B9%B3%E4%C9%EA%C7%EB%B1%B8%B0%B8%C7%E9%BF%F6%B9%AB%CA%BE&Id=1213&MmEwMD=GBK-29dira8NcGmy70MjYEuX.g4LnWi1GvHrOnsfFiCvyQ88RHewUbaSGAiUTgUgq4YevKCVC8bQ9_NkyfOXyuK.obd1rHWx0w4F3O.LrNzVU4u07._EXZzoUlnc4n.0NrH0l3vOaSMEdonpH9Sjx5A2mk_ZJiRP7ZFIqhLxWBKZD35rIIbLjt85LnM8mxObiJQ9zjUmlIuqbvj5tPQLesVJWcdQhTtqztm4TDOx1ywoanmtLWFGYzIkfECO0IJkPatXMvKmGrUomdOU2YzBwFf0_R2GDJUAyT.7k53qL2VpCBTuDsSAgOBzWwKVXoFWm7b96ttDBw8SdPT9rw9ZTEJ1jUQpOyTHV5BaXxqKvej6InqgEoAgY0444vleOaf28sStAhm3XvTbgErp_Dx_hGGbjXEUKhOheptsDWTE35ZD2n3FevH

经过以上两个步骤分析等到如下结论

步骤一:

content.jsp?tableId=63&amp;tableName=TABLE63&amp;tableView=药品注册补充申请备案情况公示&amp;Id=1214

步骤二:

http://app1.sfda.gov.cn/datasearchcnda/face3/

把这两个拼起来并加以整理:

http://app1.sfda.gov.cn/datasearchcnda/face3/content.jsp?tableId=63&tableName=TABLE63&tableView=药品注册补充申请备案情况公示&Id=1214

这个链接放到浏览器访问数据就出来了,再继续分析一下这个链接有如下参数: tableId、tableName、tableView和Id

tableId、tableName、tableView这三个参数都有table,可以知道一定有存在什么关联。找啊找啊发现下图

所有的tableId、tableName、tableView这三个参数的值都在这个界面的所有链接里了;而Id参数,猜测是对应的药品的Id,来验证一下,这个链接是前面拼出来的

http://app1.sfda.gov.cn/datasearchcnda/face3/content.jsp?tableId=63&tableName=TABLE63&tableView=药品注册补充申请备案情况公示&Id=1214

把这个Id改成1215,你会发现惊奇的;数据果然出来了。

就可以大胆推测这个Id是药品的唯一主键,再大胆推测一下,是不是一个自增的Id,写一个循环从0到int类型的最大值就可以把某一种类型的药品的数据全部爬下来了。然后按照这些字段就可以把药品名称、规格、批准文号等爬下来了。

这个毕竟是国家级网站,这里代码就给出了,这里给大家点一下。要访问网站,首页就必须用到httpclient

代码语言:javascript
复制
<dependency>
   <groupId>org.apache.httpcomponents</groupId>
   <artifactId>httpclient</artifactId>
   <version>4.5.7</version>
</dependency>

分析网站知道返回的是HTML代码,这样的话需要解释HTML代码,这样就要使用到

代码语言:javascript
复制
<dependency>
   <groupId>org.jsoup</groupId>
   <artifactId>jsoup</artifactId>
   <version>1.11.3</version>
</dependency>

也可以使用(但是htmlparser已经很久没更新了,jsoup是新一代HTML解析器)

代码语言:javascript
复制
<dependency>
   <groupId>org.htmlparser</groupId>
   <artifactId>htmlparser</artifactId>
   <version>2.1</version>
</dependency>
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-04-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 BUG弄潮儿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
ICP备案
在中华人民共和国境内从事互联网信息服务的网站或APP主办者,应当依法履行备案手续。腾讯云为您提供高效便捷的 ICP 备案服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档