今天我表弟说帮忙爬一下中国药学科学数据,导出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('已经下载完,按回车退出')

  开始运行了几次没问题,已经爬下一半了,过了一会直接被封了。可能爬的太快了。容我做个悲伤的表情。

无耻的求一下赞助

最新文章

  1. 什么时候用Model,什么时候用Entity?[转载知乎-备忘]
  2. HDU2255-奔小康赚大钱-二分图最大权值匹配-KM算法
  3. php基础入门
  4. JQuery阻止冒泡事件on绑定中异常情况分析
  5. [matlab]改变矩阵的大小并保存到txt文件
  6. 游戏服务器生成全局唯一ID的几种方法
  7. js中arguments的作用
  8. 那些年我们写过的三重循环----CodeForces 295B Greg and Graph 重温Floyd算法
  9. UNIX基础--用户和基本账户管理
  10. ios开发 第一天
  11. Django 2.0 学习(03):Django视图和URL(下)
  12. Java内存模型探秘
  13. typename的用法
  14. 安装使用nginx
  15. Duplicate entry &#39;xxx&#39; for key &#39;xxx&#39;
  16. C++ 使用system()实现锁定屏幕
  17. CentOS7配置FTP服务器增强版~(零基础学会FTP配置)
  18. Educational Codeforces Round 54 ---1076ABCDE
  19. css初始化minireset.css
  20. SVN: is scheduled for addition, but is missing

热门文章

  1. Java NIO Channel 使用
  2. Java 中如何实现线程间通信
  3. elasticsearch拼写纠错之Term Suggester
  4. k8s中kubeconfig的配置及使用
  5. Choregraphe 2.8.6.23动作失效
  6. redis分析系列之set命令
  7. 学习Java第1天
  8. 如何在pyqt中通过OpenCV实现对窗口的透视变换
  9. 011 Linux 打包与解压 tar
  10. 「Ynoi2018」未来日记