【问题标题】:Directly Scraping HTML table using beautifulsoup?使用beautifulsoup 直接抓取HTML 表格?
【发布时间】:2021-01-11 15:15:29
【问题描述】:

有没有直接的方法来抓取 HTML 表格?如果我们给出 HTML table 的类并提供结果会很棒吗?

例如,我需要为这个URL获取表格

我可以使用this 程序,但我需要一个干净或直接的解决方案

【问题讨论】:

    标签: python pandas beautifulsoup html-table


    【解决方案1】:

    好吧,那就试试这个:

    import requests
    import pandas as pd
    
    url = "https://buchholz-stadtwerke.de/wasseranalyse.html"
    
    df = pd.read_html(requests.get(url).text, flavor="bs4")
    df = pd.concat(df)
    df.to_csv("data.csv", index=False)
    print(df)
    

    输出:

    [                    Parameter  Einheit    Grenzwert Messwert, Februar 2020
    0            Wassertemperatur       °C          NaN                     98
    1         Leitfähigkeit (25°)    µS/cm         2790                    302
    2   Sauerstoff (elektrochem.)     mg/l          NaN                    109
    3                     pH-Wert      NaN  6,5 bis 9,5                    806
    4             Sättigungsindex      NaN          NaN                    001
    5         Karbonathärte (dH°)      °dH          NaN                    454
    6           Gesamthärte (dH°)      °dH          NaN                    645
    7                Härtebereich      NaN          NaN                  weich
    8         Calcitlösekapazität     mg/l            5                    -01
    and so on...
    

    此外,这会生成一个 .csv 文件,其中包含表中的数据。

    编辑:

    这种感觉就像是一种 hack,但它确实有效。根据评论和 URL,您可以遍历 df 中的表格并将它们拆分为单独的文件。

    import requests
    import pandas as pd
    
    url = "https://www.swd-ag.de/energie-wasser/wasser/trinkwasseranalyse/"
    
    df = pd.read_html(io=requests.get(url).text, flavor="bs4")
    for index, table in enumerate(df, start=1):
        table.to_csv(f"table_{index}.csv", index=False)
    

    【讨论】:

    • 有没有办法单独定义表?我也有 2 个表格的页面
    • 你能分享两个表格的页面的url吗?
    • 比如这里有很多表https://www.swd-ag.de/energie-wasser/wasser/trinkwasseranalyse/
    • 我已经更新了答案。看看这是不是你想要的。
    • 这行得通,但如果我们可以定义表的类,那就太好了。但我对结果很满意,再次感谢!
    猜你喜欢
    • 2016-05-12
    • 2011-03-11
    • 1970-01-01
    • 2021-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多