bs4:如何提取表“ team-roster home”和“ team-roster away”

时间:2019-01-22 19:53:53

标签: python beautifulsoup

我正在尝试从这里http://www.veikkausliiga.com/tilastot/2016/veikkausliiga/ottelut/498251/kokoonpanot/来获得主队和客队的阵容。

我尝试使用tr和td标签以及id和class标签。我不能从桌子上得到任何信息。

import urllib
import urllib.request
from bs4 import BeautifulSoup
import os

def make_soup(url):
    thePage = urllib.request.urlopen(url)
    soupData = BeautifulSoup(thePage, "html.parser")
    return soupData

def makeTableData(url):
    matchDataSaved= ""
    soup = make_soup(url)
    table = soup.find("table",{"class":"team-rosters home"})
    return table

我希望表行能够显示,但是代码输出None。我如何获得球员阵容?

1 个答案:

答案 0 :(得分:2)

我不确定您想要什么输出。这确实有效,因为它返回元素taht具有该表标签。您仍然需要检查一下以获得tr和td标签。

另一个选择是因为它确实具有<table>标签,仅使用Pandas,然后操纵数据框以提取所需的内容和所需的格式。可能不是我想要的形式,而是获取了数据,您可以从那里开始使用它:

import pandas as pd

url = 'http://www.veikkausliiga.com/tilastot/2016/veikkausliiga/ottelut/498251/kokoonpanot/'

tables = pd.read_html(url)
results = pd.DataFrame()

ix_list = [2,3,4,5,7,8,9,10]
for ix in ix_list:
    results = results.append(tables[ix])

results = results.reset_index(drop=True)

输出:

print (results)
                          0       ...                       3
0             #21  T. Dähne       ...                     NaN
1           #15  V. Jalasto       ...               #3  Taiwo
2              #20  Vincent       ...                     NaN
3               #7  N. Alho       ...                     NaN
4             #25  D. Assis       ...                     NaN
5               #9  B. Span       ...         #11  J. Ibrahim
6  #4  P. Sparrdal Mantilla       ...         #7  T. Wirtanen
7            #1  W. Viitala       ...                     NaN

[8 rows x 4 columns]