我试图在带有此代码的网页中找到一个包含“数据”类的表。
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在网页上查找具有“数据”类的元素的正确方法是什么?
答案 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
中的属性进行过滤。该行返回样本页面中的一个大表元素。