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格式

转载于:https://juejin.im/post/5c95c3a5e51d451d5b05a660

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值