【问题标题】:Webscraping with selenium in Python - if xtag value is empty return NaN在 Python 中使用 selenium 进行 Web 抓取 - 如果标记值为空,则返回 NaN
【发布时间】:2019-08-19 19:12:54
【问题描述】:

我有一个脚本,它遍历几个具有相同布局的 URL。我需要为所有 URL 都具有相同 xpath 的某个字段捕获数据。此信息存储在一个列表中,这是我的代码:

field_list = [ ]
fields =driver.find_elements_by_xpath('xpath')
for f in fields:
     field_list.append(f.text)

但在某些页面上该字段为空。

如果我print len(field_list) 输出为 13 但是如果我这样做了

for f in field_list:
    print(f)

输出为 11 行

基本上未填写的字段会附加到最后的列表中。有没有办法将它们转换为无类型或 NaN?

【问题讨论】:

  • 欢迎来到 SO。为什么只有在 text 不是 none 的情况下才能添加到列表中。

标签: python python-3.x selenium web-scraping


【解决方案1】:

我会检查元素中是否存在文本,之前将其附加到列表中,例如:

field_list = []
fields = driver.find_elements_by_xpath('xpath')
for f in fields:
    fText = f.text
    if not fText.strip(): field_list.append(None)
    else: field_list.append(fText)

如果您希望在存储值之后评估列表,您可以执行以下操作:

field_list = []
fields = driver.find_elements_by_xpath('xpath')
for f in fields:
    field_list.append(f.text)

new_list = [x if x.strip() else None for x in field_list]

for f in new_list:
    print(f)

最后打印的 输出 应该仍然是 13 个对象,但假设有 2 个空字符串,则空的对象使其 显示 像 11。如果您想知道是否有 empty 文本对象被刮掉,将空字符串转换为 None 类型应该更好地打印和查看数据。

【讨论】:

    猜你喜欢
    • 2021-10-27
    • 2021-04-29
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多