【问题标题】:Web scraping with Beautiful Soup Python使用 Beautiful Soup Python 进行网页抓取
【发布时间】:2022-01-31 15:27:37
【问题描述】:

我目前正在尝试从网站上抓取产品名称,但是,文本包含在我以前从未见过的标签中,因此不知道如何获取文本。

<h1 class="protect" data-category="Jackets" data-ino="SS18J42" data-
rd="02/22/2018" data-rw="1SS18" itemprop="name">Gradient Puffy 
Jacket</h1>

我正在尝试使用 python 2.7 从我的程序中使用漂亮的汤 4 访问名称“渐变蓬松夹克”。我将不胜感激任何见解,因为这已经困扰了我好几天。

【问题讨论】:

    标签: python html beautifulsoup


    【解决方案1】:

    你可以使用BeautifulSoup:

    from bs4 import BeautifulSoup as soup
    s = """
     <h1 class="protect" data-category="Jackets" data-ino="SS18J42" data-
    rd="02/22/2018" data-rw="1SS18" itemprop="name">Gradient Puffy Jacket</h1>
    """
    new_s = soup(s, 'lxml').find('h1', {'itemprop':'name'}).text
    

    输出:

    u'Gradient Puffy Jacket'
    

    【讨论】:

      【解决方案2】:

      添加到 Ajax1234 的答案。如果您通过其他 html 属性进行搜索:

      from bs4 import BeautifulSoup
      s = """
      <h1 class="protect" data-category="Jackets" data-ino="SS18J42" data-
      rd="02/22/2018" data-rw="1SS18" itemprop="name">Gradient Puffy Jacket</h1>
      """
      soup = BeautifulSoup(s, 'html.parser')
      
      print(soup.find('h1', {'class': 'protect'}).text)
      print(soup.find('h1', {'data-category': 'Jackets'}).text)
      print(soup.find('h1', {'data-ino': 'SS18J42'}).text)
      

      等等……

      【讨论】:

        【解决方案3】:

        BeautifulSoup 允许您使用属性访问元素,因此您可以使用以下方法:

        from bs4 import BeautifulSoup
        
        html = """<h1 class="protect" data-category="Jackets" data-ino="SS18J42" data-
        rd="02/22/2018" data-rw="1SS18" itemprop="name">Gradient Puffy 
        Jacket</h1>"""
        
        soup = BeautifulSoup(html, "html.parser")
        print soup.h1.text
        

        【讨论】:

          【解决方案4】:

          借助find in beautifulsoup

          soup = BeautifulSoup(html, "html.parser")
          print soup.find('h1',{'class':'protect'}).text
          

          【讨论】:

            【解决方案5】:

            我们可以使用以下两种方法轻松找到所需的数据。

            更多 ino 请阅读documentations

            第一种方法

            from bs4 import BeautifulSoup as soup
            html = """
            <div itemscope>  <p itemprop="a">1</p>
            """
            src = soup(html, 'lxml').find('p', {'itemprop':'a'}).text
            print(src)
            

            输出 - 1

            第二种方法

            from bs4 import BeautifulSoup
            s = """
            <a class="doctor-name" itemprop="name" href="/doctors/gastroenterologists       /required-code-1689679557">Required-code-or-output</a>
            """
            soup = BeautifulSoup(s, 'html.parser')
            
            print(soup.find('a', {'class': 'doctor-name'}).text)
            print(soup.find('a', {'itemprop': 'name'}).text)
            

            输出 - 必需的代码或输出

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2020-09-04
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多