以Webdriver实例了解Webdriver

Webdriver是一个自动化测试软件,也是处理Ajax渲染之一的爬虫工具。web

本文以一个实际案例(今日头条的阳光宽频(365yg.com))来了解它有什么做用,它能作什么。相关的爬取思路也可应用在其余相相似的网站。ajax

 

分析思路浏览器

第1步:首先进入https://365yg.com肯定爬取的目标,本例爬取视频的下载连接视频标题做者网络

 

第2步:单击鼠标右键选择检查或按键盘F12调出谷歌浏览器抓包工具进行分析并发

屡次查看不一样的视频内容发现它们的视频超连接视频标题做者的网页结构彻底同样,没有反爬点,无需其余的处理ide

第3步:单击鼠标右键选择查看网页源代码查看是否被Ajax渲染工具

3.1从搜索结果上看该网页颇有可能已被Ajax渲染,可是仔细看发现下面这个区域有些关键字与咱们须要的内容很类似,并且相关内容带有\u****等字样,有多是将返回的中文转化为Unicode!!测试

3.2复制部份内容进行验证后发现尽管标题的内容与咱们查找的标题不同,但可肯定的是首页没有被Ajax渲染,请求返回的视频标题、做者等信息会动态改变网站

第4步:截止目前已解决爬取视频标题和做者、接下来着手视频的下载连接,接下来主要重复上面第一、第二、第3步url

在浏览器中复制第2步获取到的a标签的连接并进入,使用与第2步相同的方式调取谷歌浏览器抓包工具进行分析,复制video标签中的src属性值的连接http://v3-default.ixigua.com/b4163b403a3374cbd32c3493907d4f79/5cfcf33b/video/m/并用浏览器打开

如图所示视频已加载出来,也就是说这个连接就是咱们要找的视频下载连接!!

第5步:别高兴得太早,仔细想一下头条的反爬就这么容易被攻破吗?以第3步相同的方式查看该网页的网页源代码,并在页面查找video标签中的src属性值的连接http://v3-default.ixigua.com/b4163b403a3374cbd32c3493907d4f79/5cfcf33b/video/m/, 并无查找到内容,并且也无带有\u****等字样相关内容。

经Ajax渲染后的网页代码与网页源代码对比发现,网页源代码中缺乏了视频下载连接相关的内容,所以可肯定这网页是带有Ajax渲染的。

由于咱们使用requests或webdriver等获取回来的网页代码就是网页源代码中相关的内容,若是咱们直接使用webdriver进行解析标签就会提示没有找到该标签,使用Xpath、BeautifulSoup或Re进行解析也是相似的结果

第6步:难道就没有解决办法吗?上文有说起webdriver是处理Ajax渲染之一的爬虫工具,那若是能控制webdriver像浏览器那样等候ajax渲染后再获取该网页代码不就能够获取video标签中的src属性值的视频下载连接了吗?

没错,强大的webdriver提供了一个WebDriverWait方法提供多种显式等候方法,调用相关方法就能控制webdriver进行不一样条件的等候。

 

代码实现思路

1.建立爬虫类以及导入须要使用的包 -> 2.发送网络请求并获取首页全部的视频的连接、视频标题和做者 -> 3.遍历每一个视频播放连接并发送网络请求 -> 4.进行延时等候直至视频标签加载出来 -> 5.解析视频标签获取真实的视频下载连接 -> 6.保存爬取的视频连接等详情

 

第1步:建立爬虫类以及导入须要使用的包 ->

 在爬虫类的__init__方法中添加初始化url、User-Agent及建立webdriver对象

 第2步:发送网络请求并获取首页全部的视频的连接、视频标题和做者 ->

第3步:进行延时等候直至视频标签加载出来 -> 解析视频标签获取真实的视频下载连接 ->

第4步:保存爬取的视频连接等详情

第5步:将全部的方法封装到start()方法,并调用start()方法运行爬虫

 

查看运行结果

打开代码运行后生成的csv文件,复制real_url列任意的url并在浏览器中打开

成功加载出视频!!说明已经过代码成功验证爬取构思是正确的。

 

结果回顾

经过以上的代码已能成功爬取阳光宽频(365yg.com)的视频,但仅有7个结果,并且爬取的real_url列的连接是有时效性,过一段时间就不能再访问,如何爬取更多视频(破解下滑加载视频)、如何更高效地爬取视频(爬得更多、更快)等就须要运用更多复杂的知识点、添加到上面的代码来实现功能。

相关文章
相关标签/搜索