一开始只是个问题,但到了一半我就想明白了。我在stackoverflow或Google上找不到这样的问题,所以我会把它贴出来,以帮助任何偶然发现它的人。在
我想使用beauthulsoup的SoupStrainer来解析两个标签,而不是html文档中的一个。在
我知道我能做到:
soup = BeautifulSoup(content.text, 'lxml', parse_only=SoupStrainer('p'))
这将得到<p>
标记。我还想得到<h3>
标记。所以我试了一下:
但这行不通,因为SoupStrainer只接受一个论点。在
答案如下。在
下面是在bs4中如何定义
SoupStrainer
的构造函数:因此,添加到@JohnStrood的答案中,您可以使用
^{pr2}$attrs
参数(字典)通过一个或多个属性限制匹配:在
regex
中有更多的能量。使用re
模块。在@玛蒂恩 对于属性,可以使用
^{pr2}$attrs
。在但显然不能为每个HTML应用
class
。您可以使用css
选择器来解决它。在要使SoupStrainer解析多个标记,您需要将它们放在列表中。像这样:
这将解析}标记,即使它们是同级标记(即一个标记不在另一个标记内)。在
content.text
中的<h3>
和{你也可以用两个以上的标签来实现,只要你把它们作为一个列表传递给SoupStrainer。在
一个标签:
^{pr2}$多个标记:
相关问题 更多 >
编程相关推荐