zoukankan      html  css  js  c++  java
  • Python爬虫(2):urllib库

    爬虫常用库urllib

    注:运行环境为PyCharm

    urllib是Python3内置的HTTP请求库

    urllib.request:请求模块

    urllib.error:异常处理模块

    urllib.parse:url解析模块

    urllib.robotparse:robot.txt解析模块

    1、urllib.request.urlopen(url, data=None, [timeout]*, cafile=None, cadefault=False,content=None)

    url:请求网址

    data:请求时需要发送的数据

    timeout:超时设置

    from urllib import request
    
    # 请求获取网页返回内容
    response = request.urlopen('https://www.toutiao.com/')
    # 获取网页返回内容
    print(response.read().decode('utf-8'))
    # 获取状态码
    print(response.status)
    # 获取请求头
    print(response.getheaders())
    # 对请求头进行遍历
    for k, v in response.getheaders():
        print(k, '=', v)

    当爬去一些反爬网站时,需要适当地增加请求头进行请求要用到Request对象。

    2、error.URLError:url的一些问题,这个异常只有一个reason属性

         error.HTTPError:error.URLError的子类,在与上面的混合使用时需要将这个异常放到前面,这个异常是一些请求错误,有三个方法,.reason(), .code(), .headers(),在捕捉异常时通常先使用这个

    3、urllib.parse.urlparse(url,scheme=‘’,allow_fragments=True)

         解析url

    from urllib import request, parse
    # 解析url
    print(parse.urlparse('https://movie.douban.com/'))
    print(parse.urlparse('https://movie.douban.com/', scheme='http'))
    print(parse.urlparse('movie.douban.com/', scheme='http'))
    
    结果:
    ParseResult(scheme='https', netloc='movie.douban.com', path='/', params='', query='', fragment='')
    ParseResult(scheme='https', netloc='movie.douban.com', path='/', params='', query='', fragment='')
    ParseResult(scheme='http', netloc='', path='movie.douban.com/', params='', query='', fragment='')

    反解析url

    from urllib import parse
    # 将列表元素拼接成url
    url = ['http', 'www', 'baidu', 'com', '1554384640', 'f2b8183cd1e469a'] # 这里至少需要6个元素
    print(parse.urlunparse(url))
    
    结果:
    http://www/baidu;com?1554384640#f2b8183cd1e469a

    参考资料:

    1、Python爬虫常用库之urllib详解|日常学python:https://mp.weixin.qq.com/s?src=11&timestamp=1554382467&ver=1526&signature=fJepqC9Qswpe2fWjtxmNrUth3gX5vZ0jPBQyzBeqQMhhfbj462b*Jk0WPXYUjXP6dUP63tU8G0HqPV9sDWllrGVr0frRAERQE4fY-6oqE5ZZxUXRnIW508nhNQdnQ*be&new=1

  • 相关阅读:
    这些HTML、CSS知识点,面试和平时开发都需要 No1-No4(知识点:HTML、CSS、盒子模型、内容布局)
    skywalking在 .net Framework客户端使用
    websoket的扫码登陆简单用法
    微信授权登陆nginx代理
    本地下载文件的方法(兼容下载图片和视频)
    Vue-给对象新增属性(使用Vue.$set())
    浏览器解析URL的过程
    promise es6,es7
    filter全局方法的写法
    监听滚动条
  • 原文地址:https://www.cnblogs.com/finsomway/p/10657208.html
Copyright © 2011-2022 走看看