打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
科研领域把握-小白也可以使用Python爬Nature

作者:赵向阳 南京农业大学

责编:文涛 南京农业大学

文末提供爬虫代码,直接复制即可运行,或再github中下载源代码,地址在评论区置顶(今晚由于上传意外,exe程序在19年12月29日中午十二点之后在评论区置顶)。我们已经爬过微生物领域的多个期刊,敬请期待升级版本的exe程序,同时如果感兴趣的朋友可以留言:需要爬取的内容,或者期刊,之后我们会逐步升级到程序中。

大家可以扫此二维码加入讨论群中,并提出自己的建议

写在前面

在研究过程中,尤其是在接触一个新的领域时,需要把握整个领域的整体发展,爬虫相关期刊是一个很好的方式,当然这需要一定的爬虫技术。

  • python爬虫是比较受欢迎的方式,我们的赵向阳在这方面很有经验,本次赵向阳通过关键词爬取Nature官网,作为演示,我们简单收集了文章的题目,DOI,作者,引用等信息,并输出文档。

  • 为了让只要可以使用电脑的人都可以享受爬虫的方便之处,赵向阳也将该程序封装了.exe。请注意!就是大家直接双击就可以运行的爬虫。

.exe 使用指南

首先从评论区提供的github地址下载Nature文件夹 

第一步:打开nature文件夹,并在其中找到exe结尾的文件 

第二步双击运行exe文件: 

运行结束会提示:本次我使用microbiome作为关键词,并下载前两页内容: 


完成之后会在当前文件夹中生成一个data.csv的文件。打开就是我们需要的信息

代码

下面示例代码选用了microbiome的关键词,在nature官网搜索,并下载搜索内容前17页内容

import requests
import json
from lxml import etree
import time

#获取网页相应内容
def get_one_page(url):
try:

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'}
response = requests.get(url, headers=headers)
if response.status_code == 200:
return response.text
return None
except:
print("访问出错")
return None
def parse_one_page(html):
html = etree.HTML(html)
title = html.xpath('//*[@id="content"]/div/div/article/div[1]/div[1]/header/h1/text()')
Accesses = html.xpath('//*[@id="content"]/div/div/article/div[1]/div[1]/header/div/ul/li/p/text()')
DOI = html.xpath('//*[@id="article-info-content"]/div/div[2]/ul/li[4]/p/a/text()')
Published = html.xpath('//*[@id="content"]/div/div/article/div[1]/div[1]/header/ul[1]/li[3]/a/time/text()')
qikan = html.xpath('//*[@id="content"]/div/div/article/div[1]/div[1]/header/p/a[1]/i/text()')
author = html.xpath('//*[@id="content"]/div/div/article/div[1]/div[1]/header/ul[2]//text()')
Article_number = html.xpath('//*[@id="content"]/div/div/article/div[1]/div[1]/header/p/span[1]/text()')
print(title)

yield{
'title' : title,
'Accesses': Accesses,
'Published': Published,
'qikan': qikan,
'author': author,
'Article_number': Article_number,
'DOI': DOI
}

def get_paper_url(search, n):

url = 'https://www.nature.com/search?q=%s' % (search) + '&page=%d' % (n)
html = get_one_page(url)
html = etree.HTML(html)
href = html.xpath('//div/h2/a/@href')
for i in href:
url = 'https://www.nature.com'+str(i)
html = get_one_page(url)
for item in parse_one_page(html):
with open('data.txt', 'a', encoding='utf-8') as f:
f.write(json.dumps(item['title'], ensure_ascii=False))
f.write(json.dumps(item['DOI'], ensure_ascii=False))
f.write(json.dumps(item['qikan'], ensure_ascii=False))
f.write(json.dumps(item['Accesses'], ensure_ascii=False))
f.write(json.dumps(item['Published '], ensure_ascii=False))
f.write(json.dumps(item['Article_number'], ensure_ascii=False))
f.write(json.dumps(item['author'], ensure_ascii=False) + '\n')
time.sleep(2)
def main():
#搜索页数
search = "microbiome"
for i in range(1, 17):
try:

get_paper_url(search, i)

print('第%d页完成' %(i))

except:
print("出错")
print("第%d页出错" % (i))
continue

if __name__ == '__main__':
main()

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Python|简单爬取豆瓣网电影信息
一起学爬虫(Python) — 06
Python私活300元,爬虫批量获取新浪博客文章存储到Word文件
小白学 Python 爬虫(20):Xpath 进阶
用 python 分析基金!让赚钱赢在起跑线
HTML5新增的结构元素
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服