BeautifulSoup – 查找 中的所有
先决条件: Beautifulsoup
Beautifulsoup 是一个用于网页抓取的Python模块。在本文中,我们将讨论如何使用 Beautifulsoup 从
- 中检索
- 标签的内容。
需要的模块:
- bs4: Beautiful Soup(bs4) 是一个Python库,用于从 HTML 和 XML 文件中提取数据。
- 请求:请求允许您非常轻松地发送 HTTP/1.1 请求。这个模块也没有内置于Python。
方法
- 导入模块
- 提供一个带有 ul 和 li 标签的 URL
- 提出要求
- 创建 beautifulsoup 对象
- 找到所需的标签
- 检索li下的内容
在代码下方,HTML 片段包含一个带有 ul 和 li 标签的正文,这些标签已由 beautifulsoup 对象获取。
方法 1:使用后代和 find()
在这个方法中,我们使用beautifulsoup 中存在的descendants属性,它基本上返回一个列表迭代器对象,它包含父标签的所有后代/子代,这里的parent 是
- 标签。
- tags text = list(parent.descendants) # printing the content in
- tag print(text) for i in range(2, len(text), 2): print(text[i], end=" ")
- 标签,并在 text 属性的帮助下,我们将打印出现在
- 标签中的文本。
例子:
蟒蛇3
# importing the modules import requests from bs4 import BeautifulSoup # providing url url = 'https://auth.geeksforgeeks.org/user/adityaprasad1308/articles' # creating request object req = requests.get(url) # creating soup object data = BeautifulSoup(req.text, 'html') # finding all li tags in ul and printing the text within it data1 = data.find('ul') for li in data1.find_all("li"): print(li.text, end=" ")
输出:
首先,导入所需的模块,然后提供 URL 并创建它的请求对象,该对象将由 beautifulsoup 对象解析。现在借助 beautifulsoup 中的find()函数,我们将找到
及其对应的- 标签。在此之后,descendants 属性将为我们提供转换回列表所需的列表迭代器对象。这个列表有一个下一行项目,带有文本的标签,最后是唯一的文本。因此,我们将打印列表中每隔一个连续元素。
例子:
Python3
# importing the modules import requests from bs4 import BeautifulSoup # providing url url = "https://auth.geeksforgeeks.org/user/adityaprasad1308/articles" # creating requests object html = requests.get(url).content # creating soup object data = BeautifulSoup(html, 'html.parser') # finding parent
- tag
parent = data.find("body").find("ul")
# finding all
Python3
# importing the modules import requests from bs4 import BeautifulSoup # providing url url = 'https://auth.geeksforgeeks.org/user/adityaprasad1308/articles' # creating request object req = requests.get(url) # creating soup object data = BeautifulSoup(req.text, 'html') # finding all li tags in ul and printing the text within it data1 = data.find('ul') for li in data1.find_all("li"): print(li.text, end=" ")
输出:
方法 2:使用 find_all()
方法与上面的示例相同,但是我们不是找到主体,而是找到 ul 标签,然后在find_all()函数的帮助下找到所有 li 标签,该函数将标签名称作为参数并返回所有 li 标签。在此之后,我们将简单地遍历所有