• python3读取BJDA药品经营企业数据


    #-*- coding:utf-8 -*- 
    #读取北京FDA的药品经营企业数据
    # 20161125 zhangshaohua
    import re
    import urllib.request
    import urllib.parse
    import os
    
    
    def getContent(url,pat,charSet):
        #指定网址、正则表达式、编码方式,返回指定内容
        page = urllib.request.urlopen(url)
        content = page.read().decode(charSet)
        pattern = re.compile(pat)
        result = re.findall(pattern,content)
    
        return result
    #读取首页
    url = 'http://www.bjda.gov.cn/eportal/ui?pageId=331148'
    
    #取总记录数,每页20条
    zjls = getContent(url,'总记录数:(d{1,5}),','UTF-8')
    
    vdzjls = int(zjls[0])
    vdzjls = int(round(vdzjls/20,0)) 
    
    
    
    for i in range(51,vdzjls):
        url = 'http://www.bjda.gov.cn/eportal/ui?pageId=331148&currentPage='+str(i)
        pattern = 'artileId=(.*)">查看'
        page_id = getContent(url,pattern,'UTF-8')
        for url_id in page_id:
            try:
                subid = url_id
                suburl = "http://www.bjda.gov.cn/eportal/ui?pageId=331631&artileId="+subid
                qymc = getContent(suburl,'企业名称:</th>
    .*?<td>(.*?)</td>','UTF-8')
                zcdz = getContent(suburl,'注册地址:</th>
    .*?<td>(.*?)s{0,3}</td>','UTF-8')
                xkzh = getContent(suburl,'许可证号:</th>
    .*?<td>(.*?)</td>','UTF-8')
    
                print(qymc,zcdz,xkzh)
                file_object = open('bjda.txt','a')            
                file_object.write(qymc[0])
                file_object.write(',')
                file_object.write(zcdz[0])
                file_object.write(',')            
                file_object.write(xkzh[0])
                file_object.write('
    
    ')
                
            finally:
                None
            file_object.close()
    
    vdzjls  = int(zjls[0])
    
    
    print('药品零售企业读取完成!')
    

      经历了读取HDA的练习,此次读取BJ的数据开始比较顺畅。在读取996条数据时出错,再次出现换行造成的问题;

    多次试错后用‘s{0,3}’成功解决.

    正则表达式要继续学习,才能不断进步,避免遇“”坑“”时能顺利通过!

  • 相关阅读:
    AT89C51单片机的主要组成结构
    Keil C51的库函数
    Keil C51程序设计
    bootchart 使用说明及代码分析
    [转]android下编译libusb和libhackrf
    [转]Android系统编译过程分析
    [转]Android U 盘功能实现和分析
    [转]深入理解Android之设备加密Device Encryption
    [转]Makefile 中:= ?= += =的区别
    [转]Makefile中常用的函数
  • 原文地址:https://www.cnblogs.com/lrzy/p/6109226.html
Copyright © 2020-2023  润新知