gpt4 book ai didi

python - 在 Python 中使用 BeautifulSoup 抓取带下标的文本

转载 作者:太空宇宙 更新时间:2023-11-03 16:49:17 25 4
gpt4 key购买 nike

全部!我正在开发我的第一个网络爬虫,当给定“CitedBy”页面 like this 时,它会从 PMC 获取作者姓名、URL 和论文名称。

我的程序可以很好地获取作者姓名和 URL,但是我只能获取一些论文标题,我怀疑这是由于下标和上标造成的。

这是我到目前为止所得到的:

    import requests
from bs4 import BeautifulSoup
import re

url = 'http://www.ncbi.nlm.nih.gov/pmc/articles/PMC2593677/citedby/?page=0'
req = requests.get(url)
plain_text = req.text
soup = BeautifulSoup(plain_text, "lxml") #soup object

titles_list = []

for items in soup.findAll('div', {'class': 'title'}):
title = items.string
if title is None:
title = ("UHOH") #Problems with some titles
#print(title)
titles_list.append(title)

当我运行这部分代码时,我的抓取工具会给出以下结果:

  1. 寻找并比较拟南芥及其外类群木瓜、杨树和葡萄的同线性区域:CoGe 与 Rosids
  2. 控制结瘤过程的 bean 科植物基因的综合比较基因组和转录组分析
  3. 植物中RPL9的剂量敏感性和核糖体蛋白基因的协同进化

整个页面依此类推...

此页面上我得到“UHOH”的一些论文是:

  • 比较细胞特异性转录组学揭示柳枝稷和其他 C4 谱系中 C4 光合作用途径的差异
  • 结合 F1 后代的相位感知低通测序策略,从头构建远交朝鲜蓟的基因组序列

  • 拟南芥和蒺藜苜蓿非生物胁迫响应基因的跨科翻译基因组

我认为我在这里列出的前两个是有问题的,因为“C4”和“F1”实际上是“C 下标 4”和“F 下标 1”。对于第三个,“Medicago truncatula”位于“em”HTML 标签中,因此我怀疑这就是我的抓取工具无法抓取它的原因。

我想到的唯一替代解决方案是使我的“soup.findAll”更具体,但这最终并没有帮助我。我尝试过:

for items in soup.findAll('div', {'class': 'title'}):
title = items.string
if title is None:
for other in soup.findAll('a', {'class': 'view'}):
title = other.string

但遗憾的是,这不起作用......所以我不太确定如何解决这个问题。有谁知道如何处理此类特殊情况?太感谢了!

最佳答案

感谢@LukasGraf,我有了答案!

由于我使用的是 BeautifulSoup,所以我可以使用 node.get_text() 。它的工作方式与普通的“.string”不同,因为它还返回标签下的所有文本,下标和“em”HTML 标记文本就是这种情况。

关于python - 在 Python 中使用 BeautifulSoup 抓取带下标的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36023346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com