【问题标题】:Python scrape table from website?Python从网站上抓取表?
【发布时间】:2017-11-26 00:15:13
【问题描述】:

我想收集所有可在 treasury.gov 网站上获得的国债收益率。

https://www.treasury.gov/resource-center/data-chart-center/interest-rates/Pages/TextView.aspx?data=yieldAll

我将如何获取这些信息?我假设我必须使用 BeautifulSoup 或 Selenium 或类似的东西(最好是 BS4)。我最终想把这些数据放在 Pandas DataFrame 中。

【问题讨论】:

    标签: python pandas selenium dataframe beautifulsoup


    【解决方案1】:

    这是一种使用 requests 和 beautifulsoup 获取表中数据的方法

    import pandas as pd
    import requests
    from bs4 import BeautifulSoup
    
    url = 'https://www.treasury.gov/resource-center/data-chart-center/interest-rates/Pages/TextView.aspx?data=yieldAll'
    
    r = requests.get(url)
    html = r.text
    
    soup = BeautifulSoup(html)
    table = soup.find('table', {"class": "t-chart"})
    rows = table.find_all('tr')
    data = []
    for row in rows[1:]:
        cols = row.find_all('td')
        cols = [ele.text.strip() for ele in cols]
        data.append([ele for ele in cols if ele])
    
    result = pd.DataFrame(data, columns=['Date', '1 Mo', '2 Mo', '3 Mo', '6 Mo', '1 Yr', '2 Yr', '3 Yr', '5 Yr', '7 Yr', '10 Yr', '20 Yr', '30 Yr'])
    
    print(result)
    

    【讨论】:

    • '2 Mo' 丢失。只需将其添加到数组中即可避免错误:ValueError: 12 columns passed, passed data had 13 columns。我试图编辑答案,但由于 StackOverflow“队列已满”而无法编辑。
    猜你喜欢
    • 2018-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-16
    • 2013-05-21
    • 2022-07-10
    • 2017-02-13
    • 1970-01-01
    相关资源
    最近更新 更多