2013-05-26 187 views
1

我想从网站使用BeautifulSoup4和Python刮表数据,然后创建一个Excel文档的结果。到目前为止,我有这个:从网站刮表数据

import urllib2 
from bs4 import BeautifulSoup 

soup = BeautifulSoup(urllib2.urlopen('http://opl.tmhp.com/ProviderManager/SearchResults.aspx?TPI=&OfficeHrs=4&ProgType=STAR&UCCIndicator=No+Preference&Cnty=&NPI=&Srvs=6&Age=All&Gndr=B&SortBy=Distance&ZipCd=78552&SrvsOfrd=0&SpecCd=0&Name=&CntySrvd=0&Plan=H3&WvrProg=0&SubSpecCd=0&AcptPnt=Y&Rad=200&LangCd=99').read()) 

for row in soup('table', {'class' : 'spad'})[0].tbody('tr'): 
    tds = row('td') 
    print tds[0].string, tds[1].string 

但它不工作,以显示数据。

任何想法?

+2

我无法在该页面上看到班级'spad' - 您确定它是正确的吗? – scdove

回答

5

首先,班级是StandardResultsGrid,而不是spad

其次,你不需要tbody的东西。只需使用:

for row in soup('table', {'class' : 'StandardResultsGrid'})[0]('tr'): 

还要注意,因为在 原来的页面标题行包含在tbody出于某种原因,你必须跳过第一行,所以

for row in soup('table', {'class' : 'StandardResultsGrid'})[0]('tr')[1:] 

并且请注意,其中一些单元格包含table s,因此您必须仔细解析td的内容。