我正在尝试使用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
但它无法显示数据。
有什么想法吗?
答案 0 :(得分: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
个,因此您必须仔细解析td
的内容。