一开始是个问题,但到了一半我就明白了。我在stackoverflow或google上找不到这样的问题,所以无论如何我都会把它贴出来帮助任何一个偶然发现它的人。
我想使用beautifulsoup中的soupstrainer来解析两个标签,而不是html文档中的一个。
我知道我能做到:
soup = BeautifulSoup(content.text, 'lxml', parse_only=SoupStrainer('p'))
这将得到
<p>
标记。我还想得到<h3>
标签。所以我试了一下:soup = BeautifulSoup(content.text, 'lxml', parse_only=SoupStrainer('h3', 'p'))
但这不起作用,因为Soupstrainer只接受一个论点。
答案如下。
最佳答案
要使soupstrainer解析多个标记,需要将它们放入一个列表中。这样地:
soup = BeautifulSoup(content.text, 'lxml', parse_only=SoupStrainer(['h3', 'p']))
这将解析
<h3>
中的<p>
和content.text
标记,即使它们是同级标记(即一个标记不在另一个标记内)。你也可以用两个以上的标签,只要你把它们作为一个列表传递给Soupstrainer。
一个标签:
soup = BeautifulSoup(content.text, 'lxml', parse_only=SoupStrainer('p'))
多个标记:
soup = BeautifulSoup(content.text, 'lxml', parse_only=SoupStrainer(['h1', 'h3', 'p', 'h4']))