Python Web Scraping表返回None
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python Web Scraping表返回None,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1282字,纯文字阅读大概需要2分钟。
内容图文
我正在尝试从www.intellicast.com刮擦桌子的温度元件
soup = BeautifulSoup(urllib2.urlopen('http://www.intellicast.com/Local/History.aspx?location=USTX0057').read())
for row in soup('table',{'id':'dailyClimate'})[0].tbody('tr'):
tds=row
print tds
结果:
TypeErrorL’NoneType’对象不可调用
当查看页面源代码时,我可以看到
<table id = "dailyClimate" class="Container">
<tbody>
<tr class="TitlesAvgRecord">
<td..
<td>...</td>
因此,我知道有一个tbody和一个tr元素.
如果将.tbody(‘td’)的.tbody(‘tr’)更改,我仍然会收到错误,因此我假设我假设错误是在调用tbody的某个地方.
解决方法:
您的浏览器会插入< tbody>元素,但实际来源没有该元素:
<table id="dailyClimate" class="Container">
<tr class="TitlesAvgRecord">
<td style="padding-left:5px;">Date</td>
<td>Average<br />Low</td>
<td>Average<br />High</td>
<td>Record<br />Low</td>
<td>Record<br />High</td>
<td>Average<br />Precipitation</td>
<td>Average<br />Snow</td>
</tr>
<!-- etc. -->
查看Why do browsers insert tbody element into table elements?
您可以改用html5lib解析器(使用BeautifulSoup(source,’html5lib’)),它也可以插入元素.但是,您无需搜索它,只需直接转到< tr>行数:
for row in soup.find('table', id='dailyClimate').find_all('tr'):
或使用CSS选择器:
for row in soup.select('table#dailyClimate tr'):
通常,只有在可能有多个元素或者要排除的thead或tfooter元素时,才选择tbody元素.
内容总结
以上是互联网集市为您收集整理的Python Web Scraping表返回None全部内容,希望文章能够帮你解决Python Web Scraping表返回None所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。