使用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 import urllib
 4 import urllib2
 5 import re
 6 import time
 7
 8 global rank
 9 global num
10 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 def getData(impact):
29     value["impact_factor_b"] = impact
30     data = urllib.urlencode(value);
31     req = urllib2.Request(url, data)
32     for key in headers:
33         req.add_header(key, headers[key])
34     response = urllib2.urlopen(req)
35     html = response.read();
36     return html
37
38 def saveData(html, rank):
39     r1 = re.findall(r‘_blank >([A-Z|\-|a-z|\s|\(|\)|&]*?)</a>‘, html);
40     r2 = re.findall(r‘<br>([A-Z|a-z|\-|\s|&|\(|\)]+?)</td>‘, html);
41     r3 = re.findall(r‘\n([0-9|.]+?)[\s|<]‘, html);
42
43     le1 = len(r1)
44     le2 = len(r2)
45     le3 = len(r3)
46     le = le1
47     if le2 < le:
48         le = le2;
49     if le3 < le:
50         le = le3
51
52     count = 0
53     flag = True
54     if le < 50:
55         flag = False
56     while count < le and rank < num:
57         rank += 1
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 = 0
68     rank = 0
69     num = 100
70     flag = True
71     while rank < num and flag:
72         html = getData(impact);
73         impact, rank, flag = saveData(html, rank);
74         print ‘already get data number:‘,rank
75         time.sleep(2);
76     f.close()
77     print ‘finished!‘
时间: 2024-10-15 02:47:16

使用python爬取MedSci上的影响因子排名靠前的文献的相关文章

用Python爬取网页上的小说,让你从此告别书荒!

人生苦短,我用Python.有道爱看小说的小伙伴们,在看小说的期间总会遇到那么一段书荒期,在这段期间想看书却找不到,要么就是要VIP,要么就是下载不了.所以学会爬取网站上的小说是很有必要的,今天就以爬取笔趣阁小说为例,进行网页上小说的爬取.首先当我们打开笔趣阁的网页时,我们会看到很多的小说列表,如下图所示: ? 就拿爬取图上所示的小说来说,我们要进行以下的几个步骤: 爬取小说首先要构建请求表头: ? 然后我们的获取下载链接: ? 接下来我们进行文章内容的爬取: ? 最后我们将爬取来的小说写入到文

利用Python爬取OPGG上英雄联盟英雄胜率及选取率信息

一.分析网站内容 本次爬取网站为opgg,网址为:” http://www.op.gg/champion/statistics” ? 由网站界面可以看出,右侧有英雄的详细信息,以Garen为例,胜率为53.84%,选取率为16.99%,常用位置为上单 现对网页源代码进行分析(右键鼠标在菜单中即可找到查看网页源代码).通过查找“53.84%”快速定位Garen所在位置 由代码可看出,英雄名.胜率及选取率都在td标签中,而每一个英雄信息在一个tr标签中,td父标签为tr标签,tr父标签为tbody标

用Python爬取猫眼上的top100评分电影

代码如下: # 注意encoding = 'utf-8'和ensure_ascii = False,不写的话不能输出汉字 import requests from requests.exceptions import RequestException import re import json #from multiprocessing import Pool # 测试了下 这里需要自己添加头部 否则得不到网页 headers = { 'User-Agent':'Mozilla/5.0 (Win

分手后,小伙怒用Python爬取上万空姐照片,赢取校花选举大赛!

首先展示下Python爬取到的成果:   我做什么都要争第一,这次的校花投票选举大赛也不例外,虽然我是个男的......但是我看到了前女友竟然已经有三百多票排到第三名了,我怎么能眼睁睁的看着她优秀呢?我必须要让她排到前三除外,·不行,必须是前十开外!我想到一个办法就是用Python开发一个百度爬虫,爬取百度所有美女的照片,然后申请多个账号进行参赛.   其实比起Python爬取图片外,我对微信上的投票小程序也有所研究,已经有了Python实现微信上刷票脚本的思路,这个我下次再分享大家,这次先学习

Python编写网页爬虫爬取oj上的代码信息

OJ升级,代码可能会丢失. 所以要事先备份. 一开始傻傻的复制粘贴, 后来实在不能忍, 得益于大潇的启发和聪神的原始代码, 网页爬虫走起! 已经有段时间没看Python, 这次网页爬虫的原始代码是 python2.7版本, 试了一下修改到3.0版本, 要做很多包的更替,感觉比较烦,所以索性就在这个2.7版本上完善了. 首先观赏一下原始代码,我给加了一些注释: # -*- coding: cp936 -*- import urllib2 import urllib import re import

利用Python爬取豆瓣电影

目标:使用Python爬取豆瓣电影并保存MongoDB数据库中 我们先来看一下通过浏览器的方式来筛选某些特定的电影: 我们把URL来复制出来分析分析: https://movie.douban.com/tag/#/?sort=T&range=0,10&tags=%E7%94%B5%E5%BD%B1,%E7%88%B1%E6%83%85,%E7%BE%8E%E5%9B%BD,%E9%BB%91%E5%B8%AE 有3个字段是非常重要的: 1.sort=T 2.range=0,10 3.tag

没有内涵段子可以刷了,利用Python爬取段友之家贴吧图片和小视频(含源码)

由于最新的视频整顿风波,内涵段子APP被迫关闭,广大段友无家可归,但是最近发现了一个"段友"的app,版本更新也挺快,正在号召广大段友回家,如下图,有兴趣的可以下载看看(ps:我不是打广告的,没收广告费的) 同时,之前同事也发了一个贴吧的段子聚居地,客官稍等,马上奉上连接:段友之家?https://tieba.baidu.com/f?ie=... 然后呢,看到上面,确实好多段友在上面,于是乎,我就想爬取他们的图片和小视频,就有了这篇文章的主题: 其实吧,用Python爬取网站数据是最基

通过python 爬取网址url 自动提交百度

通过python 爬取网址url 自动提交百度 昨天同事说,可以手动提交百度这样索引量会上去. 然后想了下.是不是应该弄一个py 然后自动提交呢?想了下.还是弄一个把 python 代码如下: import os import re import shutil REJECT_FILETYPE = 'rar,7z,css,js,jpg,jpeg,gif,bmp,png,swf,exe' #定义爬虫过程中不下载的文件类型 def getinfo(webaddress): #'#通过用户输入的网址连接

最后轻松一夏,周末利用python爬取“陈翔六点半”搞笑视频!

觉得程序员再忙也需要给自己安排一点娱乐时间,对自己好点,自己对自己不好,谁会? 自己娱乐一般会有:跑步.看电影.小视频,而小视频是最家常的娱乐方式,看得最多的小视频是「 陈翔六点半 」,咦! 拍得搞笑,演技也一流,也不乏有内涵!非常推荐大家看看. 时间太贵,我耗不起 正题 先上Python爬取小视频的效果图,duang.duang.duang.想下载什么就是什么,哈哈. 打开浏览器(电脑版,方便调试)输入微博 url 点击输入框,输入「陈翔六点半」,回车搜索 但是发现在这个页面就只用几个视频.滑