python - BeautifulSoup/Python 的 NoneType 错误

标签 python web-scraping beautifulsoup mechanize

我看到了很多类似的帖子,但似乎都不适用于我的问题。抱歉,如果我错过了。

我正在抓取一个相当大的 HTML 表,并对其进行格式化,以便可以将其输入到数据库中。一条记录有一个空白列,当我尝试

时,这会导致 NoneType 错误
print "|".join(record) 

因为记录看起来像

(data, ... , None, data)

我尝试在创建记录元组之前应用以下内容来过滤掉 None:

def null_converter(field):
    return field.string if field else "NULL"

但这似乎不起作用。有更好的方法来处理这个问题吗?

最佳答案

删除 None 值:

record = ("data", None, "data")
[x for x in record if x is not None]
['data', 'data']

如果您确定没有错误值:

print filter(None,record)
('data', 'data')

或者:

  "|".join(map(str,records))
 In [6]: "|".join(map(str,d))
 Out[6]: 'data|None|data'

一些时间安排:

In [9]: d = ("data", None, "data") * 100

In [10]: %timeit [x if x is not None else "Null" for x in d ]
10000 loops, best of 3: 22.8 µs per loop

In [11]: %timeit "|".join(map(str,d))
10000 loops, best of 3: 38.9 µs per loop

In [12]: %timeit "|".join((str(field) for field in d))
10000 loops, best of 3: 66.3 µs per loop

map 比循环和转换更高效,但 list comp 是最快的。

关于python - BeautifulSoup/Python 的 NoneType 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25090223/

相关文章:

python - 如何修复这个不工作的正则表达式模式匹配?

python - 如何访问数据框中包含字典字符串数据的列的内容

html - 使用 R (rvest) 将 html 文本抓取到带有没有清晰模式的分隔符的表中

python - 用漂亮的汤提取数据时Python for Loop中的语法错误

python - 从一列和一行创建矩阵

python - 使用 Beautiful Soup 进行 HTML 抓取 - 不需要的换行符

regex - Google 表格 importXML 不适用于 youtube 网址

python - 如何使用beautifulSoup提取<section>等html5元素

python - BeautifulSoup4 stripped_strings 给我字节对象?

python - 当末尾没有换行符时,为什么打印输出不会立即显示在终端中?