python+selenium使用xpath定位的问题

这篇具有很好参考价值的文章主要介绍了python+selenium使用xpath定位的问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

python用selenium调chrome爬取网页信息遇到报错:

1.InvalidSelectorException: Message: invalid selector: The result of the xpath expression is [object Attr]. It should be an element

原因是selenium不支持从xpath中直接获取text文本信息。

name=web.find_element(By.XPATH,"/html/body/div[3]/div/div[2]/h2/text()")
website=web.find_element(By.XPATH,"/html/body/div[3]/div/div[2]/a[3]/@href")

xpath表达式修改为:

title = web.find_element(By.XPATH,"/html/body/div[3]/div/div[2]/h2").text

#获取节点某个属性的值
website = web.find_element(By.XPATH,"/html/body/div[3]/div/div[2]/a[3]").get_attribute("href")

2.Message: no such element: Unable to locate element:

xpath表达式一直无法准确定位,原因是通过浏览器开发者工具copy的xpath表达式和实际selenium获取的网页资源不同,表达式错误无法定位。(经对比发现是selenium有一个需用户同意的cookie弹窗)

通过print(web.page_source)拿到selenium获取的网页资源,发现有一个div未加载出来。其实应该是body下第2个div。通过开发者工具重新获得准确的xpath表达式。

原xpath表达式:

title = web.find_element(By.XPATH,"/html/body/div[3]/div/div[2]/h2").text

 改为正确的xpath表达式:

title = web.find_element(By.XPATH,"/html/body/div[2]/div/div[2]/h2").text

3.使用发现selenium效率过低,一个网页全部加载完毕要1分钟左右。解决办法是设置最长加载时长,超过时长则停止加载,开始定位数据。文章来源地址https://www.toymoban.com/news/detail-523643.html

from selenium.common.exceptions import TimeoutException

web = webdriver.Chrome()
web.set_page_load_timeout(10)#设置页面加载时长
web.set_script_timeout(10)#设置JS加载时长

try:
	web.get(str(url))
except TimeoutException: #加载超时异常处理
	web.execute_script('window.stop()')  

到了这里,关于python+selenium使用xpath定位的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 学习selenium+python使用 XPath 表达式来实现找到目标元素时智能封装等待,执行测试代码启动Chrome浏览器后,地址栏只显示data;

    学习使用 XPath 表达式来实现找到目标元素时智能封装等待 执行测试代码启动Chrome浏览器后,地址栏只显示 data; 看了好久找到了替代启动浏览器的方法:换成 self.driver.get(\\\'http://localhost:8080\\\') 就好了 然后开始琢磨两者的区别: 使用 self.driver.get(\\\'http://localhost:8080\\\') 时,driver 是

    2024年01月17日
    浏览(81)
  • Python爬虫实战——Lazada商品数据(selenium自动化爬虫,xpath定位)

            在此说明,这个项目是我第一次真正去爬的一个网站,里面写的代码我自己都看不下去,但是已经不想花时间去重构了,所以看个乐呵就好,要喷也可以(下手轻一点)。这篇文算是记录我的学习中出现的一些问题,不建议拿来学习和真拿我的代码去爬Lazada的数据,

    2024年02月02日
    浏览(64)
  • python安装selenium(Firefox和Chrome)+元素定位

    一、下载地址 谷歌浏览器chromedriver驱动下载地址: https://chromedriver.storage.googleapis.com/index.html 火狐浏览器geckodriver驱动下载地址: https://registry.npmmirror.com/binary.html?path=geckodriver/ 二、谷歌浏览器配置: 将下载好的chromedriver驱动解压后放在python文件夹中 三、火狐浏览器: 将下载

    2024年02月06日
    浏览(51)
  • selenium定位元素报错:AttributeError: ‘WebDriver‘ object has no attribute ‘find_element_by_xpath‘问题解决

    driver.find_element_by_方法名(”value”)变为 driver.find_element(By.方法名, “value”)

    2024年02月15日
    浏览(69)
  • selenium—xpath定位方法详解

    今天我们来聊聊selenium -- xpath定位方法,我们都知道selenium有八大定位策略分别是id、name、class name、tag name、link text、partial link text、xpath、css 。那么我们今天呢主要来讲讲八大定位策略中的xpath的定位方法,废话不多说我们直接开始吧。  同时,我也准备了一份软件测试视频

    2024年02月04日
    浏览(42)
  • Selenium元素定位之xpath

    目录 XPATH 元素定位 xpath通过绝对路径定位元素 xpath通过相对路径定位元素 xpath通过元素属性定位元素 xpath通过属性值模糊匹配定位元素 xpath通过文本定位元素 xpath常见语法一览表 XPath 是用于在 XML 文档中定位节点的语言。由于 HTML 可以是 XML (XHTML) 的实现,Selenium 用户可以利

    2024年02月03日
    浏览(44)
  • selenium-XPATH定位

    XPATH定位: 相对路径     相对定位是两个杠表示“//”,相对路径易维护     例: \\\"//div[1]//div[2] 绝对路径     绝对定位用一个杠“/”, 绝对路径一个层级变化所有空间都有变化     例: /html/body/div[1]/section/section/main/div[2]/div[2]/div[1]/div[2]/button[1]/span last()方法     当标签存

    2024年02月09日
    浏览(37)
  • selenium:元素定位之xpath、css

    元素定位是在做UI自动化测试中最重要的一环,要牢牢掌握定位的方法,才能更有效率的进行UI自动化测试。 常见的元素定位方式: id name tag_name class_name link_text partial_link_text xpath css 其中id,name是具有唯一性的,所以定位起来比较简单,直接使用即可 在UI自动化测试中,xpa

    2024年02月09日
    浏览(51)
  • selenium通过xpath定位元素报错?

    1.xpath介绍 XPath 是一门在 XML 文档中查找信息的语言。XPath 用于在 XML 文档中通过元素和属性进行导航。而html中也应用了这种语言 ,所以 ,我们定位html页面元素时也会用到xpath这种方法 。 2.xpath定位方式 xpath主要通过以下四种方法定位 : 路径定位 属性定位 多属性定位 路径

    2024年04月09日
    浏览(50)
  • selenium使用 webdriver.Chrome() 报错,找不到执行文件的解决方法(一)

    使用 driver = webdriver.Chrome() 时,遇到以下报错: selenium.common.exceptions.WebDriverException: Message: \\\'chromedriver\\\' executable needs to be in PATH. 两种解决方法: (1)在webdriver.Chrome()中添加executable_path参数,参数value = chromedriver.exe文件所在路径,示例: from selenium import webdriver chrome_driver_path

    2024年02月11日
    浏览(81)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包