来自网站的 Python 抓取表?

标签 python pandas selenium dataframe beautifulsoup

我想抓取 treasury.gov 网站上提供的所有国债 yield 。

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

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

最佳答案

这是一种使用 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)

关于来自网站的 Python 抓取表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44704099/

相关文章:

python - 如何使用 python 过滤时间序列或数据框中的日期范围

mysql - 如何告诉 Selenium 使用测试数据库?

python - 如何比较Python和selenium中的字符串

python - 录制和播放从麦克风录制的音频流

python - seaborn/matplotlib 中的直方图显示 x 轴上的所有分箱数据索引

python - Pandas 将数字转换为字符串 - 意外结果

javascript - Scrapy 中的 Selenium + PhantomJS

python - 如何在 pandas DataFrame 中查找特定列的重复行,并通过添加计数器来修改值?

python - 比较后如何从数据框中删除行

python - NoSuchElementException : Message: no such element: Unable to locate element while trying to find or access element tags