get_text()返回空值。我想将其转换为无

时间:2017-04-19 08:47:24

标签: python beautifulsoup

我正在使用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'}))

enter image description here

以上是部分输出。您可以在第4个“It is”

下面看到空值

您可以在此处获取表格来源。 http://blog.naver.com/khm2963/220987221959

我该如何解决这个问题?

2 个答案:

答案 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())