python爬取文献代码_使用python爬取MedSci上的影响因子排名靠前的文献
使用python爬取medsci上的期刊信息,通过设定条件,然后获取相应的期刊的的影响因子排名,期刊名称,英文全称和影响因子。主要过程如下:
首先,通过分析网站http://www.medsci.cn/sci的交互过程。可以使用谷歌或火狐浏览器的“审查元素-->Network”,然后就可以看到操作页面就可以看到网站的交互信息。当在网页上点击“我要查询”时,网页会发送一个POST消息给服务器,然后,服务器返回查询结果
然后,将查询到的结果使用正则表达式提取出需要的数据。
最后将提取出的数据输出到文件。
代码的关键在于分析POST数据报,找出需要发送到服务器的数据,以及HTTP的报文头的填写。
通过浏览器的“审查元素-->Network-->POST的链接-->Headers”,能够找到一个form Data的数据表格,这个数据表格保存着所有的查询条件。
在代码中通过对这些数据表格进行赋值,即可模拟浏览器发送post请求,然后将得到html代码。接下来只需对获取到的数据做进一步的处理即可。
代码中的部分变量做简单的说明:
num:表示要获取的期刊的数目
value中的参数保存着查询条件:每个子条件的参数名意义如下:
fullname:期刊关键字
province:期刊领域中的大类
city:期刊中的二级分类、
impact_factor_b:IF范围小于的值
impact_factor_s:IF范围大于的值
rank:排列方式
这个代码有个bug,当某个期刊的影响因子为空或未知时,则这个期刊必须要在最末的位置,否则代码就可能产生异常,并且在最后的结果不会输出影响因子未知的期刊。
代码如下:
1 #!/usr/bin/python
2 #coding=utf-8
3 importurllib4 importurllib25 importre6 importtime7
8 globalrank9 globalnum10 url = ‘http://www.medsci.cn/sci/index.do?action=search‘
11 headers ={12 ‘POST‘:url,13 ‘Host‘:‘www.medsci.cn‘,14 ‘Origin‘:‘http://www.medsci.cn‘,15 "Referer":"http://www.medsci.cn/sci",16 "User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36",17 }18 value ={19 "fullname": "",20 "province": "医学",21 "city": ‘‘,22 "impact_factor_b": "0",23 "impact_factor_s": "0",24 "rank": "if_rank_b",25 "Submit": "我要查询"
26 }27
28 defgetData(impact):29 value["impact_factor_b"] =impact30 data =urllib.urlencode(value);31 req =urllib2.Request(url, data)32 for key inheaders:33 req.add_header(key, headers[key])34 response =urllib2.urlopen(req)35 html =response.read();36 returnhtml37
38 defsaveData(html, rank):39 r1 = re.findall(r‘_blank >([A-Z|\-|a-z|\s|\(|\)|&]*?)‘, html);40 r2 = re.findall(r‘
([A-Z|a-z|\-|\s|&|\(|\)]+?)‘, html);41 r3 = re.findall(r‘\n([0-9|.]+?)[\s|
43 le1 =len(r1)44 le2 =len(r2)45 le3 =len(r3)46 le =le147 if le2 <48 le="le2;49" if le3>
52 count =053 flag =True54 if le < 50:55 flag =False56 while count < le and rank <57 rank>
58 #print ‘count:‘,count,‘, le:‘,le,‘, rank:‘,rank,",num:",num
59 str1 = str(rank)+","+r1[count]+","+r2[count]+","+r3[count]+"\n"
60 count += 1
61 f.write(str1)62
63 return r3[count-1], rank,flag #return the last impact
64
65 if __name__ == "__main__":66 f = open("res.csv","w+")67 impact =068 rank =069 num = 100
70 flag =True71 while rank < num andflag:72 html =getData(impact);73 impact, rank, flag =saveData(html, rank);74 print ‘already get data number:‘,rank75 time.sleep(2);76 f.close()77 print ‘finished!‘
原文:http://www.cnblogs.com/liuwu265/p/4106979.html
57>48>
python爬取文献代码_使用python爬取MedSci上的影响因子排名靠前的文献相关推荐
- python画pr曲线代码_利用Python中的numpy包实现PR曲线和ROC曲线的计算
闲来无事,边理解PR曲线和ROC曲线,边写了一下计算两个指标的代码.在 python 环境下,sklearn里有现成的函数计算ROC曲线坐标点,这里为了深入理解这两个指标,写代码的时候只用到numpy ...
- python推箱子游戏代码_用python入门知识做推箱子游戏,若能打过第三关,则可以学会编程...
不得不说,Python小游戏是最适合入门编程的项目,因为太简单! 无论懂或完全不懂python,这样的小游戏,你都可以直接开发出来,原因很简单: 在详细教程里,会有从零基础开始,一步一步的教你完成这个 ...
- python数据预处理的代码_【Python基础系列】常见的数据预处理方法(附代码)
↑↑↑点击上方蓝字,回复资料,嘿嘿,10个G的惊喜 本文简单介绍python中一些常见的数据预处理,包括数据加载.缺失值处理.异常值处理.描述性变量转换为数值型.训练集测试集划分.数据规范化. 1. ...
- python英雄对战代码_用 Python 分析了 1982 场英雄联盟数据,开局前预测游戏对局胜负!...
前言 如今,只要随便进入一个网吧,都会发现玩<英雄联盟>的人是最多的,可以这么说,<英雄联盟>已经是当之无愧的端游一哥.而在拥有如此基数玩家的<英雄联盟>,已经不仅 ...
- python 打卡记录代码_利用Python实现对考勤打卡数据处理的总结
利用Python实现对考勤打卡数据处理的总结 一.背景交代 二.说明 三. 8种方法 1. 查看文件是否存在 2. 导入excel文件,并把数据保存为dataframe格式 3. 计算程序运行时间 4 ...
- python输入汉字的代码_基于python的汉字转GBK码实现代码
如图,"广"的编码为%B9%E3,暂且把%B9称为节编码,%E3为字符编码(第二编码). 思路: 从GBK编码页面收集汉字 http://ff.163.com/newflyff/g ...
- python英文词云代码_使用python实现个性化词云的方法
先上图片 词云图 需要模板 pip install jieba pip install wordcloud 还需要安装另外两个东西这两个我也不太懂借鉴百度写上去的 pip install scipy ...
- python绘制繁花曲线代码_使用python和pygame绘制繁花曲线的方法
前段时间看了一期<最强大脑>,里面各种繁花曲线组合成了非常美丽的图形,一时心血来潮,想尝试自己用代码绘制繁花曲线,想怎么组合就怎么组合. 真实的繁花曲线使用一种称为繁花曲线规的小玩意绘制, ...
- python怎么运行matlab代码_用python运行matlab代码
我得到了一个错误:Traceback (most recent call last): File "", line 1, in File "C:\Users\XYZ\Ap ...
最新文章
- Log4cplus1.04的使用
- Facebook又放大招!开源框架Pythia让深度学习更高效
- NLayerAppV3-Distributed Service Layer(分布式服务层)
- PLSQL_day01
- C 语言结构体_点运算符( . )和箭头运算符( - )的区别
- 将字符串转换为列显示
- 通过样式class也是可以控制超链接是否弹窗
- tp中 M和 D的区别
- zookeeper安装_Centos7安装配置Zookeeper
- 物联那点事儿之自制网络温湿度计(arduino+点灯科技篇)
- Ruff Chain 将亮相新加坡WDAS 2018世界数字资产峰会
- android 按键 设置在哪,如何在Android设备上设置按键和按键?
- reached end of file while parsing
- 技能分享 | 麦肯锡教给我的写作武器:如何讲好一句话
- word文档封面免费下载_为Word 2007文档添加封面
- 做你喜欢做的事,财富会随之而来
- 上传文件的几种主要方法。
- 微星B550M MORTAR WIFI 的蓝牙模块消失的解决办法
- 打开浏览器显示找不到服务器DNS地址,电脑浏览器找不到服务器dns地址
- 八、Docker Swarm
热门文章
- python 录音本地转文字_Waston+Python,6行代码实现音频转文字,轻松做字幕~
- UVALive - 3938 Ray, Pass me the dishes!
- 数值分析(10):数值积分之Gauss型求积公式
- ShardingSphere 从源码查看hint为什么失效
- 4、QT背景音乐设置,动图的播放
- JAVA语言:利用递归方法判断字符串是否为回文
- Excelize 发布 2.1.0 版本, Go 语言最受欢迎的 Excel 基础库
- 中国最年长慰安妇对日索赔20年无果去世-慰安妇-对日索赔-日本侵华战争
- web包下载_Plex Home Theater免费版下载-多功能媒体播放器 v1.4.1.469 免费版
- CSP 201712-4 行车路线 迪杰斯特正解