📌  相关文章
📜  BeautifulSoup – 查找所有<li>在<ul>

📅  最后修改于: 2022-05-13 01:55:24.107000             🧑  作者: Mango

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 是

      标签。



      首先,导入所需的模块,然后提供 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
        • tags text = list(parent.descendants)    # printing the content in
        • tag print(text) for i in range(2, len(text), 2):     print(text[i], end=" ")


        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 标签。在此之后,我们将简单地遍历所有

      • 标签,并在 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=" ")
        

        输出: