使用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,当某个期刊的影响因子为空或未知时,则这个期刊必须要在最末的位置,否则代码就可能产生异常,并且在最后的结果不会输出影响因子未知的期刊。
代码如下:
#!/usr/bin/python
#coding=utf-8
import urllib
import urllib2
import re
import time
'''
遇到不懂的问题?Python学习交流群:1136201545满足你的需求,资料都已经上传群文件,可以自行下载!
'''
global rank
global num
url = 'http://www.medsci.cn/sci/index.do?action=search'
headers = {
'POST':url,
'Host':'www.medsci.cn',
'Origin':'http://www.medsci.cn',
"Referer":"http://www.medsci.cn/sci",
"User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36",
}
value = {
"fullname": "",
"province": "医学",
"city": '',
"impact_factor_b": "0",
"impact_factor_s": "0",
"rank": "if_rank_b",
"Submit": "我要查询"
}
def getData(impact):
value["impact_factor_b"] = impact
data = urllib.urlencode(value);
req = urllib2.Request(url, data)
for key in headers:
req.add_header(key, headers[key])
response = urllib2.urlopen(req)
html = response.read();
return html
def saveData(html, rank):
r1 = re.findall(r'_blank >([A-Z|\-|a-z|\s|\(|\)|&]*?)', html);
r2 = re.findall(r'([A-Z|a-z|\-|\s|&|\(|\)]+?)', html);
r3 = re.findall(r'\n([0-9|.]+?)[\s|
关注
打赏
热门博文
- Python骚操作,实现驾考自动答题,这就直接满分了?
- 用Python自动实现图表可视化操作,提高工作效率,又能有更多的时间摸鱼了~
- Python:用tkinter制做一个音乐下载小软件
- Python丨小学妹喜欢看漫画,于是我写了四十行代码获取了它所有漫画
- 女同桌找我要表情包,还好我会Python,分分钟给她下载几十个G...
- 为了防止这上面的文章被封,我连夜用Python获取了它所有内容,真香~
- 这个Python读取文件的方法,堪称天花板级别...
- Python做一个通过输入bv号就能下载视频的工具,评论和弹幕也不放过
- Python爬虫何如抓包?这三个案例手把手教会你,非常详细...
- Python:50行代码实现下载小说,图片章节可自动识别转文字保存...