python:使用beauthoulsoup解析表

2024-04-16 17:18:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从这个网站提取一个表:personal.vanguard.com

我试图得到“Holdings”“Market values”列。在

我试过这个问题,但没有成功:

from bs4 import BeautifulSoup
import urllib2
soup = BeautifulSoup(urllib2.urlopen('https://personal.vanguard.com/us/FundsAllHoldings?FundId=0970&FundIntExt=INT&tableName=Equity&tableIndex=0').read())
print(soup.prettify())

print soup('tbody')

table = soup.find("tbody", { "class" : "Holding" })

print table
for row in table.findAll("tr"):
    cells = row.findAll("td")

Tags: importcom网站tableurllib2marketpersonalrow
2条回答

可以使用以下表达式选择所有行:

soup.select('tbody tr')

然后,对于每一行,可以提取所有列:

^{pr2}$

您只需要过滤所需的列。在

from bs4 import BeautifulSoup
import urllib2
url = 'https://personal.vanguard.com/us/FundsAllHoldings?FundId=0970&FundIntExt=INT&tableName=Equity&tableIndex=0'
soup = BeautifulSoup(urllib2.urlopen(url))
table = soup.find("tbody", { "class" : "right" })
for row in table.findAll("tr"):
    cells = row.findAll("td")
    if len(cells) > 0: # skip first row
        holding = cells[0]
        mv = cells[2]
        print holding, mv

相关问题 更多 >