我正在使用beautifulsoup处理数据。
现在我遇到了问题。
我的代码在
之下elif '임차인' and '점유부분' in table.get_text(): #임차인 현황
print(table)
for renters in table.findAll('tr')[1::]:
# print(renters)
for renter_values in renters.findAll('td', ({'class':'center'})):
print("It is \n" + renter_values.get_text())
registration_of_businessman = renters.findAll('td', ({'class': 'left'}))[0]
etc = renters.findAll('td', ({'class': 'left'}))[1]
rental_fee = renters.find('td', ({'class': 'money'}))
以上是部分输出。您可以在第4个“It is”
下面看到空值您可以在此处获取表格来源。 http://blog.naver.com/khm2963/220987221959
我该如何解决这个问题?
答案 0 :(得分:2)
我不确定你真正想要的是什么。您希望将None或字符串转换为字符串' None'?这是一个例子:
elif '임차인' and '점유부분' in table.get_text(): #임차인 현황
print(table)
for renters in table.findAll('tr')[1::]:
# print(renters)
for renter_values in renters.findAll('td', ({'class':'center'})):
return_value = renter_values.get_text()
if return_value:
print("It is \n" + return_value)
registration_of_businessman = renters.findAll('td', ({'class': 'left'}))[0]
etc = renters.findAll('td', ({'class': 'left'}))[1]
rental_fee = renters.find('td', ({'class': 'money'}))
在检查beautifulSoup get_text方法时,我发现如果此方法没有catched_values,此方法将返回''
。它在字符串分隔符上使用.join()
函数。这样该方法返回一个空字符串是正确的。如果您确实需要None
分配,请在return_value分配下添加类似:return_value = return_value if len(return_value) > 0 else None
的行。
以下代码:
def get_text(self, separator=u"", strip=False, types=(NavigableString, CData)):
"""
Get all child strings, concatenated using the given separator.
"""
return separator.join([s for s in self._all_strings(
strip, types=types)])
答案 1 :(得分:0)
出现空值,因为在叶标记中找到了空格。
您必须在'仅限空白字符串'上进行过滤,如下所示
for renter_values in renters.findAll('td', ({'class':'center'})):
if renter_values.get_text().strip():
print("It is \n" + renter_values.get_text())