当前位置:首页 > 手机资讯 > 正文

python爬虫(十三)selenium(Selenium入门、chromedriver、Phantomjs)

python爬虫(十三)selenium(Selenium入门、chromedriver、Phantomjs)

  • 尽量减少请求次数,程序执行速度比较快,会对服务器产生压力,管理者会指定一系列的反爬机制进行制衡,可以将请求到的网页源码保存获取到的HTML,供查错和重复使用
  • 关注网站的所有类型的页面
    H5页面:html5 = html4 + css3 +JavaScript
    APP
  • 多伪装
    代理IP,设置代码格式是固定的,免费的代理IP并不多
    随机请求头,进行爬虫的时候可能不是只请求一次,如果多次请求只用一个请求头,会出现问题。
    方式一:百度搜索请求头大全
    方式二:安装UserAgent模块,可以随机生成请求头
 
  • 利用多线程分布式
    在不被发现的情况下我们尽可能的提高速度。
    之前进行的爬取都是从上至下一条一条的爬取,当中间的一条内容出错,下载不了的时候,程序就会卡到那;多线程可以同时进行多个网站多个页面、图片的爬取,但是会导致资源的竞争,加锁之后,代码量增多,出现bug的几率也会增大。scrapy内置了异步网络框架,基于多线程的思想开发的,速度很快。分布式指的是多台计算机同时进行,机器足够多就可以在单位时间内多进行操作。

动态了解HTML技术
JS(了解)
是网络上最常用的脚本语言,它可以收集用户的跟踪数据,不需要重载页面直接提交表单,在页面嵌入多媒体文件,甚至运行网页
jQuery(了解)
jQuery是一个快速、简介的JavaScript框架,封装了JavaScript常用的功能代码
ajax(掌握)
ajax可以使用网页实现异步更新,可以在不重新加载整个网页的情况下,对网页的某部分进行更新,针对的是网页上有,但是网页源码中找不到的数据,可以通过分析数据接口和selenium两种方法
获取ajax数据的方式

1.直接分析ajax调用的接口。然后通过代码请求这个接口。

2.使用Selenium+chromedriver模拟浏览器行为获取数据
selenium的工作原理是让程序去连接浏览器,完成各种各样复杂的操作。本身是自动化测试工具,可以模仿人的行为打开、操作浏览器,程序员可以直接去网页中提取各种各样的信息,在网页上人能看到的内容,对于selenium来说是透明的。

方式 优点 缺点 分析接口 直接可以请求到数据。不需要做一些解析工作。代码量少,性能高 分析接口比较复杂,特别是一些通过js混淆的接口,要有一定的js功底。容易被发现是爬虫 Selenium 直接模拟浏览器的行为。浏览器能请求到的,使用selenium也能请求到。爬虫更稳定。 代码量多。性能低

Selenium 介绍

之前爬取的网页大多都是静态的,是在服务器端渲染,然后把网页源码给到浏览器,在浏览器端加载出来网页显示的界面。向对应的url发起请求,在响应对象中获取到网页源码,再对数据进行解析,得到需要的数据。
还有些网页的数据在网页中看不到的,如12306,页面是通过Ajax加载出来的,直接发起请求获取不到想要的数据,我们要找到真正的数据接口,从XHR中找到相关的数据包进行分析。

如果我们想要爬取网页中有 但是源码中找不着的数据

  • 分析数据接口(network) XHR的全称是XMLHttpRequest,分析数据接口比较麻烦,数据解析比较简单
  • 通过selenium。如12306的车次列表的数据表格,是动态加载出来的,用户可以直接看到,借助selenium工具打开网页也会有这些数据,可以通过selenium去爬取数据。用代码操控selenium工具能代替人去打开网页。

通过分析数据接口爬取案例可以参照python爬虫(十一、十二)爬取贴吧图片和练习爬取好看视频和新发地菜价

selenium是一个web的自动化测试工具,最初是为网站自动化测试而开发的,selenium可以直接运行在浏览器上,它支持所有主流的浏览器,可以接收指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏。使用之前先通过 pip install selenium 来安装selenium 。

Phantomjs快速入门(了解)

无头浏览器:一个完整的浏览器内核,包括js解析引擎,渲染引擎,请求处理等,但是不包括显示和用户交互页面的浏览器,没有和用户交互的界面。现在使用的已经不多了,但是之前有程序是用Phantomjs开发出来的,了解了之后可以看懂别人的代码,也可以对比学习webdriver。
使用之前要先下载phantomjs.exe。
使用时webdriver.PhantomJS(executable_path=“phantomjs.exe所在的路径”),括号内以关键字传参的形式传入phantomjs.exe所在的绝对路径,也可以直接把绝对路径传进去;如果phantomjs.exe在python文件夹下,与python.exe在同一目录下,就可以不用传入参数,因为在安装python的时候已经把python文件夹添加到了环境变量里,把phantomjs.exe放到python文件夹中相当于添加到环境变量。

最新文章