• 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+table】基于jQuery,利用TableFreeze.js实现html的table冰冻效果,非常强大
    vue中使用element-ui实现excel表格导入
    正则第二次配结果与第一次不一致;正则匹配,第一次匹配结果正常,第二次匹配结果就错误,第三次又正常,第四次又错误,以此类推
    关于用vsCode格式化代码时,代码自动换行问题
    百度地图实现测量面积和测量距离功能
    sql 通过group by、sum聚合查询结果的排序
    C#小数计算的坑
    C# 反射的例子
    IE8环境下的上传图片预览
    做移动端电子签名发现canvas的 一些坑
  • 原文地址:https://www.cnblogs.com/finsomway/p/10657208.html
Copyright © 2020-2023  润新知