我没有太多从网站上抓取数据的经验。我通常使用Python的“请求”和“ BeautifulSoup”。
我需要从此处https://publons.com/awards/highly-cited/2019/下载表格 我通常用鼠标右键单击并检查,但是格式不是我惯用的格式。我做了一些阅读,似乎是Javascript,可以从https://publons.com/static/cache/js/app-59ff4a.js中提取数据。我读了其他推荐Selenium和PhantomJS的文章。但是,由于我不是该计算机的管理员(我使用Windows),因此无法修改路径。关于如何解决这个问题的任何想法?如果没有选择Python,很高兴与R搭配使用。
谢谢!
答案 0 :(得分:3)
如果您通过开发工具监视网络流量,您将看到该页面进行的API调用以更新内容。返回的信息为json格式。
例如:第1页
import requests
r = requests.get('https://publons.com/awards/api/2019/hcr/?page=1&per_page=10').json()
您可以循环更改页面参数以获得所有结果。
结果总数已通过r['count']
在第一个响应中指出,因此很容易计算要循环的#页,每页10个结果。只要确保对您的要求保持礼貌即可。
概述:
import math, requests
with requests.Session() as s:
r = s.get('https://publons.com/awards/api/2019/hcr/?page=1&per_page=10').json()
#do something with json. Parse items of interest into list and add to a final list? Convert to dataframe at end?
number_pages = math.ceil(r['count']/10)
for page in range(2, number_pages + 1):
#perhaps have a delay after X requests
r = s.get(f'https://publons.com/awards/api/2019/hcr/?page={page}&per_page=10').json()
#do something with json. Parse items of interest into list and add to a final list? Convert to dataframe at end?