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()
cs = chardet.detect(html)
print(cs)
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能够经过两种方式
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格式