2017-07-21 57 views
0

我的代碼正在打印出頁面上的xpath元素。有多個。Python 3如何在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) 

任何幫助表示讚賞

感謝

+0

您正在使用哪個解析器? –

+0

我使用硒和鉻網絡驅動程序 – AuthorityDomains

+0

如何打印'elem.get_text()'? –

回答

0

如果你想避免印刷空字符串,你可以嘗試:

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可能是一個空列表,那麼你可以嘗試:

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") 
+0

謝謝安德森,如果xpath存在,但代碼會好,但元素innerText爲空,但問題是xpath在某些頁面上不存在。所以我想我需要做的如果金額存在,做到這一點,否則什麼都不打印 – AuthorityDomains

+0

你需要檢查執行循環之前'量' – Andersson

+0

謝謝,如果這是我拉出來的唯一xpath,那很好。我現在輸出的問題是它只在1行輸出文件中顯示1個結果,而不是多行。 之前,我會看到這樣的事情... ID,姓名,金額 12345678,名稱1,/沒有返回值,因爲這頁 23456789,Name2,36 /返回值是確實存在上不存在 現在它顯示頁面... 上12345678,Name1,23456789,Name2,36 所以可能只是一個格式問題現在 – AuthorityDomains

0

你可以使用一個佔位符(如'-')是這樣的:

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

謝謝,但這並沒有奏效。元素爲空時沒有添加佔位符字符 – AuthorityDomains

+0

@AuthorityDomains添加了'.strip()'來處理空格。現在這個工作嗎? – user2314737

+0

哦,它不工作,因爲xpath不在那裏。所以讓我重述一下我的問題。如果找不到xpath,我可以放一些佔位符文本嗎?謝謝 – AuthorityDomains