Python-如何使用Beautiful Soup查找ID为“ value”的所有跨度的文本?

我想获取所有具有“值”类的跨度文本.

然后,我需要使用文本的前9个字符来获取页面的在线ISSN.我不需要以“(print)”结尾的文本,但我确实需要以“(在线)结尾”的文本

<span class="bold">ISSN: </span>
<span class="value">0890-037X (Print)</span>
<span class="value">1550-2740 (Online)</span>

在这里,我需要获取“ 1550-2740”,因为它是在线ISSN.
我想我需要找到所有的跨度,检查类,然后检查文本.如果文字以“(在线)”结尾,那么我需要获取前9个字符.

我该怎么做呢?
先感谢您.

解决方法:

使用find_all提取元素.创建一个生成器(或列表,如果需要的话),它只是每个生成器的text属性.过滤掉不以“(Online)”结尾的那些,并对其进行切片以仅提取ISBN.我已经使用了生成器和next()来获得第一次出现,但是如果您想全部使用(如果有多个),则可以使用列表.

希望这适用于整个文件!

soup = BeautifulSoup(open("p.html").read(), "lxml")
txt = (t.text for t in soup.find_all("span", class_="value"))
isbn = next(t[:9] for t in txt if t.endswith("(Online)"))

这表示isbn为“ 1550-2740”.

上一篇:20203117邓子啸《Python程序设计》实验四报告


下一篇:python-美丽的汤-在文章中找到第一个链接