首页 > 解决方案 > 我怎样才能让 BeautifulSoup 找到多个标签?

问题描述

我正在测试一个程序,用于将维基百科的内容打印到提示中。我已经得到了一些输出,但它有点乱。所以我想只获取标签的内容,<p><b>是维基百科用来显示内容的两个。这是我的代码:

import urllib.request
from bs4 import BeautifulSoup


URL = input("Enter the url (only wikipedia supported, default url https://?.wikipedia.org/wiki) :  ")



page = urllib.request.urlopen(URL)
html_doc = page.read()
soup = BeautifulSoup(html_doc, 'html.parser')





for x in soup.find_all('p').find_all('b'):
    print(x.string)

询问标记是因为维基百科在那里显示了语言,所以它取决于。如您所见,我又添加了一个 .find_all ,因为我不知道如何添加它。对不起我的英语不好和我的代码不好,因为我与这个请求字段不太相关。谢谢

标签: pythonpython-3.x

解决方案


BeautifulSoup.find_all返回 aResultSet它本质上是一个元素列表。您需要自己遍历该列表以进行第二次操作。

import urllib.request
from bs4 import BeautifulSoup

URL = input("Enter the url (only wikipedia supported, default url https://?.wikipedia.org/wiki) :  ")

page = urllib.request.urlopen(URL)
html_doc = page.read()
soup = BeautifulSoup(html_doc, 'html.parser')

for elem in soup.find_all('p'):
    for x in elem.find_all('b'):
        print(x.string)

推荐阅读