如何解决硒不使用xpath提取信息
我正在尝试使用硒从amazon website中提取一些信息。但是我无法使用硒中的xpath来刮除这些信息。
这是我正在使用的代码
try:
path = "//div[@id='desktop_buybox']//div[@class='a-box-inner']//span[@class='a-size-small')]"
seller_element = WebDriverWait(driver,5).until(
EC.visibility_of_element_located((By.XPATH,path)))
except Exception as e:
print(e)
运行此代码时,它表明seller_element = WebDriverWait(driver,5).until( EC.visibility_of_element_located((By.XPATH,path)))
出现错误,但没有说明它是什么异常。
我尝试在线查找,发现这种情况发生在硒无法在网页中找到元素的情况下。
但是我认为我指定的路径是正确的。请帮助我。
预先感谢
[EDIT-1]
这是我得到的例外情况
Message:
解决方法
<script>
let tech=[{id:1,grouping:"Front End",value:"HTML"},{id:2,value:"React"},{id:3,grouping:"Back End",value:"Node"},{id:4,value:"PHP"}];
</script>
XPath可能是这样的。您可以缩短它。
CSS选择器可以依此类推。
//div[class='a-section a-spacing-none a-spacing-top-base']//span[class='a-size-small a-color-secondary']
,
我认为原因是xpath表达式不正确。
以下面的元素为例,它表示跨度有两个类:
<span class="a-size-small a-color-secondary">
因此,span[@class='a-size-small')
将不起作用。
相反,您可以将xpath用作
//span[contains(@class,'a-size-small') and contains(@class,'a-color-secondary')]
或cssSelector为
span.a-size-small.a-color-secondary
,
亚马逊正在根据您所居住的国家/地区更新其内容,因为我单击了您提供的链接,所以我没有找到您想要的元素,这仅仅是因为该商品未在此处出售印度。
因此,简而言之,如果您正坐在印度并尝试查找您的元素,则该元素不存在,而是将位置更改为“美国”。它在那里出现。
解决方案-更改位置
,要打印元素的 Amazon.com出售的商品,您必须为visibility_of_element_located()
引出WebDriverWait,并且可以使用以下{{ 3}}:
-
使用
CSS_SELECTOR
和get_attribute()
:print(WebDriverWait(driver,20).until(EC.visibility_of_element_located((By.CSS_SELECTOR,"div.a-section.a-spacing-none.a-spacing-top-base > span.a-size-small.a-color-secondary"))).get_attribute("innerHTML"))
-
使用
XPATH
和 text 属性:print(WebDriverWait(driver,20).until(EC.visibility_of_element_located((By.XPATH,"//div[@class='a-section a-spacing-none a-spacing-top-base']/span[@class='a-size-small a-color-secondary']"))).text)
-
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
中找到相关的讨论
Outro
链接到有用的文档:
- How to retrieve the text of a WebElement using Selenium - Python方法
Gets the given attribute or property of the element.
-
get_attribute()
属性返回The text of the element.
-
text
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。