python selenium

#selenium

  • 这个模块玩儿爬虫的都知道,因为这个可以完全模拟人为的对浏览器的操作,在一些反爬虫做的很完善的站点的时候,大家选取这个模块,可以说是百试不爽。
  • 很多浏览器都支持自动操作,我一般用chrome。
  • 模块获取元素和定位按钮的方法有很多,这个大家可以具体官方文档。
  • 这里只是想踩一下Web页面的渲染问题,也就是,我们在使用selenium定位元素时,如果页面没有把你需要的需要的定位元素或者按钮加载出来咋搞。

强制等待

  • 这是最简单粗暴的方式,方法很是简单,那就是sleep
  • 这个方法其实挺不靠谱的,就是你虫子爬啊爬,然后你让他睡一会儿,等待页面的加载完成,一种好的现象,它睡醒了,自己需要的东西也出来了,但是如果说是没有,虫子就直接罢工抛异常给你。not fount element。

隐形等待

  • 这个就是一种比较老实的等待,那就是利用selenium自带的方dervier.implicitly_wait(等待时间),
  • 为啥说这个等待方法很老实了,就是因为,回一直等待这个页面加载渲染完,也就是你上面那个圈圈再也不转了,你的虫子就会在你这个已经加载好的页面上寻找它定位好的元素,然后执行下一步。
  • 这个方法虽然笨重,但是如果说你需要的页面的比较简洁,这个方法就比较稳妥,而且你的虫子也会很舒服。
    ##显性等待
  • 这个比起上面的方法来说就好一些,网页加载是一部分一部分的加载,就说明不需要到网页完全加载完再让虫子去爬。
  • python早就在selenium中留好方法,就是常说的
  • from selenium.webdriver.support.wait import WebDriverWait
  • from selenium.webdriver.support import expected_conditions as EC
  • 上面的两个数模块
  • 方法的话
  • WebDriverWait(操作对象,等待时间,等待间隔).until(
    EC.presence_of_all_elements_located((等待元素))
    )
  • 等待元素可以使用By定位,这个就不多提及了,因为元素定位的方法更加简答
  • 这等待对象中有很多的方法,我上面只提到一种方法,大家可以在文档中根据合适的场景获取合适的方法,进行定位。

结合scrapy

  • 结合框架,你可能会说,直接提交表单不就行了么?但是反爬虫的机制中,数据只有发生点击事件,人家的服务器才会给你数据,不然没办法获取
  • 这里将常用的框架scrapy,根据需求在不同的需求在不同的阶段进行点击事件。
  • 一般都发生在页面爬取然后需要点击获取数据然后再爬取,你就会发现这不就是中间层嘛,
  • 在中间层创造一个类,然后去操作浏览器,不过这时候你就会觉得好别扭啊,我之前都获取了一半数据了还要再重头来。
  • 你可以使用幽灵浏览器,就是计算机后台模拟打开,不过还是重头来的,我还没有想到其他的解决办法,有之后过来更新,大家也可以评论出来。

部分接口使用

  • 说明一下,导入模块from selenium import webderiver
  1. 打开浏览器的方法
    deriver = webderiver.chrome()可以使用的浏览器有好多种
  2. 打开网页的方法
    deriver.get(url)以上面实例化的对象为实例
  3. 获取当前页面的页面源码
    source_text = deriver.page_source
  4. 使用完以后最好对这个deriver进行释放,她自己不会释放,你需要手动一下
    deriver.quit()deriver.close()这两有些区别就是,前者会把自己打开的所有页面干没了,后者之后关闭当前页面。
  5. 获取页面的图片文件
    deriver.get_screenshot_as_file('元素名称')需要引入模块(先说方法后说库是不是。。。)from selenium.webdriver.common.desired_capabilities import DesiredCapablitlies
  6. 通过路经定位元素
    deriver.find_element_by_xpath('元素路径')
    如果要是对其进行点击操作,就在后面加.click()如果要是需要输入信息就在后面加.send_keys('输入信息')就妥。
  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值