使用 python 使用 ORCID id 从 ORCID 搜索中提取凭据
Extracting credentials from ORCID seach with ORCID id using python
我重新编辑了我的问题,以便更好地解释我的问题
我正在尝试从 ORCID 数据库(科学文章和作者的数据库)中获取一个人的名字和姓氏。
我使用 requests_html
和 .render()
访问 url:
"https://orcid.org/orcid-search/search?searchQuery=0000-0001-9077-1041" 并从中获取 html 代码。 Html 被解析并存储在 _text
列表中。 (如果你访问 url 你会看到它包含 ID 为“0000-0001-9077-1041”的 ORCID 数据库的搜索结果 - 姓名:“Andreas”和姓氏:“Leimbach”以及一些附加数据)。
我想从该页面的 html 代码中检索姓名文本。但是,当我多次 运行 程序时,有时 name 和 last name 在输出结果中,有时却没有。我希望程序总是检索相同的数据。
我使用以下 Python 脚本:
from requests_html import HTMLSession
from bs4 import BeautifulSoup
def GetCredentialsFromORCID(_id):
base_url = "https://orcid.org/orcid-search/search?searchQuery=" + _id
session = HTMLSession()
response = session.get(base_url)
response.html.render()
soup = BeautifulSoup(response.html.html, 'lxml')
_text = soup.get_text().strip().split()
print("This is whet we got:\n", _text)
GetCredentialsFromORCID("0000-0001-9077-1041")
(尝试 运行 这段代码几次(5 - 10 次以上)然后自己看看)。
我只能假设这可能与此页面使用 JavaScript 这一事实有关,因为我一直收到:
Please enable JavaScript to continue using this application.
在控制台中,但我对此了解不多。
有人可以帮我吗?
该网页实际上会在初始搜索后继续 运行 扩展搜索。您可以 re-write 您的代码将扩展搜索用作初始调用,然后您只需要请求。你当然可以 re-work 下面的例子。它的结构与您的原始结构一样,只是接受一个 id 并返回一个响应。包括最少的错误处理。
def GetCredentialsFromORCID(_id):
import requests
r = requests.get(f'https://pub.orcid.org/v3.0/expanded-search/?start=0&rows=200&q=orcid:{_id}',
headers = {'User-Agent':'Mozilla/5.0', 'accept' : 'application/json'})
try:
return r.json()
except Exception as e:
return (f'Error for {_id}', e)
print(GetCredentialsFromORCID("0000-0001-9077-1041"))
我重新编辑了我的问题,以便更好地解释我的问题
我正在尝试从 ORCID 数据库(科学文章和作者的数据库)中获取一个人的名字和姓氏。
我使用 requests_html
和 .render()
访问 url:
"https://orcid.org/orcid-search/search?searchQuery=0000-0001-9077-1041" 并从中获取 html 代码。 Html 被解析并存储在 _text
列表中。 (如果你访问 url 你会看到它包含 ID 为“0000-0001-9077-1041”的 ORCID 数据库的搜索结果 - 姓名:“Andreas”和姓氏:“Leimbach”以及一些附加数据)。
我想从该页面的 html 代码中检索姓名文本。但是,当我多次 运行 程序时,有时 name 和 last name 在输出结果中,有时却没有。我希望程序总是检索相同的数据。
我使用以下 Python 脚本:
from requests_html import HTMLSession
from bs4 import BeautifulSoup
def GetCredentialsFromORCID(_id):
base_url = "https://orcid.org/orcid-search/search?searchQuery=" + _id
session = HTMLSession()
response = session.get(base_url)
response.html.render()
soup = BeautifulSoup(response.html.html, 'lxml')
_text = soup.get_text().strip().split()
print("This is whet we got:\n", _text)
GetCredentialsFromORCID("0000-0001-9077-1041")
(尝试 运行 这段代码几次(5 - 10 次以上)然后自己看看)。
我只能假设这可能与此页面使用 JavaScript 这一事实有关,因为我一直收到:
Please enable JavaScript to continue using this application.
在控制台中,但我对此了解不多。
有人可以帮我吗?
该网页实际上会在初始搜索后继续 运行 扩展搜索。您可以 re-write 您的代码将扩展搜索用作初始调用,然后您只需要请求。你当然可以 re-work 下面的例子。它的结构与您的原始结构一样,只是接受一个 id 并返回一个响应。包括最少的错误处理。
def GetCredentialsFromORCID(_id):
import requests
r = requests.get(f'https://pub.orcid.org/v3.0/expanded-search/?start=0&rows=200&q=orcid:{_id}',
headers = {'User-Agent':'Mozilla/5.0', 'accept' : 'application/json'})
try:
return r.json()
except Exception as e:
return (f'Error for {_id}', e)
print(GetCredentialsFromORCID("0000-0001-9077-1041"))