【问题标题】:Extract <td> Elements using BS4使用 BS4 提取 <td> 元素
【发布时间】:2021-04-30 18:48:24
【问题描述】:

我正在尝试浏览一个网站并使用 Chromedriver 提取一些信息。我在使用 BeautifulSoup 时遇到的问题是我找不到在 class 中提取表格的方法。

我尝试提取信息的方式如下所示:

results = soup.find_all("div", class_="widget widgetLarge fpPerfglissanteclassique")

有没有办法改变这一行,使它只返回&lt;td&gt;...&lt;/td&gt; 中的信息,可以在类内部找到?!

提前感谢您的回答!

【问题讨论】:

    标签: python html web-scraping beautifulsoup


    【解决方案1】:

    您的 results 变量包含另一个 BeautifulSoup 对象 (ResultSet),您可以对其进行迭代并在各个结果项上调用 findfind_all

    像这样:

    from bs4 import BeautifulSoup
    
    html = """
    <div class="widget widgetLarge fpPerfglissanteclassique">
        <td>item 1</td>
        <td>item 2</td>
        <td>item 3</td>
    </div>
    <div class="widget widgetLarge fpPerfglissanteclassique">
        <td>item 4</td>
        <td>item 5</td>
        <td>item 6</td>
    </div>
    """
    
    soup = BeautifulSoup(html, "html.parser")
    results = soup.find_all("div", class_="widget widgetLarge fpPerfglissanteclassique")
    
    for result in results:
        table_results = result.find_all("td")
        print(table_results)
    

    结果:

    [<td>item 1</td>, <td>item 2</td>, <td>item 3</td>]
    [<td>item 4</td>, <td>item 5</td>, <td>item 6</td>]
    

    【讨论】:

      【解决方案2】:

      如果表在这个类中,你可以使用这个例子来获取数据:

      from bs4 import BeautifulSoup
      
      html = """
      <div class="widget widgetLarge fpPerfglissanteclassique">
          <table>
              <tr>
                  <td>1</td><td>2</td><td>3</td>
              </tr>
              <tr>
                  <td>4</td><td>5</td><td>6</td>
              </tr>
          </table>
      </div>
      """
      
      soup = BeautifulSoup(html, "html.parser")
      
      results = soup.find_all(
          "div", class_="widget widgetLarge fpPerfglissanteclassique"
      )
      
      for result in results:  # <-- iterate every result
          for row in result.find_all("tr"):  # <-- find all rows
              cell_data = []
              for cell in row.find_all("td"):  # <-- find all cells inside row
                  cell_data.append(cell.text)
              print(*cell_data)
      

      打印:

      1 2 3
      4 5 6
      

      【讨论】:

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