您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
写Python爬虫一定要用到chromedriver吗?
浏览器,爬虫,程序写Python爬虫一定要用到chromedriver吗?
发布时间:2019-02-08加入收藏来源:互联网点击:
写Python爬虫一定要用到chromedriver吗?
回答于 2019-09-11 08:43:50
回答于 2019-09-11 08:43:50
如果是让我写,我优先选用selenium(chromedriver),模拟正常浏览。效率低很多,但是数据靠谱。
爬虫与反爬,就像生存与死亡,是一个值得考虑到问题。
写爬虫,目的是获得数据。如果是简单、无争议公开的数据,只要不对服务器造成压力,方法都不重要。但往往要获取的数据,很多情况下对方都不希望通过爬虫自动化轻易得到。这时候,双方工程师、甚至是律师就要博奕了。
红方:基于数据统计、机器学习的方法,判断区别与常人浏览的途径很多。
蓝方:针对红方的可能手段,也有很多途径。所谓上有政策,下有对策。比如维护一个IP池自动切换。博奕,说白了就是斗争。没有永远胜利的一方。花费精力写一个专业爬虫,但这个爬虫可能也需要维护的。个人觉得不值得,应该想想其他方式。
专业爬虫,核心不会用python写的
大前端的语言,js+抓包分析是更加胜任爬虫的语言。一是爬取的数据,大部份都是来自网站或APP。用原汁原味的js,再对口不过。同时,效率会更高。据我所知,很多竞争对手爬取对方的价格,基本都绕不开js。用python会适得其反。
说个反爬的损招
通过nginx配置,能实现简单的反爬,这里说一个损招。
一般对方爬取我方数据时,我们都会设置路障,比如要求对方输入手机验证码、识别图片、或者告知,请24小时候再来访问。
不妨反其道而行之,如果能确认对方是爬虫,不要阻止对方来爬取,二是造随机数据给对方爬。数据伪装成什么样,可以灵活控制。可以80%假,20%真。或者比例反过来。甚至比例可以随机。这种方法可以捉弄对方的工程师。
最后友情提醒,爬虫有风险,码农要谨慎。
回答于 2019-09-11 08:43:50
不是,你说的那个driver是用谷歌浏览器驱动,通常代码中如果用到headless的谷歌浏览器,则必须用这个驱动;
其他情况,则没有必要用,也没有用!
回答于 2019-09-11 08:43:50
不一定,要看网页使用的技术
爬虫的目的是抓取页面元素,普通的网站,页面都是在后端渲染以后发送到浏览器显示,爬虫可以直接定位元素,而另一些则不然,所以如果没有形成页面肯定需要使用浏览器驱动来,渲染页面,然后我们才能拿到页面元素。
如果是后端渲染好,直接在浏览器呈现的,不需要用Chrome驱动,
如果是在浏览器才开始渲染,也就是说传输到浏览器的不是静态页面,而是一堆js文件,那么就需要用chrome driver了。
回答于 2019-09-11 08:43:50
不一定,这个要看目前网站的反爬措施
如果能用requests库区抓取数据的话,就不必用selenium,因为这个再执行效率上并不是很快。
下面介绍一下selenium
selenium是一个自动化运维的工具,它可以驱动谷歌浏览器、火狐浏览器等,去自动打开网址并对其进行相关操作,比如填写表单、点击按钮、滑动验证码等。
能从web界面获取信息。 比如获取12306票务信息,招聘网站职位信息,财经网站股票价格信息 等等,然后用程序进行分析处理。
Selenium 的自动化原理是这样的
从上图可以看出:
我们写的自动化程序 需要使用 客户端库。
我们程序的自动化请求都是通过这个库里面的编程接口发送给浏览器。
比如,我们要模拟用户点击界面按钮, 自动化程序里面就应该 调用客户端库相应的函数, 就会发送 点击元素 的请求给 下方的 浏览器驱动。 然后,浏览器驱动再转发这个请求给浏览器。
这个自动化程序发送给浏览器驱动的请求 是HTTP请求。
客户端库从哪里来的? 是Selenium组织提供的。
Selenium组织提供了多种 编程语言的Selenium客户端库, 包括 java,python,js, ruby等,方便不同编程语言的开发者使用。
我们只需要安装好客户端库,调用这些库,就可以发出自动化请求给浏览器咯。
浏览器驱动 也是一个独立的程序,是由浏览器厂商提供的, 不同的浏览器需要不同的浏览器驱动。 比如 Chrome浏览器和 火狐浏览器有 各自不同的驱动程序。
浏览器驱动接收到我们的自动化程序发送的界面操作请求后,会转发请求给浏览器, 让浏览器去执行对应的自动化操作。
浏览器执行完操作后,会将自动化的结果返回给浏览器驱动, 浏览器驱动再通过HTTP响应的消息返回给我们的自动化程序的客户端库。
自动化程序的客户端库 接收到响应后,将结果转化为 返回给 我们的代码。
我们的程序就可以知道这次自动化操作的结果如何了。
我们再总结一下,selenium 自动化流程如下:
自动化程序调用Selenium 客户端库函数(比如点击按钮元素)客户端库会发送Selenium 命令 给浏览器的驱动程序浏览器驱动程序接收到命令后 ,驱动浏览器去执行命令浏览器执行命令浏览器驱动程序获取命令执行的结果,返回给我们自动化程序自动化程序对返回结果进行处理上一篇:游戏中打辅助有哪些千万别做的?
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |