W
e
l
c
o
m
e
: )

爬虫和反爬

一、爬虫和反爬的斗争---反爬策略

1、反爬策略

  1. 通过user-agent客户端标识来判断是不是爬虫。
    解决的办法:封装请求头:user-agent

  2. 封ip

     设置代理ip
    
  3. 通过访问频率来判断是否是非人类请求。

    解决的办法:设置爬取间隔和爬取策略。

  4. 验证码

    解决办法:识别验证码

  5. 页面数据不再直接渲染,通过前端js异步获取

    a.通过selenium+phantomjs来获取数据
    b.找到数据来源的接口(ajax接口)

  6. 能获取列表页,就不获取详情页,为了避免增加请求的数量。

    将详情页放到每条数据中心,第一次爬取先爬取列表。
    第二次在从数据库中拿出详情页链接,在做第二次爬取。

  7. 能一次性获取,就不分页获取,正对ajax请求。可以将每一页获取数量调大

2.页面中的技术

  1. js:他是一种语言。

    获取页面的元素,可以对这些页面元素做些操作。
    网络数据的获取

  2. jquery:他就是一个js库,这个库可以使得js编程变得轻松容易。

  3. ajax

    同步请求和异步请求。

3.selenium+phantomjs

如果想要解决页面js的问题,主要需要一个工具,这个工具(具备浏览器的功能)可以帮助我们来运行获取到的js。

1、什么selenium?

selenium是一个web自动化测试工具。但是他本身不带浏览器的功能,他这工具就相当于一个驱动程序,通过这工具可以帮助我们自动操作一些具有浏览器功能外部应用。

2、什么是phantomjs?

phantomjs就是内置的无界面浏览器引擎。他可以像浏览器那样加载页面,运行页面中的js代码。
	chromedriver.exe这个是谷歌浏览器驱动程序,通过这个程序可以使得selenium可以调用chrome浏览器。---有界面浏览器。

这两个的功能有界面的更加强大:很多网站还是可以识别你是不是用phantomjs来进行爬取的,也会被禁。但是有界面的chrome浏览器是不会被禁的,他就像一个真正用户在请求一样。

3、selenium和phantomjs的安装。

1.下载phantomjs和chromedriver.exe
		搜索phanomjs镜像
2.安装:
		解压
		找到两个压缩包中exe文件,将其复制到anaconda/Scripts目录下面就ok了。
		C:\Anaconda3\Scripts
		C:\Anaconda3
3.测试:
		在cmd中输入:phantomjs
					chromedriver
4.selenium安装:pip isntall selenium==2.48.0
posted @ 2020-02-18 13:22  水一RAR  阅读(92)  评论(0编辑  收藏  举报