首页 > 解决方案 > 如何使用 BeautifulSoup 库获取所有带有“titular”类的标签?

问题描述

我已经尝试过这段代码,但即使它们与这个类有多个标签,我也只能从函数中得到一个元素。

标签: pythonfunctionbeautifulsoup

解决方案


页面的很大一部分(实际上是大部分)是用 JavaScript 呈现的,这从文章加载之前(相对)较长的等待时间可以看出。该requests模块不执行 JavaScript,因此只有一个a.titular元素。您可以使用selenium,等待 JavaScript 呈现,然后将页面源传递给bs4.BeautifulSoup().

>>> import bs4
>>> from selenium import webdriver
>>> browser = webdriver.Firefox()
>>> browser.get("https://elperuano.pe/")
>>> soup = bs4.BeautifulSoup(browser.page_content, features="html.parser")
>>> len(soup.select("a.titular"))
29

您必须安装selenium: $ pip install selenium

仅供参考:a.titular选择器等效于a[class='titular']选择器,它选择所有<a class="titular">元素。(有关 CSS 选择器的列表,请参阅本指南。)


推荐阅读