网络数据挖掘(一)
网络爬虫入门
urllib 的基本使用
他是Python内置的http请求库,主要包含如下4个模块
request:用来模拟请求发送
error:异常处理模块
parse:工具模块,拆分、解析、合并
robotparser:识别robots.txt文件
发送请求
使用 urllib 的 request 可以方便的实现请求的发送并得到响应
urlopen()常见的参数
- data参数
参数是可选的。如果要添加该参数,并且如果他是字节流编码格式的内容,即是bytes类型则需要bytes()转化。另外,如果传递了这个参数,则他的请求方式不再是get,而是post
- timeout参数
此参数用来设置超时时间,单位为秒。支持http 、https 、 ftp请求
- 其他参数
context 参数 必须是ssl.SSLContext类型用来指定SSL设置 cafile 和 capath 分别指定CA证书和他的路径 cadefault 参数已经被弃用了,默认false
request
- 第一个参数url用于请求URL,这是必传参数
- data
- headers 是一个字典,他是请求头
- origin_req_host 指的是请求方的host名称或者IP地址
- unverifable表示这个请求是否是无法验证的,默认是false,意思是用户没有足够权限来选择接收这个请求结果
- method 是一个字符窜,用来指示请求使用的方法 如: put get post
请求的高级用法
handler 简单的理解为各种处理器
urllib.request 中的BaseHandler 类是所有其他的Handler的父类,提供了最基本的方法,如:
default_open()、protocal_request()等
1. HTTPDefaultErrorHandler:用于处理HTTP响应错误
2. HTTPRedirectHandler:用于处理重定向
3. ProxyHandler:用于设置代理
4. HTTPCookieProcessor:用于处理,Cookies
5. HTTPPasswordMgr:用于管理密码,他维护了用户名和密码的表
6. HTTPBasicAuthHandler:用于管理认证
-----------------------------------------------------------------------
1.验证
2.代理
3.cookies
还有另一个重要的是OpenerDirector,简称Opener。 利用handler来构建opener
处理异常
1.URLerror
2.HTTPError
- code:返回HTTP状态码
- reason:同父类一样,返回错误原因
- headers:返回请求头
解析链接
1.urlparse()
- urlstring:这是必须项,即待解析的URL
- scheme:他是默认的协议
- allow_fragements:即是否忽略fragment,如果设置为false,则fragment部分就会被忽略,他会被解析为path、parameters或者query的一部分,而fragment部分则为空
2.urlunparse():接收一个可迭代对象,他的长度必须是6
3.urlsplit():只返回5个结果SplitResult ,是一个元镞组
4.urlunsplit():将各个部分组成一个完整链接方法,传入参数也是一个可迭代对象
5.urljoin()原理:我们可以提供一个base_url(基础链接)作为第一个参数,将新的链接作为第二个参数,他会拆分base_url的path、scheme和netloc这3个内容并对新连接缺失部分进行补充,最后返回结果集
6.urlencode()
7.parse_qs():讲参数反序列化为字典
8.parse_qsl():将参数转化为元组组成的列表
9.quote():该方法可以将内容转化成URL编码格式
10.unquote():URL解码