我目前正在做一个关于网络抓取的项目,我需要从谷歌学者的记录中获得信息。我需要提取文章的DOI,相应的HTML页面如下所示。
<span data-v-d3a5356a="" class="metadata--doi">DOI:
<a data-v-d3a5356a="" id="article--doi--link-metadataSec" href="//doi.org/10.1007/s00508-019-1485-6">10.1007/s00508-019-1485-6</a> </span>我不能用函数来提取它
page = BeautifulSoup(response.text, 'html.parser')
page.find_all("span", "data-v-d3a5356a")如何提取字符串"10.1007/s00508-019-1485-6“?
发布于 2021-11-19 13:48:06
该网页是一个动态页面-这意味着数据是由JavaScript加载的。beautifulsoup不适用于动态页面。你必须使用selenium来抓取这个站点。
但是,如果您在Chrome的网络选项卡下查看,您可以看到数据是从DevTools加载的。您可以直接从该API获取数据。这是link
下面是如何从该API端点提取数据。
import requests
url = 'https://europepmc.org/api/get/articleApi?query=(EXT_ID:30980146%20AND%20SRC:med)&format=json&resultType=core'
r = requests.get(url)
x = r.json()
print(f"DOI: {x['resultList']['result'][0]['doi']}")DOI: 10.1007/s00508-019-1485-6https://stackoverflow.com/questions/70033227
复制相似问题