概述
网页源文件
<tbody>
<tr>
<td>1</td>
<td class="align-left">
<a href="World-University-Rankings/Harvard-University.html" target="_blank">哈佛大学</a>
</td>
<td><a href="./World-University-Rankings-2016/USA.html" target="_blank"><img src="./houtai/templates/flag/USA.png"></a></td>
<td class="hidden-xs">1</td>
<td>100.0</td>
<td class="hidden-xs need-hidden alumni">100.0</td>
<td class="hidden-xs need-hidden award" style="display:none;">100.0</td>
<td class="hidden-xs need-hidden hici" style="display:none;">100.0</td>
<td class="hidden-xs need-hidden ns" style="display:none;">100.0</td>
<td class="hidden-xs need-hidden pub" style="display:none;">100.0</td>
<td class="hidden-xs need-hidden pcp" style="display:none;">79.2</td>
</tr>
</tobody>
如下代码:
def fillUnivList(ulist, html):
soup = BeautifulSoup(html, "html.parser")
for tr in soup.find('tbody').children:
if isinstance(tr, bs4.element.Tag):
tds = tr('td')
ulist.append([tds[0].string, tds[1].string, tds[5].string])
出错结果:
原因:
用 .string 属性来提取标签里的内容时,该标签应该是只有单个节点的。比如上面的
<td>1</td>
标签那样。
修改代码如下:
def fillUnivList(ulist, html):
soup = BeautifulSoup(html, "html.parser")
for tr in soup.find('tbody').children:
if isinstance(tr, bs4.element.Tag):
tds = tr('td')
astr = tds[1].find('a')
ulist.append([tds[0].string, astr.string, tds[5].string])
正确结果:
最后
以上就是温柔砖头为你收集整理的BeautifulSoup获取字符串为None的全部内容,希望文章能够帮你解决BeautifulSoup获取字符串为None所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复