use*_*208 3 python beautifulsoup
我正在使用Python中的BeautifulSoup来抓取网页.问题中的html如下所示:
<td><a href="blah.html>blahblah</a></td>
<td>line2</td>
<td></td>
Run Code Online (Sandbox Code Playgroud)
我想采取td标签的内容.所以对于第一个td,我需要"blahblah"文本,对于下一个td,我想写"line2",而对于最后一个td,"空白",因为没有内容.
我的代码片段看起来像这样 -
row = []
for each_td in td:
link = each_td.find_all('a')
if link:
row.append(link[0].contents[0])
row.append(link[0]['href'])
elif each_td.contents[0] is None:
row.append('blank')
else:
row.append(each_td.contents[0])
print row
Run Code Online (Sandbox Code Playgroud)
但是在运行时,我得到错误 -
elif each_td.contents[0] is None:
IndexError: list index out of range
Run Code Online (Sandbox Code Playgroud)
请注意 - 我正在使用beautifulsoup.
如何测试"no-content-td"和weite?为什么"......是无"不起作用?
小智 8
谁说'内容'总是至少有一个元素?显然你遇到'内容'没有元素的情况,因此你会出现这个错误.
更合适的检查是:
if each_td.contents:
Run Code Online (Sandbox Code Playgroud)
要么
if len(each_td.contents) > 0:
Run Code Online (Sandbox Code Playgroud)
但是你的假设是错误的.
您可以使用它.text来获取文本.
row = []
for each_td in td:
row.append(each_td.text)
print row
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5180 次 |
| 最近记录: |