我正在尝试使用以下代码提取文本。我没有收到任何错误消息。当我打印输出变量时,什么也不会返回。
helpful_vote = browser.find_elements_by_xpath('//span[@data-hook="helpful-vote-statement"]')
vote_text = helpful_vote.text
print( vote_text )
当我查看日志(下图)时,我尝试检索的文本显示在名为“ parent” 的子元素下。我应该使用另一个xpath函数或Python方法来提取文本吗?
答案 0 :(得分:0)
您使用方法find_elements_by_xpath
,该方法返回元素列表。因此,您在text
对象中没有属性list
。您可以选择helpful_vote
的第一个(或您需要的其他任何元素)并访问其text
属性,或迭代该列表并从每个XPath结果中获取text
。
但是,如果您希望从该XPath中获得单个结果,只需使用方法find_element_by_xpath
即可返回单个元素。
因此,您的代码将如下所示:
helpful_vote = browser.find_element_by_xpath('//span[@data-hook="helpful-vote-statement"]')
vote_text = helpful_vote.text
print(vote_text)
您可以在Selenium docs for Python上找到更多信息。
更新: 我不清楚您想要实现什么。如果要迭代XPath结果并打印每个元素的text
,那么此代码对我有用:
from selenium import webdriver
import time
browser = webdriver.Chrome(r'C:\chromedriver.exe')
link = 'https://www.amazon.com/Gerber-Organic-Foods-Veggie-Variety/product-reviews/B00D05BPTW/ref=cm_cr_dp_d_show_all_btm?ie=UTF8&reviewerType=all_reviews'
browser.get(link)
time.sleep(6)
helpful_vote = browser.find_elements_by_xpath('//span[@data-hook="helpful-vote-statement"]')
for attr1 in helpful_vote:
Votes = attr1.text
print(Votes)
browser.close()
输出为:
7个人认为这很有帮助
3个人认为这很有帮助
20个人发现这很有帮助
3个人认为这很有帮助
有人发现这有帮助
5个人认为这很有帮助
6个人认为这很有帮助