zoukankan      html  css  js  c++  java
  • 九. 网络编程(通过requests模块深入了解socket案例)

    一. requests 模块初级使用爬取 案例(线程)

    1. uuid的模块使用

    UUID是由一组32位数的16进制数字所构成,是故UUID理论上的总数为1632=2128,约等于3.4 x 1038。也就是说若每纳秒产生1兆个UUID,要花100亿年才会将所有UUID用完。
    
    UUID的标准型式包含32个16进制数字,以连字号分为五段,形式为8-4-4-4-12的32个字符。示例:
    
        550e8400-e29b-41d4-a716-446655440000
    
    UUID亦可刻意重复以表示同类。例如说微软的COM中,所有组件皆必须实现出IUnknown接口,方法是产生一个代表IUnknown的UUID
    。无论是程序试图访问组件中的IUnknown接口,或是实现IUnknown接口的组件,只要IUnknown一被使用,皆会被参考至同一个ID:
    00000000-0000-0000-C000-000000000046。
    import uuid
    
    aa=str(uuid.uuid4())
    print(aa)
    print(type(aa))
    # b4e074c4-32a6-42a2-a5d1-7e074b075fc4
    # <class 'str'>

    2. Requests模块说明

    Requests 是使用 Apache2 Licensed 许可证的 HTTP 库。用 Python 编写,真正的为人类着想。
    
    Python 标准库中的 urllib2 模块提供了你所需要的大多数 HTTP 功能,但是它的 API 太渣了。它是为另一个时代、
    另一个互联网所创建的。它需要巨量的工作,甚至包括各种方法覆盖,来完成最简单的任务。 在Python的世界里,事情不应该这么麻烦。 Requests 使用的是 urllib3,因此继承了它的所有特性。Requests 支持 HTTP 连接保持和连接池,支持使用 cookie
    保持会话,支持文件上传,支持自动确定响应内容的编码,支持国际化的 URL 和 POST 数据自动编码。现代、国际化、人性化。 (以上转自Requests官方文档)
    # # 爬取图片 (就是下载图片到本地)
    import uuid
    import requests  # requests是使用Apache2 licensed 许可证的HTTP库。  这个模块里面封装了socket 里面所有方法
    方法一 效率极其低
    ret_li
    = ["https://www2.autoimg.cn/youchuang/g26/M07/AD/13/autohomecar__ChcCP10QOdWAUAlRAApDJLmcF98280.jpg", "https://qnwww2.autoimg.cn/youchuang/g26/M05/A9/7F/autohomecar__ChsEe10QOeaAK0GhAAUwvnKQrtI797.jpg", "https://www2.autoimg.cn/youchuang/g2/M0A/AA/74/autohomecar__ChsEkF0QOhmAcixZAAg7i966t0Q279.jpg", ] for ret in ret_li: res = requests.get(ret) """ requests.get(ret) 里面干了那些事情 1. DNS 解析域名 根据域名解析ip 2.创建socket 客服端 类似 sk=socket.socket() 3. 向服务端发起连接请求 类似 sk.connent() 4.发送数据(发送图片) sk.send(......) 5. 接收数据 sk.recv(1024) """ filename = str(uuid.uuid4()) + ".jpg" with open(filename, "wb") as f1: f1.write(res.content) print("*******************************************************88")
    方法二 通过线程来实现 效率高
    import threading ret_li = ["https://www2.autoimg.cn/youchuang/g26/M07/AD/13/autohomecar__ChcCP10QOdWAUAlRAApDJLmcF98280.jpg", "https://qnwww2.autoimg.cn/youchuang/g26/M05/A9/7F/autohomecar__ChsEe10QOeaAK0GhAAUwvnKQrtI797.jpg", "https://www2.autoimg.cn/youchuang/g2/M0A/AA/74/autohomecar__ChsEkF0QOhmAcixZAAg7i966t0Q279.jpg", ] def fun(url): res=requests.get(url) """ requests.get(ret) 里面干了那些事情 1. DNS 解析域名 根据域名解析ip 2.创建socket 客服端 类似 sk=socket.socket() 3. 向服务端发起连接请求 类似 sk.connent() 4.发送数据(发送图片) sk.send(......) 5. 接收数据 sk.recv(1024) """ filename = str(uuid.uuid4()) + ".jpg" with open(filename, "wb") as f1: f1.write(res.content) for url in ret_li: aa =threading.Thread(target=fun,args=(url,)) aa.start()
  • 相关阅读:
    [组合][DP]luogu P3643 [APIO2016]划艇
    [倍增]luogu P4155 [SCOI2015]国旗计划
    [并查集][线段树]luogu P3273 [SCOI2011]棘手的操作
    pytest警告DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3,and in 3.9 it will stop working
    docker-compose5分钟搭建wordpress博客网站
    Docker安装入门
    Windows10安装wget命令
    CRC (Cyclic Redundancy Check)
    Linux学习笔记
    Linux学习笔记
  • 原文地址:https://www.cnblogs.com/Sup-to/p/11158429.html
Copyright © 2011-2022 走看看