selenium 获取href find_element_by_xpath

查询多级目录,中间用*链接:

name_cache = driver.find_element_by_xpath("//div[@class='company-list']/*/div[@class='card']")

首先

Xpath (XML Path Language),是W3C定义的选择节点的语言

第一种:绝对位置:

   此方法比较简单,例子:

         xxx.find_element_by_xpath("/html/body/div[x]/form/input")

         //x 代表第x个 div标签(索引从1开始而不是0)

        当页面元素位置发生改变时,需要修改

第二种:相对位置:

   举例:

        xxx.find_element_by_xpath("//div[@class='meneame']/a")

        //定义class名字为meneame的div下的a标签

第三种:按照标签的属性进行定位:

    举例:

        xxx.find_element_by_xpath("//div[@class='meneame']")

        //定义class名字为meneame的div标签

第四种:选择第几个:

      //div/*[2]    选择div下第二个元素

     //div/p[position()>=2]         选择div下位置大于等于2的p标签

     //div/p[last()]    选择div下最后一个p标签

第五种:并:

      //div[@id='a' and @name='b']     选择id=a 并 class=b的div元素

第六种:父节点:

     //div[@id='a']/..    选择目标div的父节点

第七种:同级节点:

     preceding-sibling选取当前节点之前的所有同级节点

     following-sibling选取当前节点之后的所有同级节点

     用法:

          //div/following-sibling::p    选择div之后的同级的p节点   (div与p同级)
 

在使用selenium进行抓取url的时候,试图使用find_elements_by_xpath来获取。
因此想当然的直接使用XPATH的语法进行获取属性
事例缩略后xml结构如下


<div class="qg-limit-list" data-spm="1998564503" data-spm-max-idx>
<a href="//item.taobao.com/item.htm?spm=a21bz.7725273.1998564503.46.1Tdtjr">
    <img src="//img.alicdn.com/tps/TB1lUEgLpXXXXbzXXXXXXXXXXXX-114-114.png" class="qg-img-tag">

按照XPATH正常的语法,想要获取a标签的url也就是href的属性应该写作

//div[@class="qg-limit-list"]/a/@href

然而在使用find_elements_by_xpath一直报错,显示只能存放element而不是object。
最后的解决办法就是,这里只取到标签级,想要获取元素在之后再获取如下

xpath_urls = '//div[@class="qg-limit-list"]/a'
urls_pre = browser.find_elements_by_xpath(xpath_urls)
url = urls_pre[0].get_attribute("href")


对,就是加.get_attribute(“href”),同理想要获得其他属性值,也可以通过他来获取。

这样也可以

page_btns = driver.find_elements_by_xpath(".//div[@class='pc-pager-wrap']/a[@class='pager-item router-link-active']")

if page_btns[-1].text=="下一页":

    new_url= page_btns[-1].get_attribute("href")



原文链接:https://blog.csdn.net/hacklyc/article/details/65454285

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI算法网奇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值