申博城
 

利用爬虫获取网上医院药品价格信息 (上)

时间:2020-01-01 12:50来源:菲娱平台菲娱平台作者:菲娱平台点击:

  在对比医院业务数据中的各类药品价格的时候,面对着成千上百种的药品。因而想到使用爬虫来自动获取网上的药品价格,保存下来导入数据库中就可以方便地比较院方的药品采购价格了。

  通过百度搜索“药品价格查询”,在众多的网站中,这里选择了药价查询网(),主要是因为这个网站不需要用户注册就可以查询药品价格,另外查询结果显示界面比较简洁,编写爬虫较为省心。

  随便在该站点搜索药品“氟氯西林钠阿莫西林胶囊”,查看生成结果页面的源代码(如下):

  其中myLog是一个自定义模板,其实就是对logging模板的简单格式化,代码如下:

  Item包含了网站查询结果中所含的元素,方便到时候用来提取数据。GetInfor为爬虫主程序。getmedicallist用来从文本“name.txt”中提取需要查询的药品名称(该文件是先从医院数据库中导出的医院所涉及到的药品名称),返回含有药品名称的列表。spider用于在网上爬取药品价格信息,将所有信息保存到列表items中,并返回。pipelines_xls和pipelines_csv分别用于将保存下来的数据保存到xls和csv格式的文件中。getresponsecontent从spider中分离出来主要是为了方便后期的扩展。

  我们使用方法getmedicallist获取到所有需要查询的药品名称后,在这里通过变量names来读取,如下:

  不加“&page=n”的情况下,只返回查询结果第一页的信息。但查询结果总共有多少页?我们需要先提取出这个最大页数。

  从运行结果来看,效果还算满意,通过tagul.find_all(a)得到的列表最后一条基本都是结果页面最后一页的页码。但如果结果页面过多的时候,可以看到最后一页的页码不在列表的最后,而是处于列表的倒数第二行。修改增加如下代码,利用try来让程序自动选择提取最后一行还是倒数第二行。

  获取到最后一页查询结果的页码值后,我们就可以组合出完整的url地址了。遍历所有的url组合,提取出tbody之间的药品价格信息。方法spider的完整代码如下:

   1980菲娱平台_菲娱国际注册_菲娱国际官网
    1980菲娱平台,菲娱国际注册,菲娱国际官网

      1980菲娱平台,菲娱国际注册,菲娱国际官网
------分隔线----------------------------

版权所有:佛山市菲娱平台铜业有限公司  地址:广东省佛山市南海区九江镇九江工业园    网站设计维护:网站地图