在Python中使用selenium进行Webscraping - 如果xtag值为空,则返回NaN

问题描述 投票:2回答:1

我有一个脚本循环几个具有相同布局的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?

python python-3.x selenium web-scraping
1个回答
0
投票

我会检查元素中是否存在文本,然后将其附加到列表中,ex:

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个对象,但空的输出使它看起来像11,假设有2个空字符串。如果您想知道是否有空文本对象被抓取,那么将空字符串转换为None类型应该更好,以便稍后打印和查看数据。

© www.soinside.com 2019 - 2024. All rights reserved.