网络数据挖掘(一)

网络爬虫入门

urllib 的基本使用

他是Python内置的http请求库,主要包含如下4个模块
    request:用来模拟请求发送
    error:异常处理模块
    parse:工具模块,拆分、解析、合并
    robotparser:识别robots.txt文件

发送请求
使用 urllib 的 request 可以方便的实现请求的发送并得到响应

urlopen()常见的参数

  1. data参数
     参数是可选的。如果要添加该参数,并且如果他是字节流编码格式的内容,即是bytes类型则需要bytes()转化。另外,如果传递了这个参数,则他的请求方式不再是get,而是post
  2. timeout参数
     此参数用来设置超时时间,单位为秒。支持http 、https 、 ftp请求
  3. 其他参数
    context 参数 必须是ssl.SSLContext类型用来指定SSL设置
    cafile 和 capath 分别指定CA证书和他的路径
    cadefault 参数已经被弃用了,默认false

request

  1. 第一个参数url用于请求URL,这是必传参数
  2. data
  3. headers 是一个字典,他是请求头
  4. origin_req_host 指的是请求方的host名称或者IP地址
  5. unverifable表示这个请求是否是无法验证的,默认是false,意思是用户没有足够权限来选择接收这个请求结果
  6. 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解码