从网站上刮取表格数据

时间:2013-05-26 19:18:58

标签: python web-scraping beautifulsoup

我正在尝试使用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

但它无法显示数据。

有什么想法吗?

1 个答案:

答案 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的内容。