精华内容
下载资源
问答
  • 本文实例讲述了python中urllib模块用法。分享给大家供大家参考。具体分析如下: 一、问题: 近期公司项目的需求是根据客户提供的api,我们定时去获取数据, 之前的方案是用php收集任务存入到redis队列,然后在linux...
  • urllib模块提供的上层接口,...我以前翻译过libcurl教程,这是在C/C++环境下比较方便实用的网络操作库,相比起libcurl,Python的urllib模块使用门槛则低多了。可能有些人又会用效率来批评Python,其实在操作网络,...

    urllib模块提供的上层接口,使我们可以像读取本地文件一样读取www和ftp上的数据。每当使用这个模块的时候,老是会想起公司产品的客户端,同事用C++下载Web上的图片,那种“痛苦”的表情。我以前翻译过libcurl教程,这是在C/C++环境下比较方便实用的网络操作库,相比起libcurl,Python的urllib模块的使用门槛则低多了。可能有些人又会用效率来批评Python,其实在操作网络,或者在集群交互的时候, 语言的执行效率绝不是瓶颈。这种情况下,一个比较好的方法是,将python嵌入到C/C++中,让Python来完成一些不是核心的逻辑处理。又扯远了,废话少说,开始urllib之旅吧~~ (前几天我用这个模块写了个蜘蛛,感兴趣的同学可以在以前的博客中找到代码)

    先看一个例子,这个例子把Google首页的html抓取下来并显示在控制台上:

    ?

    1

    2

    3

    4

    5

    # 别惊讶,整个程序确实只用了两行代码

    import urllib

    print urllib.urlopen('http://www.google.com').read()

    urllib.urlopen(url[, data[, proxies]]) :

    创建一个表示远程url的类文件对象,然后像本地文件一样操作这个类文件对象来获取远程数据。参数url表示远程数据的路径,一般是网址;参数data表示以post方式提交到url的数据(玩过web的人应该知道提交数据的两种方式:post与get。如果你不清楚,也不必太在意,一般情况下很少用到这个参数);参数proxies用于设置代理(这里不详细讲怎么使用代理,感兴趣的看客可以去翻阅Python手册urllib模块)。urlopen返回 一个类文件对象,他提供了如下方法:

    read() , readline() , readlines() , fileno() , close() :这些方法的使用方式与文件对象完全一样;

    info():返回一个httplib.HTTPMessage 对象,表示远程服务器返回的头信息;

    getcode():返回Http状态码。如果是http请求,200表示请求成功完成;404表示网址未找到;

    geturl():返回请求的url;

    下面来扩充一下上面的例子,看官可以运行一下这个例子,加深对urllib的印象:

    ?

    1

    2

    3

    4

    5

    6

    7

    8

    9

    google= urllib.urlopen('http://www.google.com')

    print 'http header:/n', google.info()

    print 'http status:', google.getcode()

    print 'url:', google.geturl()

    for linein google:# 就像在操作本地文件

    print line,

    google.close()

    urllib.urlretrieve(url[, filename[, reporthook[, data]]]):

    urlretrieve方法直接将远程数据下载到本地。参数filename指定了保存到本地的路径(如果未指定该参数,urllib会生成一个临时文件来保存数据);参数reporthook是一个回调函数,当连接上服务器、以及相应的数据块传输完毕的时候会触发该回调。我们可以利用这个回调函 数来显示当前的下载进度,下面的例子会展示。参数data指post到服务器的数据。该方法返回一个包含两个元素的元组(filename, headers),filename表示保存到本地的路径,header表示服务器的响应头。下面通过例子来演示一下这个方法的使用,这个例子将新浪首页的html抓取到本地,保存在D:/sina.html文件中,同时显示下载的进度。

    ?

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    def cbk(a, b, c):

    '''回调函数

    @a: 已经下载的数据块

    @b: 数据块的大小

    @c: 远程文件的大小

    '''

    per= 100.0 * a* b/ c

    if per >100:

    per= 100

    print '%.2f%%' % per

    url= 'http://www.sina.com.cn'

    local= 'd://sina.html'

    urllib.urlretrieve(url, local, cbk)

    上面介绍的两个方法是urllib中最常用的方法,这些方法在获取远程数据的时候,内部会使用URLopener或者 FancyURLOpener类。作为urllib的使用者,我们很少会用到这两个类,这里我不想多讲。如果对urllib的实现感兴趣, 或者希望urllib支持更多的协议,可以研究这两个类。在Python手册中,urllib的作者还列出了这个模块的缺陷和不足,感兴趣的同学可以打开 Python手册了解一下。

    urllib中还提供了一些辅助方法,用于对url进行编码、解码。url中是不能出现一些特殊的符号的,有些符号有特殊的用途。我们知道以get方式提交数据的时候,会在url中添加key=value这样的字符串,所以在value中是不允许有'=',因此要对其进行编码;与此同时服务器接收到这些参数的时候,要进行解码,还原成原始的数据。这个时候,这些辅助方法会很有用:

    urllib.quote(string[, safe]):对字符串进行编码。参数safe指定了不需要编码的字符;

    urllib.unquote(string) :对字符串进行解码;

    urllib.quote_plus(string [ , safe ] ) :与urllib.quote类似,但这个方法用'+'来替换' ",而quote用'%20′来代替' "

    urllib.unquote_plus(string ) :对字符串进行解码;

    urllib.urlencode(query[, doseq]):将dict或者包含两个元素的元组列表转换成url参数。例如 字典{"name': "dark-bull', "age': 200}将被转换为”name=dark-bull&age=200″

    urllib.pathname2url(path):将本地路径转换成url路径;

    urllib.url2pathname(path):将url路径转换成本地路径;

    用一个例子来体验一下这些方法吧~~:

    ?

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    data= 'name = ~a+3'

    data1= urllib.quote(data)

    print data1# result: name%20%3D%20%7Ea%2B3

    print urllib.unquote(data1)# result: name = ~a+3

    data2= urllib.quote_plus(data)

    print data2# result: name+%3D+%7Ea%2B3

    print urllib.unquote_plus(data2)# result: name = ~a+3

    data3= urllib.urlencode({'name':'dark-bull','age':200 })

    print data3# result: age=200&name=dark-bull

    data4= urllib.pathname2url(r'd:/a/b/c/23.php')

    print data4# result: ///D|/a/b/c/23.php

    print urllib.url2pathname(data4)# result: D:/a/b/c/23.php

    urllib模块的基本使用,就这么简单。oh~~yeah~~又一个模块写完了,想想,我已经写了将近30个模块了,有时间我要好好整理一下@@@@

    展开全文
  • 主要介绍了python爬虫开发之urllib模块详细使用方法与实例全解,需要的朋友可以参考下
  • 我以前翻译过libcurl教程,这是在C/C++环境下比较方便实用的网络操作库,相比起libcurl,Python的urllib模块使用门槛则低多了。可能有些人又会用效率来批评Python,其实在操作网络,或者在集群交互的时候, 语言的...
  • python模块urllib3.zip

    2020-03-22 11:45:04
    使用Python 3.x版本运行py文件时报错 No module named 'urllib3' 一开始参照网上的安装方法通过pip来安装,未成功pip ...使用方法是下载解压后,cmd里切换到解压后的文件夹,输入python setup.py install就可以了
  • 于是用了一个python脚本来执行,前面抓了几个都没有什么问题,后来碰到一个论坛,在执行urlopen的地方总是提示超时,百度了一下,因为我使用的是urllib不是urllib2,所以无法直接在urlopen里面加timeout参数,只能是...
  • urllib 模块用法

    2018-05-13 13:39:00
    urllib用法 介绍 urllib 是 python3.X中提供的一系列操作URL的库,它可以轻松的模拟用户使用浏览器访问网页 使用步骤 导入 urllib 库的 request 模块 from urllib import request 请求 url res = request...

    urllib的用法

    介绍

    • urllib 是 python3.X中提供的一系列操作URL的库,它可以轻松的模拟用户使用浏览器访问网页

    使用步骤

    1. 导入 urllib 库的 request 模块

          from urllib import request
      
    2. 请求 url

          res = request.urlopen('www.baidu.com')
      

      res的返回值是一个http对象

    3. 使用相应对象输出数据

          print(res.read().decode('utf-8'))
      

      此处的decode编码格式视html代码的<meta charset=''>而定

    4. 模拟一个真实的浏览器请求

      1. 携带 User-Agent 请求头信息
        • 方法1:
              req = request.Request(url)
              req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36')
              res = request.urlopen(req)
              print(res.read().decode('utf8'))
          
        • 方法2:
              header = {
                  'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36'
              }
              req = request.Requset(url=url, headers=header)
              res = request.urlopen(req)
              print(res.read().decode('utf8'))
          
      2. 发送POST请求
        1. 导入 urllib 库下面的parse
              from urllib import parse
          
        2. 使用 urlencode 生成 post 数据
              post_data = {
                  'key1': value1,
                  'key2': value2,
                  'key3': value3
              }
              post_data = parse.urlencode(post_data)
          
        3. 使用生成的数据发送 post 请求,注意数据要转码为 'utf8' 格式
              res = request.urlopen(url, data=post_data.encode('utf-8'))
          
        4. 使用 read() 查看响应信息
              print(res.read().decode('utf8'))
          
    展开全文
  • URL网址链接中的中文编码说明 中文的gbk(GB2312)编码: 一个汉字对应两组%xx,即%xx%xx 中文的UTF-8编码: 一个汉字对应三组%xx,即%xx%xx%xx ...from urllib.request import quote, unquote # 编码 url1 =
  • 本文实例讲述了Python使用urllib2模块实现断点续传下载的方法。分享给大家供大家参考。具体分析如下: 在使用HTTP协议进行下载的时候只需要在头上设置一下Range的范围就可以进行断点续传下载,当然,首先服务器需要...
  • urllib模块

    2019-12-16 12:41:07
    1. urllib模块 1.1 urllib简介 urllib 是 Python3 中自带的 HTTP 请求库,无需复杂的安装过程即可正常使用,十分适合爬虫入门 urllib 中包含四个模块,分别是: request:请求处理模块 parse:URL 处理模块 ...

    1. urllib模块

    1.1 urllib简介

    urllib 是 Python3 中自带的 HTTP 请求库,无需复杂的安装过程即可正常使用,十分适合爬虫入门

    urllib 中包含四个模块,分别是:

    request:请求处理模块

    parse:URL 处理模块

    error:异常处理模块

    robotparser:robots.txt 解析模块

    1.2 urllib使用

    1.2.1 request 模块

    request模块是urllib中最重要的一个模块,一般用于发送请求和接收响应

    (1)urlopen 方法

     
    1. urllib.request.urlopen()

    urlopen 方法无疑是 request 模块中最常用的方法之一,常见的参数说明如下:

    url:必填,字符串,指定目标网站的 URL

    data:指定表单数据

      该参数默认为 None,此时urllib使用GET方法发送请求

      当给参数赋值后,urllib使用POST方法发送请求,并在该参数中携带表单信息(bytes 类型)

    timeout:可选参数,用来指定等待时间,若超过指定时间还没获得响应,则抛出一个异常

      该方法始终返回一个HTTPResponse对象,HTTPResponse对象常见的属性和方法如下:

    geturl():返回 URL

    getcode():返回状态码

    getheaders():返回全部响应头信息

    getheader(header):返回指定响应头信息

    read():返回响应体(bytes 类型),通常需要使用decode('utf-8')将其转化为str类型

     
    1. import urllib.request
    2.  
    3. def load_data():
    4. url = "http://www.baidu.com/"
    5. #get的请求
    6. #http请求
    7. #response:http相应的对象
    8. response = urllib.request.urlopen(url)
    9. # print(response)
    10. #读取内容 bytes类型
    11. data = response.read()
    12. # print(data)
    13. #将文件获取的内容转换成字符串
    14. str_data = data.decode("utf-8")
    15. # print(str_data)
    16. #将数据写入文件
    17. with open("baidu.html","w",encoding="utf-8")as f:
    18. f.write(str_data)
    19. #将字符串类型转换成bytes
    20. str_name = "baidu"
    21. bytes_name =str_name.encode("utf-8")
    22. # print(bytes_name)
    23.  
    24. #python爬取的类型:str bytes
    25. #如果爬取回来的是bytes类型:但是你写入的时候需要字符串 decode("utf-8")
    26. #如果爬取过来的是str类型:但你要写入的是bytes类型 encode(""utf-8")
    27. load_data()

    大家可以将我注释的输出内容去掉注释,看看到底输出了什么内容。

    (2) Request对象

    我们还可以给urllib.request.urlopen()方法传入一个 Request 对象作为参数

    为什么还需要使用Request对象呢?因为在上面的参数中我们无法指定请求头部,而它对于爬虫而言又十分重要很多网站可能会首先检查请求头部中的USER-AGENT字段来判断该请求是否由网络爬虫程序发起但是通过修改请求头部中的USER_AGENT字段,我们可以将爬虫程序伪装成浏览器,轻松绕过这一层检查这里提供一个查找常用的USER-AGENT的网站:https://techblog.willshouse.com/2012/01/03/most-common-user-agents/

     
    1. urllib.request.Request()

    参数说明如下:

    url:指定目标网站的 URL

    data:发送POST请求时提交的表单数据,默认为None

    headers:发送请求时附加的请求头部,默认为 {}

    origin_req_host:请求方的host名称或者 IP 地址,默认为None

    unverifiable:请求方的请求无法验证,默认为False

    method:指定请求方法,默认为None

     
    1. import urllib.request
    2.  
    3. def load_data():
    4. url = "http://www.baidu.com/"
    5. headers = {
    6. 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
    7. }
    8. req = urllib.request.Request(url, headers=headers, method='GET')
    9. response = urllib.request.urlopen(req)
    10.  
    11. html = response.read().decode("utf-8")
    12. print(html)
    13.  
    14. load_data()

    这个结果大家要使用抓包工具来查看。

    (3)使用Cookie

    什么是 Cookie?

    Cookie是指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据。

    获取Cookie:

     
    1. import urllib.request
    2. import http.cookiejar
    3. cookie = http.cookiejar.CookieJar()
    4. cookie_handler = urllib.request.HTTPCookieProcessor(cookie)
    5. opener = urllib.request.build_opener(cookie_handler)
    6. response = opener.open('http://www.baidu.com/')
    7. for item in cookie:
    8. print(item.name + '=' + item.value)

    使用Cookie:

     
    1. import urllib.request
    2. import http.cookiejar
    3.  
    4. # 将 Cookie 保存到文件
    5. cookie = http.cookiejar.MozillaCookieJar('cookie.txt')
    6. cookie_handler = urllib.request.HTTPCookieProcessor(cookie)
    7. opener = urllib.request.build_opener(cookie_handler)
    8. response = opener.open('http://www.baidu.com/')
    9. cookie.save(ignore_discard=True,ignore_expires=True)
    10.  
    11. # 从文件读取 Cookie 并添加到请求中
    12. cookie2 = http.cookiejar.MozillaCookieJar()
    13. cookie2 = cookie2.load('cookie.txt',ignore_discard=True,ignore_expires=True)
    14. cookie_handler = urllib.request.HTTPCookieProcessor(cookie2)
    15. opener = urllib.request.build_opener(cookie_handler)
    16. response = opener.open('http://www.baidu.com/')
    17. # 此时已经得到带有 Cookie 请求返回的响应

    1.2.2 parse模块

    parse 模块一般可以用于处理 URL

    (1)quote 方法

    当你在URL中使用中文时,你会发现程序会出现莫名其妙的错误。

     
    1. import urllib.request
    2. url = 'https://www.baidu.com/s?wd=爬虫'
    3. response = urllib.request.urlopen(url)

    这个时候就靠quote方法了,它使用转义字符替换特殊字符,从而将上面的URL处理成合法的URL。

     
    1. import urllib.request
    2. import urllib.parse
    3.  
    4. url = 'https://www.baidu.com/s?wd=' + urllib.parse.quote('爬虫')
    5. response = urllib.request.urlopen(url)
    6. data = response.read()
    7. str_data = data.decode("utf-8")
    8. print(str_data)

     

     

    (2)urlencode 方法

    urlencode方法就是将dict类型数据转化为符合URL标准的str类型数据。

     
    1. import urllib.parse
    2. params = {
    3. 'from':'AUTO',
    4. 'to':'AUTO'
    5. }
    6. data = urllib.parse.urlencode(params)
    7. print(data)

    (3)urlparse 方法

    urlparse方法用于解析URL,返回一个ParseResult对象.

    该对象可以认为是一个六元组,对应 URL 的一般结构:

     
    1. scheme/netloc/path/parameters/query/fragment

    实例:

     
    1. import urllib.parse
    2. url = 'http://www.example.com:80/python.html?page=1&kw=urllib'
    3. url_after = urllib.parse.urlparse(url)
    4. print(url_after)

    想要获得一个参数的值,只需要 url_after.参数 即可。 

    1.2.3 error模块

    error模块一般用于进行异常处理,其中包含两个重要的类:URLError和HTTPError。

    注意,HTTPError是URLError的子类,所以捕获异常时一般要先处理HTTPError,常用的格式如下:

     
    1. import urllib.request
    2. import urllib.error
    3. import socket
    4. try:
    5. response = urllib.request.urlopen('http://www.baidu.com/', timeout=0.1)
    6. except urllib.error.HTTPError as e:
    7. print("Error Code: ", e.code)
    8. print("Error Reason: ", e.reason)
    9. except urllib.error.URLError as e:
    10. if isinstance(e.reason, socket.timeout):
    11. print('Time out')
    12. else:
    13. print('Request Successfully')
    展开全文
  • 复制代码 代码如下: def report_hook(count, block_size, total_size):… print ‘d%%’%(100.0... 您可能感兴趣的文章:python3使用requests模块爬取页面内容的实战演练Python3使用requests登录人人影视网站的方法pyt
  • Python的urllib模块提供了一个高级的Web通信库,支持基本的协议,如HTTP、FTP和Gopher,同时也支持对本地文件的访问。在Python3中,urllib、urlparse、urllib2等都整合进一个名为urllib的单一包中。urllib、urllib2...

    Python的urllib模块提供了一个高级的Web通信库,支持基本的协议,如HTTP、FTP和Gopher,同时也支持对本地文件的访问。在Python3中,urllib、urlparse、urllib2等都整合进一个名为urllib的单一包中。urllib、urllib2的内容整合进了urllib.request模块中,urlparse整合进了urllib.parse模块中。Python3中的urllib包还包括response、error、robotparse这些子模块。下面就来看看Python3中核心模块urllib的用法大全吧。

    urllib.parse

    一般来说,一个URL的地址是可以分为六部分的。urllib.parse模块就是对Web网址进行解析,分解或合并成URL。主要的方法有urlparse、urlunparse、urljoin。示例代码如下:#!/usr/local/env python

    # coding:utf-8

    import urllib.parse

    __author__ = "风轻清淡"

    url = "https://www.noniu.com/module;path?id=12#22"

    ret = urllib.parse.urlparse(url)

    # 结果为:ParseResult(scheme='http', netloc='www.noniu.com', path='/module', params='path', query='id=12', fragment='22')

    # 可以通过索引访问所有的结果,分别代表:网络协议、服务器地址、CGI应用路径、可选参数、查询的键值对、文档内定锚

    print(ret)

    url_str = ("http", "www.noniu.com", "/jiaocheng/228.html", "", "", "")

    url_ret = urllib.parse.urlunparse(url_str)

    # 结果为:https://www.noniu.com/jiaocheng/228.html

    # urlunpars与urlparse相当于相反的操作

    print(url_ret)

    url_join = urllib.parse.urljoin("https://www.noniu.com/about/", "/jiaocheng/228.html")

    # 结果为:https://www.noniu.com/jiaocheng/228.html

    # urljoin方法将URL的根域名与新的路径拼合为一个完整的URL

    print(url_join)

    urllib.request

    urllib.request模块中有urlopen、urlretrieve、quote等方法,具体的参数和功能见下表:urllib.request中的方法描述

    urlopen(urlstr, postQueryData=https://www.noniu.com/jiaocheng/None)打开URL urlstr,如果是POST请求,则通过postQueryData发送请求的数据

    urlretrieve(urlstr, localfile=None, downloadStatusHook=None)将URL urlstr中的文件下载到localfile或临时文件夹中(localfile没指定);如果函数正在执行,downloadStatusHook将获得下载的统计信息。

    quote(urldata, safe="/")对urldata在URL中无法使用的字符进行编码,safe中的字符不做处理。

    quote_plus(urldata, safe="/")除了将空格编码为+号(而非%20)之外,其他功能和quote没有区别

    unquote(urldata)将urldata中编码过的字符解码

    unquote_plus(urldata)除了将+号解码为空格之外,其他功能和unquote没有区别

    urlencode(dict)将dict的键值对通过quote_plus编码为有效的CGI查询字符串

    以下是urllib.request模块中具体方法的示例代码:#!/usr/local/env python

    # coding:utf-8

    import urllib.request

    __author__ = "风轻清淡"

    url = "https://www.noniu.com/index.php"

    ret = urllib.request.urlopen(url)

    # 结果为:b' '

    # 连接成功后,urlopen返回一个文件类型对象,可以使用read、readline等文件操作方法进行读取,数据为字节类型。

    print(ret.readline())

    # 结果为:https://www.noniu.com/index.php

    # geturl方法是考虑所有重定向后,获取真实的URL

    print(ret.geturl())

    展开全文
  • urllib基础模块的应用,通过该类获取到url中的html文档信息,内部可以重写代理的获取方法 复制代码 代码如下:class ProxyScrapy(object): def __init__(self): self.proxy_robot = ProxyRobot() self.current_...
  • 这里总结了一些 urllib2 的使用细节。 Proxy 的设置 Timeout 设置 在 HTTP Request 中加入特定的 Header Redirect Cookie 使用 HTTP 的 PUT 和 DELETE 方法 得到 HTTP 的返回码 Debug Log Proxy 的设置 ...
  • urllib模块提供的上层接口,使我们可以像读取本地文件一样读取www和ftp上的数据, 在python3中urllib模块导入不能直接import urllib 而要import urllib .request。 ##1、基本方法
  • urllib模块使用

    2017-09-22 11:04:05
    1.基本方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None) - url: 需要打开的网址 - data:Post提交的数据 - timeout:设置网站
  • 方法使用urlencode函数 urllib.request.urlopen() import urllib.request import urllib.parse url = 'https://www.sogou.com/web?' #将get请求中url携带的参数封装至字典中 param = { 'query':'周杰伦' } #对...
  • urllib库常用有四个模块,常用前三个 urllib.request urllib.error urllib.parse urllib.robotparser 一.urllib.request 1.urlopen() urllib.request.urlopen(url,data=None,[timeout,]*,cafile=None,capath=None,...
  • 1.urlliburllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)- url: 需要打开的网址- data:Post提交的数据- timeout:设置网站的访问超时时间直接用...
  • urllib模块基本用法

    2019-03-05 16:31:00
    urllib - python中自带的一个基于爬虫的模块。 - 作用:可以使用代码模拟浏览器发起请求。 (含2个子模块 request parse) - 使用流程: - 指定url - 发起请求 - 获取页面数据 - 持久化存储 # 需求:...
  • python 2.7 的urllib模块中文

    千次阅读 2016-02-22 23:10:22
    20.5. urllib — Open arbitrary resources by URL This module provides a high-level interface for fetching data across the World Wide Web. In particular, the urlopen() func
  • 一、最基础的应用 ...urllib2提供了request的类,可以让用户在发送请求前先构造一个request的对象,然后通过urllib2.urlopen方法来发送请求 import urllib2 url = r'http://www.baidu.com' req = urlli
  • python urllib 模块使用小结 urllib 提供了一个高级的 Web 交流库,支持 Web 协议,HTTP, FTP 和 Gopher 协议,同时也支持对本地文件的访问。urllib 模块的特殊功能是利用上述协议下载数据。使用这个模块可以避免...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,905
精华内容 8,362
关键字:

urllib模块用法