如何使用BeautifulSoup来解析表格?

时间:2013-07-23 19:05:12

标签: python parsing beautifulsoup

这是一个特定于上下文的问题,关于如何使用BeautifulSoup解析python2.7中的html表。

我想提取html表here并将其放在tab-delim csv中,并尝试使用BeautifulSoup。

上下文代码:

proxies = {
    "http://": "198.204.231.235:3128",
}
site = "http://sloanconsortium.org/onlineprogram_listing?page=11&Institution=&field_op_delevery_mode_value_many_to_one[0]=100%25%20online"

r = requests.get(site, proxies=proxies)
print 'r: ', r
html_source = r.text
print 'src: ', html_source
soup = BeautifulSoup(html_source)

为什么这段代码不能获得第4行?

soup.find('table','views-table cols-6').tr[4]

如何打印出第一行(不是标题行)中的所有元素?

1 个答案:

答案 0 :(得分:2)

好吧,有人可能会给你一个班轮,但以下内容应该让你开始

table = soup.find('table', class_='views-table cols-6')                                                                                                                                                                                                                        
for row in table.find_all('tr'):                                                                                                                                                                                                                                               
    row_text = list()                                                                                                                                                                                                                                                          
    for item in row.find_all('td'):                                                                                                                                                                                                                                            
        text = item.text.strip()                                                                                                                                                                                                                                               
        row_text.append(text.encode('utf8'))                                                                                                                                                                                                                                   
    print row_text

我相信你的tr [4]被认为是属性,而不是你想象的索引。