Spider-1

urllib

  • 包含模块
    • urllib.request:打开和读取urls
    • urllib.error:包含urllib.request产生的常见的错误,使用try捕捉
    • urllib.parse:包含解析url的方法
    • urllib.robotparse:解析robots.txt文件
  • 网页编码问题的解决
    • chardet 能够自动检测页面文件的编码格式,可是,可能有误
import urllib
import chardet
if __name__ == '__main__':
    url = 'http://......'
    rsp = urllib.request.urlopen(url)
    html = rsp.read()
    # 利用chardet检测
    cs = chardet.detect(html)
    print(cs)
    #使用get取值保证不会出错
    html = html.decode(cs.get("encoding","utf-8"))
    print(html)
复制代码
  • urlopen的返回对象
    • geturl:返回请求对象的url
    • info:请求返回对象的meta信息
    • getcode:返回http code(200.404.503...)
  • requeat.data 的使用
    • 访问网络的两种方法
      • get:
        • 实际是利用参数给服务器传递信息
        • 参数为dict,而后用parse编码
      • post:
        • 通常向服务器传递参数使用
        • post是把信息自动加密处理
        • 咱们若是想使用post信息,须要用到data参数
        • 使用post,意味着HTTP的请求头可能须要更改:
          • Content-Type:application/x-www.form-urlencode
          • Content-Length:数据长度
          • 简而言之,一旦更改请求方法,请注意其余请求头部信息相适应
        • urllib.parse.urlencode能够将字符串自动转化成上面的格式
        • 为了更多的设置请求信息,单纯的经过urlopen函数已经不太好用了(请求头)
        • 须要利用request.Request类
  • urllib.error
    • URLError产生的缘由:
      • 没网
      • 服务器链接失败
      • 找不着指定服务器
      • 是OSError的一个子类
    • HTTPError:是URLError的一个子类
    • 二者区别
      • HTTPError是对应HTTP请求的返回码错误,若是返回码是400以上的,则会引起HTTPError
      • URLError对应的通常是网络出现问题,包括url问题
      • 关系区别:OSError->URLError->HTTPError

UserAgent

  • UserAgent:用户代理,简称UA,属于headers的一部分,服务器经过UA来判断访问者身份
  • 设置UA能够经过两种方式
    • headers
    • add_header

ProxyHangler处理(代理服务器)

  • 使用代理IP,是爬虫经常使用手段
  • 获取代理服务器的地址:
    • www.xicidaili.com
    • www.goubanjia.com
  • 代理用来隐藏真实访问中,代理也不容许频繁访问某一个固定的网站,因此,代理必定要不少不少
  • 基本使用代理步骤:
    • 设置代理地址
    • 建立ProxyHandler
    • 建立Opener
    • 安装Opener

cookie & session

  • 因为http协议的无记忆性,人们为了弥补这个缺点,所采用的的一个补充协议
  • cookie是发放给用户(即http浏览器)的一段信息,session是保存在服务器上的对应的另外一半信息,用来记录用户信息
  • 区别:
    • 存放位置不一样
    • cookie并不安全
    • session会保存在服务器上必定时间,会过时
    • 单个cookie保存数据不超过4k,不少浏览器限制一个站点最多保存20个
  • session的存放位置
    • 存在服务器站
    • 通常状况下,session是放在内存或者数据库里中
    • 没有cookie登陆,能够看到,没有使用cookie则反馈网页为未登陆状态
  • 使用cookie登陆
    • 把cookie复制下来,放在请求头(headers)
    • http模块包含一关于cookie的模块,经过他们咱们能够自动使用cookie
      • CookieJar
        • 管理存储cookie,向传出的http请求添加cookie
        • cookie存储在内存里,CookieJar实例回收后cookie将消失
      • FileCookieJar(filename,delayload=None,policy=None):
        • 使用文件管理cookie
        • filname是保存cookie的文件
      • MozillaCookieJar(filename,delayload=None,policy=None):
        • 建立于Mozilla浏览器cookie.txt兼容的FileCookieJar
      • LwpCookieJar(filename,delayload=None,policy=None):
        • 建立于libwww-perl标准兼容的Set-Cookie3格式的FileCookieJar实例
      • 他们的关系是:CookieJar->FileCookieJar->MozillaCookieJar & LwpCookieJar
  • 自动使用cookie登陆的大体流程是:
    • 打开登陆页面后自动经过用户密码登陆
    • 自动提取反馈回来的cookie
    • 利用提取的cookie登陆隐私页面

SSL

  • SSL证书就是指遵照SSL安全套阶层协议层的服务器数字证书
  • 有第三方公司发放
  • 遇到不信任的SSL证书,须要单独处理

js加密

  • 有的反爬虫策略须要js对须要传输的数据进行加密处理(一般是取md5值)
  • 通过加密,传输的就是密文,可是加密函数或者过程必定在浏览器完成的,也就是必定会把代码(js代码)暴露给使用者
  • 经过阅读加密算法,就能够模拟出加密过程,从而达到破解

ajax

  • 异步请求
  • 必定会有url,请求方法,可能有数据
  • 通常使用json格式
本站公众号
   欢迎关注本站公众号,获取更多信息