如何在BeautifulSoup的网页中找到具有特定类的元素?

时间:2012-06-25 03:36:19

标签: python beautifulsoup

我试图在带有此代码的网页中找到一个包含“数据”类的表。

import urllib2
from BeautifulSoup import BeautifulSoup

soup = BeautifulSoup(urllib2.urlopen('http://www.cbssports.com/nba/draft/mock-draft').read())

rows = soup.findAll("table.data")
print rows

但是,即使我确定该页面上存在类“data”的表,我也没有获取行。使用BeautifulSoup在网页上查找具有“数据”类的元素的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

如果您想要获取行,则需要以下

import urllib2
from BeautifuSoup import BeautifulSoup

soup = BeautifulSoup(urllib2.urlopen('http://www.cbssports.com/nba/draft/mock-draft').read())

# if there's only one table with class = data
table = soup.find('table', attrs = {'class' : 'data'})

# if there are multiple tables with class = data
table = soup.findAll('table', attrs = {'class' : 'data'})[n]
# suppose you need the n-th table of the list returned

rows = table.findAll('tr') # gives all the rows, you can set attrs to filter

然后你也可以遍历列:

for row in rows:
    cols = row.findAll('td')
    ...

答案 1 :(得分:0)

你想要像

这样的东西
rows = soup.find_all('table', attrs = {"class": "data"})

而不是您当前的行(已测试)。元素的类是属性,因此您可以按find_all中的属性进行过滤。该行返回样本页面中的一个大表元素。