爬虫中bs4和xpath定位与selenium定位的对比


在学习和对比的过程中, 发现其实有很大的共同点, 但是有很细微的差别, 一不小心就踩到坑了

selenium 是什么?

selenium 是我们UI自动化中常用的一个库, 用它来实例化一个driver 对象, 这个 dirver 对象来模拟我们人使用浏览器上网操作, 其中 对于元素的定位方式, 常用的也是 css 选择器和 xpath 路径, 对应爬虫中使用的 bs4 和 xpath . 和爬虫相比, UI自动化就是白盒,我们看着页面源码写的,不受到反爬机制的限制, 对于验证码那些部分都有专门的万能验证码, 一般是公司内部对功能 测试的自动化脚本补充,常用于回归测试, 提高测试效率.

selenium 和 爬虫中的bs4 , xpath 定位相同和不同点?

其中很多都是共通的, bs4 就可以直接使用 css 选择器, soup.select() 里就能接使用后代选择器那些, 定位成功后返回的是一组列表.
etree 实例化的对象, 使用的是 xpath 路径定位, 返回的也是一组列表.
这两个对应 selenium 中的 driver.find_elements(css/xpath) , 返回的是列表

略有不同的是 selenium中定位成功后获取到的元素, 不管是通过 css 还是 xpath , 都可以 element.text获取文本 信息, 但都无法用element[key] 获取这个元素的属性信息, 会报错的.

但是在 爬虫中, bs4 可以通过 css 选择器定位到的元素, 可以 element.text 获取文本, 也可以使用 element[key] 获取指定的属性,
但是在 etree实例化的对象中, 定位成功后的元素, 可以element.text 获取文本, 但是如果使用 element[key] 就会报错

总结: 定位方法类似, 但是要获取属性, 只有爬虫中的bs4 定位成功后用element[key]能拿到, 而爬虫中的xpath路径里 path/@attribute 能直接获取属性, 但是不允许 ele = etree(xpath) , ele[key] , 这样获取属性会报错, 只能通过 xpath表达式来获取属性. 这种xpath表达式放在slenium定位中, 是用不了的.


文章作者: 陌上人如玉
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 陌上人如玉 !
 上一篇
爬虫lxml库,etree模块缺失问题记录 爬虫lxml库,etree模块缺失问题记录
最近在看B站的一个视频学习爬虫, 视频还是今年上半年的, 比较新的, 但是依然遇到了不少兼容问题, 这个做记录, 如果有小伙伴和我一样遇到, 可以对比参考一下怎么解决.
2020-12-04
下一篇 
开始学习爬虫 开始学习爬虫
最近两天已经开始学习爬虫了, 准备 学完爬虫, 再弄个PYQT5学习一下, 以后过年过节买车票, 就自己做个抢票软件,自己抢票回家.
2020-12-02
  目录