据我所知,我有两台机器,分别运行python2.5和beautifulsoup3.1.0.1。在
我正在尝试刮http://utahcritseries.com/RawResults.aspx,使用:
from BeautifulSoup import BeautifulSoup
import urllib2
base_url = "http://www.utahcritseries.com/RawResults.aspx"
data=urllib2.urlopen(base_url)
soup=BeautifulSoup(data)
i = 0
table=soup.find("table",id='ctl00_ContentPlaceHolder1_gridEvents')
#table=soup.table
print "begin table"
for row in table.findAll('tr')[1:10]:
i=i + 1
col = row.findAll('td')
date = col[0].string
event = col[1].a.string
confirmed = col[2].string
print '%s - %s' % (date, event)
print "end table"
print "%s rows processed" % i
在我的windows机器上,我得到了正确的结果,即日期和事件名称的列表。在我的mac上,我没有。相反,我得到
^{pr2}$我注意到当我
print row
在我的windows机器上,tr数据看起来与源html完全相同。请注意第二行表格上的样式标记。前两排是:
<tr>
<td>
3/2/2002
</td>
<td>
<a href="Event.aspx?id=226">
Rocky Mtn Raceway Criterium
</a>
</td>
<td>
Confirmed
</td>
<td>
<a href="Event.aspx?id=226">
Points
</a>
</td>
<td>
<a disabled="disabled">
Results
</a>
</td>
</tr>
<tr style="color:#333333;background-color:#EFEFEF;">
<td>
3/16/2002
</td>
<td>
<a href="Event.aspx?id=227">
Rocky Mtn Raceway Criterium
</a>
</td>
<td>
Confirmed
</td>
<td>
<a href="Event.aspx?id=227">
Points
</a>
</td>
<td>
<a disabled="disabled">
Results
</a>
</td>
</tr>
在我的mac上,当我打印前两行时,样式信息从tr标记中删除,并移动到每个td字段中。我不明白为什么会这样。我没有得到任何其他日期值,因为BeautifulSoup每隔一个日期就会有一个字体标签。以下是mac的输出:
<tr>
<td>
3/2/2002
</td>
<td>
<a href="Event.aspx?id=226">
Rocky Mtn Raceway Criterium
</a>
</td>
<td>
Confirmed
</td>
<td>
<a href="Event.aspx?id=226">
Points
</a>
</td>
<td>
<a disabled="disabled">
Results
</a>
</td>
</tr>
<tr bgcolor="#EFEFEF">
<td>
<font color="#333333">
3/16/2002
</font>
</td>
<td>
<font color="#333333">
<a href="Event.aspx?id=227">
Rocky Mtn Raceway Criterium
</a>
</font>
</td>
<td>
<font color="#333333">
Confirmed
</font>
</td>
<td>
<font color="#333333">
<a href="Event.aspx?id=227">
Points
</a>
</font>
</td>
<td>
<font color="#333333">
<a disabled="disabled">
Results
</a>
</font>
</td>
</tr>
我的脚本在windows下显示正确的结果我需要做什么才能让我的Mac正常工作?在
beauthoulsoup的3.1版有documented problems。在
您可能需要再次检查您实际使用的版本,如果是,则降级。在
我怀疑问题出在urlib2请求中,而不是BeautifulSoup:
如果您在两台计算机上显示此命令返回的原始数据的相同部分,可能会有所帮助:
此页看起来可能有助于: http://bytes.com/groups/python/635923-building-browser-like-get-request
最简单的解决方案可能只是检测脚本在哪个环境中运行,并相应地更改解析逻辑。在
^{pr2}$或让microsoft使用web标准:)
另外,你没有使用mechanize来获取页面吗?如果是这样,问题可能就在那里。在
相关问题 更多 >
编程相关推荐