爬虫进阶——selenium,headless

本文详细介绍了Selenium中XPath的选择器用法,包括从根目录选择、根据元素属性选择、选择第几个节点、组合选择、兄弟节点的选择、选择父节点等。还提到了在实际使用中的注意事项,如`find_elements_by_`与`find_element_by_`的区别,以及如何进行文本操作。此外,文章还探讨了XPath与CSS选择器的等价用法。
摘要由CSDN通过智能技术生成

selenium

一、从根目录/开始


类似Linux的文件查看,/代表根目录,一级一级的查找,直接子节点,相当于css_selector中的>号

/html/body/div/p


二、根据元素属性选择


查找具体的元素,必须在前面输入标准开头//,表示从当前节点寻找所有的后代元素。

//div/*          div下面的所有的元素
 
//div//p         先在整个文档里查找div,再在div里查找p节点(只要在内部,不限定是否紧跟) ;等价于 css_selector里的('div p')
 
//div/p          p是div的直接子节点; 等价于 css_selector里的('div > p')
 
//*[@style]      查找所有包含style的所有元素,所有的属性要加@;  等价于 css_selector里的('*[style]')
 
//p[@spec='len'] 必须要加引号;等价于 css_selector里的("p[spec='len']")
 
//p[@id='kw']    xpath中对于id,class与其他元素一视同仁,没有其他的方法


三、选择第几个节点

//div/p[2]                   选择div下的第二个p节点 ;等价于css_selector里的div>p:nth-of-type(2)  符合p类型的第二个节点
 
//div/*[2]                   选择div下第二个元素
 
//div/p[position()=2]        position()=2   指定第二个位置;  等价于上面的 //div/p[2] 
 
          position()>=2      位置大于等于2
 
          position()<2       位置小于2
 
          position()!=2     位置不等于2
 
//div/p[last()]              选择div下的倒数第一个p节点; last()倒数第一个
 
//div/p[last()-1]            选择div下的倒数第二个p节点;
 
//div/p[position()=last()]   倒数第一个
 
//div/p[position()=last()-1] 倒数第二个
 
//div/p[position()>=last()-2]倒数第一个,第二个,第三个


 
四、组合选择

//p | //button                       选择所有的p和button,等价于css_selector里的 p, button
 
//input[@id='kw' and @class='su']    选择id=kw 并且 class=su的input元素
五、兄弟节点的选择
相邻后面的兄弟节点的选择:following-sibling::    两个冒号

//div/following-sibling::p    选择div里相邻的p节点

相邻前面的兄弟节点的选择:preceding-sibling::         此方法在css_selector中没有

//div/preceding-sibling::p[2]   选择div里前面相邻的第二个节点,不加[2]选择的是前面的所有的p节点

六、选择父节点    

//p[@spec='len']/..      选择p节点的上层节点       此方法在css_selector中没有
 
//p[@spec='len']/../..   上层节点的上层节点
七、在webelement对象里面使用查找Xpath 查找时,必须使用.指明当前节点
food = driver.find_element_by_id('food')
 
eles = food.find_elements_by_xpath(".//p")    .指明当前节点
 
eles = food.find_elements_by_xpath("..")       查找当前节点的父节点


 

headless

 1.我们要注意elements和element得区别

driver.find_elements_by_xpath——————————返回一个列表,里边有很多元素
driver.find_element_by_xpath——————————返回一个元素作为响应对象

 2.解决了driver.find_elements_by_xpath不能进行.text或者text()

如图必须要换行再点一下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值