【发布时间】:2020-09-24 10:45:33
【问题描述】:
我正在尝试从链接中获取价格:https://www.kbb.com/cadillac/deville/1996/sedan-4d/
价格显示在 svg 标签内的 text 标签中。
当我使用 xpath 时:
.//*[name()='svg']//*[name()='g']//*[name()='text'] 在浏览器的检查元素中,我能够找到标签。但是相同的 xpath 在代码中不起作用。
目前的代码是:
def get_price(url):
driver.get(url)
time.sleep(10)
try:
price_xpaths = driver.find_elements_by_xpath(".//*[name()='svg']//*[name()='g']//*[name()='text']")
except:
print("price not found")
for p in price_tags:
print(p.text)
当我运行上述代码时,我得到一个空白列表以返回函数 find_elements_by_xpath。 我尝试了其他方法,例如切换到默认内容,因为该元素位于 #document
driver.switch_to_default_content()
但这也没有奏效。 如果有其他方法可以刮价格,请告诉我。
【问题讨论】:
-
总是将完整的错误消息(从单词“Traceback”开始)作为文本(不是屏幕截图)放在有问题的(不是评论)中。还有其他有用的信息。
-
首先尝试获取
svg,如果获取它没有问题,然后尝试下一个元素,然后再尝试另一个元素 - 看看哪个元素有问题。顺便说一句:如果它是标签<svg>那么也许你应该使用//svg//... -
顺便说一句:你的链接只给我消息
Access Denied. You don't have permission to access "http://www.kbb.com/cadillac/deville/1996/sedan-4d/" on this server.- 所以不可能看到 HTML 并测试你的代码。 -
代码没有错误,但可以说是'elementnotfound'错误。
-
如果在重定向到页面时遇到“拒绝访问”,请尝试使用 vpn。
标签: python selenium svg web-scraping