当你点击搜索按钮时,它会将你重定向到一个链接
https://ieeexplore.ieee.org/search/searchresult.jsp?newsearch=true&queryText=smart%20grid
queryText 参数是您的搜索词。内容是使用 JavaScript 加载的,因此您不能只向链接发送请求然后解析响应。你可以
- 使用 selenium 转到链接或
- 模拟该页面上使用的 XHR 请求
使用 Selenium,转到 url(使用您的首选搜索词),单击加载更多按钮,直到您加载了足够的文章,然后得到响应。
我更喜欢模拟 XHR 请求,因为它更快。
import requests
# change this for a different search term
search_term = "smart grid"
# change this for different page no
page_no = 1
headers = {
"Accept": "application/json, text/plain, */*",
"Origin": "https://ieeexplore.ieee.org",
"Content-Type": "application/json",
}
payload = {
"newsearch": True,
"queryText": search_term,
"highlight": True,
"returnFacets": ["ALL"],
"returnType": "SEARCH",
"pageNumber": page_no
}
r = requests.post(
"https://ieeexplore.ieee.org/rest/search",
json=payload,
headers=headers
)
page_data = r.json()
for record in page_data["records"]:
print(record["articleTitle"])
print('https://ieeexplore.ieee.org'+record["documentLink"], end="\n----\n")
输出
IEEE Vision for Smart Grid Controls: 2030 and Beyond Reference Model
https://ieeexplore.ieee.org/document/6598993/
----
IEEE Vision for Smart Grid Control: 2030 and Beyond Roadmap
https://ieeexplore.ieee.org/document/6648362/
----
Software models for Smart Grid
https://ieeexplore.ieee.org/document/6225717/
----
IEEE Vision for Smart Grid Communications: 2030 and Beyond Roadmap
https://ieeexplore.ieee.org/document/6690098/
----
IEEE Smart Grid Vision for Computing: 2030 and Beyond Roadmap
https://ieeexplore.ieee.org/document/7376995/
----
...
JSON 格式的响应,我们可以使用 python 解析得到你想要的输出。 URL https://ieeexplore.ieee.org/rest/search 可以使用浏览器开发工具上的 network 选项卡获取。