【问题标题】:How do I decompose() a reoccurring row in a table that I find located in an html page using Python?我如何使用 Python 分解()我发现位于 html 页面中的表中重复出现的行?
【发布时间】:2022-12-05 04:51:22
【问题描述】:

该行是标题行的副本。该行随机地一遍又一遍地出现,我不希望它出现在数据集中(自然地)。我认为 HTML 页面可以提醒查看者在向下滚动时正在查看哪些列属性。

下面是我要删除的行元素之一的示例:

<tr class ="thead" data-row="25>

这是另一个:

<tr class="thead" data-row="77">

它们是随机出现的,但是如果有任何方法我们可以创建一个循环来迭代并找到行中的第一个单元格并确定它实际上是我们要删除的行?因为它们每次都是相同的。第一个单元格始终是“Player”,用于标识属性。下面是一个 HTML 元素的示例。

<th aria-label="Player" data-stat="player" scope="col" class=" poptip sort_default_asc center">Player</th>

也许我可以创建一个循环遍历每一行并确定第一个单元格是否显示“玩家”。如果是,则删除整行。那可能吗?

到目前为止,这是我的代码:

  from bs4 import BeautifulSoup
    import pandas as pd
    
    import requests
    import string
    
    years = list(range(2023, 2024))
    
    alphabet = list(string.ascii_lowercase)
    
    url_namegather = 'https://www.basketball-reference.com/players/a'
    lastname_a = 'a'
    url = url_namegather.format(lastname_a)
    data = requests.get(url)
    with open("player_names/lastname_a.html".format(lastname_a), "w+", encoding="utf-8") as f:
        f.write(data.text)
    
    with open("player_names/lastname_a.html", encoding="utf-8") as f:
        page = f.read()
    
    soup = BeautifulSoup(page, "html.parser")

【问题讨论】:

    标签: python


    【解决方案1】:

    您可以使用pandas直接阅读表格。不过,您可能需要安装 lxml 包。

    
    df = pd.read_html('https://www.basketball-reference.com/players/a')[0]
    df
    

    这将获得没有任何重复标题行的数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-08
      • 1970-01-01
      • 1970-01-01
      • 2013-05-26
      • 2013-04-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多