python3爬取中国药学科学数据
2024-09-01 13:14:47
今天我表弟说帮忙爬一下中国药学科学数据,导出json格式给他。一共18万条数据。
看了一下网站http://pharm.ncmi.cn/dataContent/admin/index.jsp?submenu=183
竟然get请求。不爬你爬谁。。。
#/usr/bin/env python
#Guoyabin
#-*- coding:utf-8 -*-
import re,requests,threading,time
def inserttxt(file,text):
f=open(file,'a+')
f.write(text)
f.close() def down(begin,end):
url='http://pharm.ncmi.cn/dataContent/dataSearch.do'
for i in range(begin,end):
file=str(end)+'.txt'
params={'method':'viewpage','id':i,'did':26}
try:
html=requests.get(url,params=params,timeout=60)
r=html.text.replace("\r","")
html.close()
r=r.replace("\n","")
r=r.replace("\t","")
r=r.replace(">","")
req='width="89%">(.*?) </td>'
yaovalue=re.findall(req,r)
yaokey=['{\nname:"','",\nenglish:"','",\nnumber:"','",\nshanpinmingchen:"','",\ndanwei:"','",\ndate:"','",\nclass:"','",\nguige:"','",\njixing:"','",\nleibie:"','",\npizhun:"']
yao=zip(yaokey,yaovalue)
for i in yao:
for x in i:
inserttxt(file,x)
inserttxt(file,'"\n},\n')
#休息3秒在爬,原来没有休息。导致大量TCP连接。且对方直接封我ip。
#18万条数据/10线程*3秒等待/60秒/60分=15个小时拿完对方数据。不如改一下程序,多台独立IP电脑运行了。
time.sleep(3)
except:
print('url访问失败')
continue if __name__=='__main__':
t1=threading.Thread(target=down,args=(2228,20000,))
t1.start()
t2=threading.Thread(target=down,args=(20000,40000,))
t2.start()
t3=threading.Thread(target=down,args=(40000,60000,))
t3.start()
t4=threading.Thread(target=down,args=(60000,80000,))
t4.start()
t5=threading.Thread(target=down,args=(80000,100000,))
t5.start()
t6=threading.Thread(target=down,args=(100000,120000,))
t6.start()
t7=threading.Thread(target=down,args=(120000,140000,))
t7.start()
t8=threading.Thread(target=down,args=(140000,160000,))
t8.start()
t9=threading.Thread(target=down,args=(16000,180000,))
t9.start()
t10=threading.Thread(target=down,args=(18000,183662,))
t10.start()
t10.join()
input('已经下载完,按回车退出')
开始运行了几次没问题,已经爬下一半了,过了一会直接被封了。可能爬的太快了。容我做个悲伤的表情。
无耻的求一下赞助
最新文章
- 什么时候用Model,什么时候用Entity?[转载知乎-备忘]
- HDU2255-奔小康赚大钱-二分图最大权值匹配-KM算法
- php基础入门
- JQuery阻止冒泡事件on绑定中异常情况分析
- [matlab]改变矩阵的大小并保存到txt文件
- 游戏服务器生成全局唯一ID的几种方法
- js中arguments的作用
- 那些年我们写过的三重循环----CodeForces 295B Greg and Graph 重温Floyd算法
- UNIX基础--用户和基本账户管理
- ios开发 第一天
- Django 2.0 学习(03):Django视图和URL(下)
- Java内存模型探秘
- typename的用法
- 安装使用nginx
- Duplicate entry &#39;xxx&#39; for key &#39;xxx&#39;
- C++ 使用system()实现锁定屏幕
- CentOS7配置FTP服务器增强版~(零基础学会FTP配置)
- Educational Codeforces Round 54 ---1076ABCDE
- css初始化minireset.css
- SVN: is scheduled for addition, but is missing