Python从网站上抓取表?
Posted
技术标签:
【中文标题】Python从网站上抓取表?【英文标题】:Python scrape table from website? 【发布时间】: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 中。
【问题讨论】:
【参考方案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
。我试图编辑答案,但由于 ***“队列已满”而无法编辑。以上是关于Python从网站上抓取表?的主要内容,如果未能解决你的问题,请参考以下文章
使用python如何摆脱从网站上抓取的文本中的尾随空格[重复]
在没有 [href] 的多层网站上进行 Python 网页抓取