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格式
转载于:https://juejin.im/post/5c95c3a5e51d451d5b05a660