Я использую архивный API для поиска научных работ с использованием python. Для запроса с одним термином arxiv API работает отлично, но для запроса с несколькими терминами (ключевая фраза) API использует только первый термин.
Например :
import urllib.request as ur
from bs4 import BeautifulSoup
url = 'http://export.arxiv.org/api/query?search_query=all:electron'
s = ur.urlopen(url)
sl = s.read()
soup = BeautifulSoup(sl, 'html.parser')
papers=[soup.find_all('title')]
print(soup)
Вывод (распечатать переменную супа)
Здесь я использовал термин запроса электрон, поиск Arxiv API также электронный термин (выделено).
Но я использовал термин запроса, скажем, квантовая сложность черной дыры, arxiv API взял только первое слово (квант).
import urllib.request as ur
from bs4 import BeautifulSoup
url = 'http://export.arxiv.org/api/query?search_query=all:quantum complexity of a black hole'
#url='http://export.arxiv.org/api/query?search_query=ti:"quantum complexity of a black hole"&sortBy=lastUpdatedDate&sortOrder=ascending'
s = ur.urlopen(url)
sl = s.read()
soup = BeautifulSoup(sl, 'html.parser')
print(soup)
Как я могу выполнять поиск по целым ключевым словам (квантовая сложность черной дыры), чтобы он возвращал научные статьи, содержащие эти ключевые слова?
Вам нужно будет закодировать параметры запроса
import urllib.parse
import urllib.request as ur
from bs4 import BeautifulSoup
query = urllib.parse.quote("all:quantum complexity of a black holeu")
url = 'http://export.arxiv.org/api/query?search_query=' + query
s = ur.urlopen(url)
sl = s.read()
soup = BeautifulSoup(sl, 'html.parser')
print(soup)