python3读取HDA零售企业数据(一)
#-*- coding:utf-8 -*-
# 下载河南FDA各药品经营企业目录 import urllib.request
import urllib.parse
import re
import os
import http.cookiejar header = {
'Connection': 'Keep-Alive',
'Accept': 'application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, */*',
'Accept-Encoding': 'gzip, deflate',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko',
#'Referer':'http://hda.gov.cn/interplugin/face2/base.jsp',
} def getOpener():
#自动设置COOKIER
# deal with the Cookies
print( '正在设置cookie')
cj = http.cookiejar.CookieJar()
pro = urllib.request.HTTPCookieProcessor(cj)
opener = urllib.request.build_opener(pro, urllib.request.HTTPHandler)
urllib.request.install_opener(opener)
print( '设置cookie成功')
return opener def download(content,pattern): m = re.compile(pattern)
urls = re.findall(m,content) file_object = open('thefile.txt','a')
i=0
for i,url in enumerate(urls):
try:
subid = url[0]
suburl = "http://www.hda.gov.cn/interplugin/face2/content.jsp?tableId=13&tableName=TABLE13&tableView=%E8%8D%AF%E5%93%81%E9%9B%B6%E5%94%AE%E4%BC%81%E4%B8%9A&Id="+subid
qymc = getContent(suburl,'企业名称.*\n.*83%>(.*)</td>','UTF-8')
zcdz = getContent(suburl,'注册地址.*\n.*83%>(.*)</td>','UTF-8')
xkzh = getContent(suburl,'许可证号.*\n.*83%>(.*)</td>','UTF-8')
print(qymc,zcdz,xkzh)
file_object = open('thefile.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('\n\r') finally:
None
file_object.close() print('i=',i) #opener = getOpener() 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 if __name__ == '__main__':
file_object = open('thefile.txt','w')
#1、读取首页的列表记录
url = "http://hda.gov.cn/interplugin/face2/base.jsp?tableId=13&tableName=TABLE13&title=%D2%A9%C6%B7%C1%E3%CA%DB%C6%F3%D2%B5&bcId=137264323448453682513826398962" request = urllib.request.Request(url, headers=header)
page = urllib.request.urlopen(request)
pageContent = page.read().decode('gb2312')
#open('d:/py/test1.txt','w').write(pageContent)
pattern = '&Id=(\d{1,4})",null\)>\d{1,6}\.(.*?)</a></p>'
company_Name = download(pageContent,pattern)
#2、读取第2-1183页的列表记录
for k in range(2,1183):
url = 'http://www.hda.gov.cn/interplugin/face2/search.jsp?tableId=13&bcId=137264323448453682513826398962&curstart='+str(k)
print(url)
request = urllib.request.Request(url, headers=header)
page = urllib.request.urlopen(request)
pageContent = page.read().decode('UTF-8') pattern = "&Id=(\d{1,4})',null\)>\d{1,6}\.(.*?)</p>"
company_Name = download(pageContent,pattern) print('药品经营企业名称下载完成!')
经过几天的摸索,终于可以下到想要的数据了;
路的的几个坑在此标下:
1、正则表达式中的换行符 (.*)匹配时,如果遇到换行,要加入'\n’
2、调试时充分 利用 fiddler 和 python SHELL(方便粘贴)工具,即时调试;
未解决的问题:爬取的第一个页面中有重复数据,暂未找到如何处理;
python3读取HDA零售企业数据(一)的更多相关文章
- python3读取excel文档数据
实现场景: 1.读取Excel表数据 2.把数据作为参数传给后面的函数 3.后面的函数循环读取参数执行操作 本案例Excel内容为下图,becks为表名 先贴代码 import xlrd #读取exc ...
- python3读取BJDA药品经营企业数据
#-*- coding:utf-8 -*- #读取北京FDA的药品经营企业数据 # 20161125 zhangshaohua import re import urllib.request impo ...
- python3 读取表格的数据
python3 读取表格的数据 xlrd1.1.0的下载网址:https://pypi.python.org/pypi/xlrd. xlrd1.1.0兼容python2和python3. python ...
- python3 读取串口数据
python3 读取串口数据 demo import serial import time ser = serial.Serial("COM3",115200,timeout = ...
- python3 读取txt文件数据,绘制趋势图,matplotlib模块
python3 读取txt文件数据,绘制趋势图 test1.txt内容如下: 时间/min cpu使用率/% 内存使用率/% 01/12-17:06 0.01 7.61 01/12-17:07 0.0 ...
- 148_赠送300家门店260亿销售额的零售企业Power BI实战示例数据
焦棚子的文章目录 一背景 2022年即将到来之际,笔者准备在Power BI中做一个实战专题,作为实战专题最基础的就是demo数据,于是我们赠送大家一个300家门店,260亿+销售额,360万行+的零 ...
- DataPipeline丨新型企业数据融合平台的探索与实践
文 |刘瀚林 DataPipeline后端研发负责人 交流微信 | datapipeline2018 一.关于数据融合和企业数据融合平台 数据融合是把不同来源.格式.特点性质的数据在逻辑上或物理上有机 ...
- 转 python3 读取 ini配置文件
在代码中经常会通过ini文件来配置一些常修改的配置.下面通过一个实例来看下如何写入.读取ini配置文件. 需要的配置文件是: 1 [path] 2 back_dir = /Users/abc/Pych ...
- 阿里云智能数据构建与管理 Dataphin公测,助力企业数据中台建设
阿里云智能数据构建与管理 Dataphin (下简称“Dataphin”)近日重磅上线公共云,开启智能研发版本的公共云公测!在此之前,Dataphin以独立部署方式输出并服务线下客户,已助力多家大型客 ...
随机推荐
- 微软官方的精简版Windows 7——Windows Thin PC
Windows Thin PC是微软的Window 7的精简版本,它的一个非常明显的特点是系统资源占用小.如下是官方的系统配置需求: CPU: 主频1 GHz 内存: 1GB(实际占用约5 ...
- 【power designer】使用power designer编辑pdm物理模型图时,为字段添加中文备注
如下图: 1.双击下图修改 应用如下 2.为数据列添加备注属性 然后为备注列添加 中文备注 [注意,这里有个小技巧,如果光标已经点进去这个单元格,是不能复制进去文字的,但是第一次点击单元格,是可以复制 ...
- Myeclipse 编译等级
1.Java compiler level does not match the version of the installed Java project facet. 问题描述:编译等级不匹配 解 ...
- 【云计算】WAF简介、功能特性、部署方式等
之前写了一篇<WAF防御能力评测及工具>,是站在安全运维人员选型WAF产品的角度来考虑的(优先从测试角度考虑是前职业病,毕竟当过3年游戏测试?!).本篇文章从WAF产品研发的角度来YY如何 ...
- CKEditor+SWFUpload实现功能较为强大的编辑器(一)---CKEditor配置
CKEditor爆表的强大功能大家都有目共睹,号称最强大的在线编辑器,只要将文件复制到项目中,在添加引用,在一句代码就可以将普通的textarea变成华丽的编辑器 所谓一复制,一拖,一换就大功告成 但 ...
- jquery给多个span赋值
因为我想在页面载入完毕后,有几个地方显示当前时间,所以我须要给多个span赋值. span代码的写法例如以下: <span name="currentDate">< ...
- 底部菜单实现(Dialog方案)
项目中经常会要实现在屏幕底部弹出一个窗口,比如一个分享窗口: 下面详解实现步骤: 1.定义布局 <?xml version="1.0" encoding="utf- ...
- hibernate学习系列-----(5)hibernate基本查询下篇:hibernate聚合函数、分组查询及命名查询
在上一篇中,大致学习了hibernate的基本查询:HQL基本查询,今天,继续昨天的步伐,继续学习hibernate的基本查询..... 1.hql聚合函数,先大致列一下hql的聚合函数有哪些吧: 在 ...
- Windows操作系统设置代理
1.打开控制面板 2.点击网络和Internet 3.点击Internet选项 4.点击连接Tab页 5.点击局域网设置 6.选中代理服务器 7.输入代理的地址和端口号
- crm使用soap取消用户訪问记录权限
//取消訪问权限 function demo() { //操作记录的id var targetId = "A8A46444-BA10-E411-8A04-00155D002F ...