我试图获取锚标记中的信息,但不是href
。我想从易趣上的几个卖家那里提取评级分数。在以下超文本标记语言代码中,您可以看到评级分数的位置。有没有一种方法可以不使用href
,因为href
从卖方更改为卖方而获得关于"BewerTungspunkteski"(德语的评级分数)的信息?这个例子中的评分是32。因为文本“BewerTungspunkteski”只在这一行,我想可以让它搜索这段文本,并提取带有这段文本的咏叹调标签。
这是指向此示例的链接。
这是我尝试过但没有成功的Python代码:
try:
trans = driver.find_element_by_xpath("//a[@aria-label='Bewertungspunktestand']")
except:
trans = '0'
这是HTML代码
<span class="mbg-l">
(<a href="http://feedback.ebay.de/ws/eBayISAPI.dll?ViewFeedback&userid=thuanhtran&iid=133585540546&ssPageName=VIP:feedback&ftab=FeedbackAsSeller&rt=nc&_trksid=p2047675.l2560" aria-label="Bewertungspunktestand: 32">32</a>
<span class="vi-mbgds3-bkImg vi-mbgds3-fb10-49" aria-label="Gelber Stern für 10 bis 49 Bewertungspunkte" role="img"></span>)
</span>
aria-tag属性的值不是BewerTungspunktestance,而是BewerTungspunkteski: 32。
要从innerHTML
打印值,即32
,可以使用以下任一定位器策略:
>
使用css\u选择器
和文本属性:
driver.get('https://www.ebay.de/itm/Apple-MacBook-Pro-15-Laptop-mit-Touchbar-512GB-MPTT2D-A-Wie-neu/133585540546?nordt=true&nma=true&orig_cvip=true')
print(driver.find_element_by_css_selector("a[aria-label^='Bewertungspunktestand']").text)
使用xpath
和get\u attribute()
:
driver.get('https://www.ebay.de/itm/Apple-MacBook-Pro-15-Laptop-mit-Touchbar-512GB-MPTT2D-A-Wie-neu/133585540546?nordt=true&nma=true&orig_cvip=true')
print(driver.find_element_by_xpath("//a[starts-with(@aria-label, 'Bewertungspunktestand')]").get_attribute("innerHTML"))
理想情况下,您需要为位于()的元素的可见性引入WebDriverWait,并且您可以使用以下任一定位器策略:
>
使用CSS_SELECTOR
和get_attribute()
:
driver.get('https://www.ebay.de/itm/Apple-MacBook-Pro-15-Laptop-mit-Touchbar-512GB-MPTT2D-A-Wie-neu/133585540546?nordt=true&nma=true&orig_cvip=true')
print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "a[aria-label^='Bewertungspunktestand']"))).get_attribute("innerHTML"))
使用XPATH
和文本属性:
driver.get('https://www.ebay.de/itm/Apple-MacBook-Pro-15-Laptop-mit-Touchbar-512GB-MPTT2D-A-Wie-neu/133585540546?nordt=true&nma=true&orig_cvip=true')
print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//a[starts-with(@aria-label, 'Bewertungspunktestand')]"))).text)
控制台输出:
MyMercy User
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
您可以找到有关如何使用Selenium-Python检索WebElement文本的相关讨论
链接到有用的文档:
get\u attribute()
method获取元素的给定属性或属性
当然可以。使用XPATH的contains方法,并结合选择任何属性(@aria label)的能力:
//a[contains(@aria-label, 'Bewertungspunktestand:')]
具体到获取链接元素的文本值:
trans = driver.find_element_by_xpath("//a[contains(@aria-label, 'Bewertungspunktestand:')]").text
我一直在为selenium Xpath定位器使用Contains函数。到目前为止,这个功能一直有效。它目前不适用于表中的TD元素。我正在向函数发送正确的文本,所以我不明白为什么。 在Chrome上,转到此处:https://rcpsc.releasecandidate-community360qa.net/login.aspx?action=enablelogin 登录:mj4/test 向下滚动
问题内容: 我需要在我的xpath表达式中使用撇号(’),这需要使用webdriver查找元素 我需要使用下面的Xpath表达式 在查找元素功能中使用上述表达式时,我用单引号替换了双引号 问题答案: 使用如下所示的xpath: 希望这可以帮助。
我一直在为这个selenium项目苦苦挣扎,一直在寻找与这个问题略有关联的老参考资料或帖子。我承认我不熟悉xpath和selenium,所以希望它可以像修复语法一样简单。我正在使用python 3.6。卢本图19.10上的9,如果这有什么区别的话。 我试图访问的html元素: 我尝试过的代码: 尝试不同的XPath时出现的错误消息: 我检查了火狐来尝试捕获xpath,显示为: 虽然我还不确定如何调
非常感谢您的帮助。 我想知道firebug复制xpath是否总是适用于webdriver。 我有一个带有列表的页面,我可以获得完整的xpath来查找前两个元素,但无法对3、4执行相同的操作。 对于第三个,它不起作用: 错误: org.openqa.selenium.NoSuchElementException:无法定位元素:{"method":"xpath","selector":"/html/b
问题内容: 在我的网页中,有一个名为的。 我如何找到它? 问题答案: 此选择器应该可以工作,但是如果您用合适的标记替换它,效率会更高: 或者,由于我们知道所搜索的元素是: 但是,因为这也可以匹配诸如或的情况,所以注释中提供的@Tomalak版本 更好 : 如果您真的想确定它可以正确匹配,则还可以使用normalize-space函数清除类名周围的杂散空格字符(如@Terry所述): 请注意,在所有
我尝试获取标题中包含一些单词的链接,但不包含一些单词,我使用以下代码,但它表示这不是有效的XPath表达式。 请在此处找到我的代码: 任何帮助将不胜感激!