如何通过查找HTML中的所有表来不重复自己

时间:2014-06-03 18:40:14

标签: python django beautifulsoup

在我的HTML代码中,我有8个表。以下是我试图获取它们的方法:

url ="http://www.uefa.com/worldcup/season=2014/standings/"
r = requests.get(url)
soup = BeautifulSoup(r.content)
table = soup.find("table")

这段代码只给我第一张表。现在采取行动:

rows = table.findAll('tr')
data = [[td.text.strip().encode("utf-8") for td in tr.findAll("td")] for tr in rows]
head = [[th.text.strip().encode("utf-8") for th in tr.findAll("th")] for tr in rows]

for i in data:
    if i:
        flag = i[1][:3] + ".png"
        i.insert(1, Datas(i, "http://img.uefa.com/imgml/flags/18x18/" + flag))

return render(request, 'Titles.html', {"data": data})

操作结束后,我想知道如何开始使用相同的变量提取第二个表?当然,我可以添加更多变量,例如data1data2head1head2等等。但是我不想重复自己。 那么也许你可以帮助我并找到更好的方法来做到这一点?

1 个答案:

答案 0 :(得分:1)

你可能想要这样的东西:

import requests
from bs4 import BeautifulSoup

soup = BeautifulSoup(requests.get(url).text)

tables = soup.find_all('table') # this returns 8 tables
print len(tables)

for table in tables:
    for tr in table.find_all('tr'):
        print tr.text
        print

如果您尝试该代码,您可以看到从每个表中获取内容,