Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3如何在Xpath元素为空时打印值_Python_Xpath_Printing - Fatal编程技术网

Python 3如何在Xpath元素为空时打印值

Python 3如何在Xpath元素为空时打印值,python,xpath,printing,Python,Xpath,Printing,我的代码正在打印页面上的xpath元素。有多个 我的问题是如何在没有返回xpath元素的情况下打印内容我将加载20页,其中18页将包含此元素,其他2页将不包含此元素 amount = browser.find_elements_by_xpath('.//*[@id[starts-with(.,"id")]]/div[1]/header/p/strong') for elem in amount: print(elem.get_attribute('innerText'), end=""'

我的代码正在打印页面上的xpath元素。有多个

我的问题是如何在没有返回xpath元素的情况下打印内容我将加载20页,其中18页将包含此元素,其他2页将不包含此元素

amount = browser.find_elements_by_xpath('.//*[@id[starts-with(.,"id")]]/div[1]/header/p/strong')
for elem in amount:
    print(elem.get_attribute('innerText'), end=""',', file=sys.stdout)
谢谢你的帮助


谢谢

您可以像这样使用占位符字符(例如,
'-'
):

print(str(elem.get_attribute('innerText')).strip() or '-',end=""',', file=sys.stdout)

如果要避免打印空字符串,可以尝试:

amount = browser.find_elements_by_xpath('.//*[@id[starts-with(.,"id")]]/div[1]/header/p/strong')
for elem in amount:
    text_content = elem.get_attribute('innerText')
    if text_content:
        print(text_content, end=',', file=sys.stdout)
    else:
        print("No content found")
amount = browser.find_elements_by_xpath('.//*[@id[starts-with(.,"id")]]/div[1]/header/p/strong')
if amount:
    for elem in amount:
        print(elem.get_attribute('innerText'), end=',', file=sys.stdout)
else:
    print("No elements found")
如果
amount
可能是一个空列表,那么您可以尝试:

amount = browser.find_elements_by_xpath('.//*[@id[starts-with(.,"id")]]/div[1]/header/p/strong')
for elem in amount:
    text_content = elem.get_attribute('innerText')
    if text_content:
        print(text_content, end=',', file=sys.stdout)
    else:
        print("No content found")
amount = browser.find_elements_by_xpath('.//*[@id[starts-with(.,"id")]]/div[1]/header/p/strong')
if amount:
    for elem in amount:
        print(elem.get_attribute('innerText'), end=',', file=sys.stdout)
else:
    print("No elements found")

您使用的是哪个解析器?我使用的是selenium和chrome web驱动程序打印
elem.get_text()
?什么是Xpath元素?哪一个可能是空的
amount
是一个空列表或
elem.get_属性('innerText')
返回空字符串?请尝试获取属性“value”,谢谢,但这不起作用。添加元素时未添加占位符字符empty@AuthorityDomains添加了
.strip()
以处理空白。现在可以工作了吗?哦,它不工作了,因为xpath不在那里。让我重新表述我的问题。如果找不到xpath,我可以放置一些占位符文本吗?感谢Hanks Andersson,如果xpath存在但元素innerText为空,那么代码就可以了,但问题是xpath在某些页面上不存在。所以我想如果amount存在,我需要这样做,否则什么都不打印。在执行loopThank之前,您需要检查
amount
,谢谢,如果这是我正在提取的唯一xpath,那么这很有效。我现在面临的输出问题是,它只在我的输出文件中的一行显示一个结果,而不是多行。在我看到这样的事情之前。。。ID、名称、金额12345678、名称1,/返回的值在此页23456789上不存在,名称2,36/返回的值在此页上不存在,现在显示。。。12345678,名称123456789,名称2,36所以现在可能只是一个格式问题对不起,这个网站上的格式也没有显示我想要的格式!我发现这是个缩进问题!感谢您的解决方案@Anderson