• 6.每天进步一点点---Python爬虫urllib库


    文章未完成待续

    urllib 库是 Python 内置的一个 HTTP 请求库。在 Python 2.x 中,是由 urllib 和 urllib2 两 个库来实现请求发送的,在 Python 3.x 中,这两个库已经合并到一起,统一为 urllib 了。

    urllib 库由四个模块组成。

    • request 模块:打开和浏览 URL 中的内容。
    • error 模块:包含 urllib.request 发生的错误或异常。
    • parse 模块:解析 URL。
    • robotparser 模块:解析 robots.txt 文件。

    1.发送请求

    一个简单的模拟访问百度首页的例子,代码示例如下

    import urllib.request
    
    resp = urllib.request.urlopen("http://www.baidu.com")
    print(resp)
    print(resp.read())
    
    • 1
    • 2
    • 3
    • 4
    • 5

    代码执行结果如下

    在这里插入图片描述

    通过 urllib.request 模块提供的 urlopen()函数,我们构造一个 HTTP 请求,从上面的结 果可知,urlopen()函数返回的是一个 HTTPResponse 对象,调用该对象的 read()函数可以获 得请求返回的网页内容。read()返回的是一个二进制的字符串,明显是无法正常阅读的,要调用 decode(‘utf-8’)将其解码为 utf-8 字符串。这里顺便把 HTTPResponse 类常用的方法和属 性打印出来,我们可以使用 dir()函数来查看某个对象的所有方法和属性。修改后的代码如下:

    import urllib.request
    
    resp = urllib.request.urlopen("http://www.baidu.com")
    print("resp.geturl:", resp.geturl())
    print("resp.msg:", resp.msg)
    print("resp.status:", resp.status)
    print("resp.version:", resp.version)
    print("resp.reason:", resp.reason)
    print("resp.debuglevel:", resp.debuglevel)
    print("resp.getheaders:", resp.getheaders()[0:2])
    print(resp.read().decode('utf-8'))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    执行结果如下

    在这里插入图片描述

    另外,有一点要注意,在 URL 中包含汉字是不符合 URL 标准的,需要进行编码,代 码示例如下

    urllib.request.quote('http://www.baidu.com') 
    # 编码后:http%3A//www.baidu.com
    urllib.request.unquote('http%3A//www.baidu.com') 
    # 解码后:http://www.baidu.com
    
    • 1
    • 2
    • 3
    • 4

    2.抓取二进制文件

    直接把二进制文件写入文件即可,代码示例如下

    import urllib.request
    
    pic_url = "https://www.baidu.com/img/bd_logo1.png"
    pic_resp = urllib.request.urlopen(pic_url)
    pic = pic_resp.read()
    with open("bd_logo.png", "wb") as f:
        f.write(pic)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    3.模拟GET和POST请求

    4.修改请求头

    5.设置连接超时

    6.延迟提交数据

    7.设置代理

    8.Cookie

    9.urllib.parse模块

    10.urllib.error异常处理模块

    11.urllib.robotparser模块

  • 相关阅读:
    GORM使用指南一
    【Linux篇】第九篇——Linux下的进程控制
    多年前使用一个裸机的fat32开源文件系统znFAT
    如何开始破解基于 Django 的应用程序
    [Mac软件]Infuse 7 PRO v7.6.3 一个强大的视频播放器(激活版)
    QQ邮箱批量发送
    Java网页版即时通讯聊天系统(附源码)
    模态贡献量在汽车NVH分析中的案例应用
    算符优先语法分析
    NX二次开发-UFUN查询对象的类型和子类型UF_OBJ_ask_type_and_subtype
  • 原文地址:https://blog.csdn.net/u014096024/article/details/128167892