精华内容
下载资源
问答
  • 案例:爬取使用搜狗根据指定词条搜索到的页面数据...response = urllib.request.urlopen(url=url) # 3.获取响应对象中的页面数据:read函数可以获取响应对象中存储的页面数据(byte类型的数据值) page_text = respons
  • 对于中文的参数如果不进行编码的话,python的urllib2直接处理会报错,我们可以先将中文转换成utf- 8编码,然后使用urllib2.quote方法对参数进行url编码后传递。 content = u'你好 sharejs.com' content = content....
  • 对于中文的参数如果不进行编码的话,python的urllib2直接处理会报错,我们可以先将中文转换成utf-8编码,然后使用urllib2.quote方法对参数进行url编码后传递。 content = u'你好 jb51.net' content = content....
  • urlliburl处理

    2017-06-08 21:47:12
    quote(),unquote(),urlencode()编码解码 quote(),unquote(),quote_plus(),...urllib中还提供了一些辅助方法,用于对url进行编码、解码。url中是不能出现一些特殊的符号的,有些符号有特殊的用途。我们知道以get方式

    quote(),unquote(),urlencode()编码解码

    quote(),unquote(),quote_plus(),unquote_plus(),urlencode() ,pathname2url(),url2pathname()

    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路径转换成本地路径;

    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  



    展开全文
  • 案例:爬取使用搜狗根据指定词条搜索到的页面数据(例如爬取词条为‘周杰伦’的页面数据) import urllib.request ...response = urllib.request.urlopen(url=url) # 3.获取响应对象中的页面数据:read函数可以获取响

    案例:爬取使用搜狗根据指定词条搜索到的页面数据(例如爬取词条为‘周杰伦’的页面数据)

    import urllib.request
    # 1.指定url
    url = 'https://www.sogou.com/web?query=周杰伦'
    '''
    2.发起请求:使用urlopen函数对指定的url发起请求,
    该函数返回一个响应对象,urlopen代表打开url
    '''
    response = urllib.request.urlopen(url=url)
    # 3.获取响应对象中的页面数据:read函数可以获取响应对象中存储的页面数据(byte类型的数据值)
    page_text = response.read()
    # 4.持久化存储:将爬取的页面数据写入文件进行保存
    with open("sougou.html","wb") as f:
    f.write(page_text)
    print("写入数据成功")
    f.close()
    

    编码错误

    【注意】上述代码中url存在非ascii编码的数据,则该url无效。如果对其发起请求,则会报如下错误:

    UnicodeEncodeError: 'ascii' codec can't encode characters in position 15-17: ordinal not in range(128)
    

    url的特性:url不可以存在非ASCII编码字符数据,url必须为ASCII编码的数据值。所以我们在爬虫代码中编写url时,如果url中存在非ASCII编码的数据值,则必须对其进行ASCII编码后,该url方可被使用。

    上面的“周杰伦” 不是ASCII编码字符数据,所以url就会变成无效的url,不符合url特性,所以报错误

    所以必须对url中的非ascii的数据进行ascii的编码,则该url方可被发起请求:

    需要用到 urllib.parse

    方法 1:使用quote函数

    quote函数作用:对url中所存在的特殊字符进行ASCII的编码,把url中的非ascii编码的字符单独取出来,使用quote函数进行转码,

    转码之后,把转码的结果拼接到原有的url当中。

    '''
    遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
    '''
    import urllib.request
    import urllib.parse
    # 1.指定url
    url = 'https://www.sogou.com/web?query=周杰伦'
    word = urllib.parse.quote("周杰伦")
    # 查看转码后结果
    print(word)
    # %E5%91%A8%E6%9D%B0%E4%BC%A6
    
    from urllib.request import urlopen
    import urllib.parse
    # 1.指定url
    url = 'https://www.sogou.com/web?query='
    # url的特性:url不可以存在非ASCII编码字符数据
    word = urllib.parse.quote("周杰伦")
    # 将编码后的数据值拼接回url中
    url = url+word # 有效url
    '''
    2.发起请求:使用urlopen函数对指定的url发起请求,
    该函数返回一个响应对象,urlopen代表打开url
    '''
    response = urlopen(url=url)
    # 3.获取响应对象中的页面数据:read函数可以获取响应对象中存储的页面数据(byte类型的数据值)
    page_text = response.read()
    # 4.持久化存储:将爬取的页面数据写入文件进行保存
    with open("周杰伦.html","wb") as f:
    f.write(page_text)
    print("写入数据成功")
    

    以上就是本文的全部内容,希望对大家的学习有所帮助

    展开全文
  • 2017/3/12 21.5 urllib URL处理模块 Python 3.6.1rc1文档 21.5urllib URL处理模块 源代码 Lib / urllib / urllib 是一个包 收集用于处理URL的几个模块 urllib.request 用于打开和读取URL urllib.error 包含由引发的...
  • 案例:爬取使用搜狗根据指定词条搜索到的页面数据(例如爬取词条为"周杰伦'的页面数据)...发起请求:使用urlopen函数对指定的url发起请求,该函数返回一个响应对象,urlopen代表打开url'''response = urllib....

    案例:爬取使用搜狗根据指定词条搜索到的页面数据(例如爬取词条为"周杰伦'的页面数据)

    import urllib.request

    # 1.指定url

    url = 'https://www.sogou.com/web?query=周杰伦'

    '''

    2.发起请求:使用urlopen函数对指定的url发起请求,

    该函数返回一个响应对象,urlopen代表打开url

    '''

    response = urllib.request.urlopen(url=url)

    # 3.获取响应对象中的页面数据:read函数可以获取响应对象中存储的页面数据(byte类型的数据值)

    page_text = response.read()

    # 4.持久化存储:将爬取的页面数据写入文件进行保存

    with open("sougou.html","wb") as f:

    f.write(page_text)

    print("写入数据成功")

    f.close()

    编码错误

    【注意】上述代码中url存在非ascii编码的数据,则该url无效。如果对其发起请求,则会报如下错误:

    UnicodeEncodeError: 'ascii' codec can't encode characters in position 15-17: ordinal not in range(128)

    url的特性:url不可以存在非ASCII编码字符数据,url必须为ASCII编码的数据值。所以我们在爬虫代码中编写url时,如果url中存在非ASCII编码的数据值,则必须对其进行ASCII编码后,该url方可被使用。

    上面的“周杰伦” 不是ASCII编码字符数据,所以url就会变成无效的url,不符合url特性,所以报错误

    所以必须对url中的非ascii的数据进行ascii的编码,则该url方可被发起请求:

    需要用到 urllib.parse

    方法 1:使用quote函数

    quote函数作用:对url中所存在的特殊字符进行ASCII的编码,把url中的非ascii编码的字符单独取出来,使用quote函数进行转码,

    转码之后,把转码的结果拼接到原有的url当中。

    import urllib.request

    import urllib.parse

    # 1.指定url

    url = 'https://www.sogou.com/web?query=周杰伦'

    word = urllib.parse.quote("周杰伦")

    # 查看转码后结果

    print(word)

    # %E5%91%A8%E6%9D%B0%E4%BC%A6

    from urllib.request import urlopen

    import urllib.parse

    # 1.指定url

    url = 'https://www.sogou.com/web?query='

    # url的特性:url不可以存在非ASCII编码字符数据

    word = urllib.parse.quote("周杰伦")

    # 将编码后的数据值拼接回url中

    url = url+word # 有效url

    '''

    2.发起请求:使用urlopen函数对指定的url发起请求,

    该函数返回一个响应对象,urlopen代表打开url

    '''

    response = urlopen(url=url)

    # 3.获取响应对象中的页面数据:read函数可以获取响应对象中存储的页面数据(byte类型的数据值)

    page_text = response.read()

    # 4.持久化存储:将爬取的页面数据写入文件进行保存

    with open("周杰伦.html","wb") as f:

    f.write(page_text)

    print("写入数据成功")

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    展开全文
  • python3 使用urllib.parse对url进行处理

    千次阅读 2018-12-21 13:59:38
    对于处理某些通过 url 传参的请求,可以使用 urllib.parse 来处理,当然,也可以自己写方法。 下面放上一个demo: import urllib.parse   scheme = "http" host = "www.urllib_parse.com" ...

    对于处理某些通过 url 传参的请求,可以使用 urllib.parse 来处理,当然,也可以自己写方法。

    下面放上一个demo:

    import urllib.parse
     
    scheme = "http"
    host = "www.urllib_parse.com"
    path = r"test/test_1/test_2"
    data = {
        "key" : "value",
        "键" : "值"
    }
    frag = "frag"
     
    data_parse = urllib.parse.urlencode(data)                   # 将字典格式的参数转换成 url 传参,并对中文字符进行编码
    print(data_parse)
     
    data_parse_unquote = urllib.parse.unquote(data_parse)       # 将已经过 url 编码的文本进行 url 解码
    print(data_parse_unquote)
     
    data_parse_quote = urllib.parse.quote(data_parse_unquote)   # 重新编码,会对'&'、'='一起编码
    print(data_parse_quote)
     
    url_1 = urllib.parse.urlunparse((scheme, host, path, "", data_parse, frag))     # 拼接成 url 的第一种方式
    print(url_1)
     
    url_2 = urllib.parse.urlunsplit((scheme, host, path, data_parse, frag))         # 拼接成 url 的第二种方式
    print(url_2)
     
    url_11 = urllib.parse.urlparse(url_1)           # 两种方式对比
    url_22 = urllib.parse.urlsplit(url_2)
    print(url_11)
    print(url_22)

     运行结果:

    key=value&%E9%94%AE=%E5%80%BC
    key=value&键=值
    key%3Dvalue%26%E9%94%AE%3D%E5%80%BC
    http://www.urllib_parse.com/test/test_1/test_2?key=value&%E9%94%AE=%E5%80%BC#frag
    http://www.urllib_parse.com/test/test_1/test_2?key=value&%E9%94%AE=%E5%80%BC#frag
    ParseResult(scheme='http', netloc='www.urllib_parse.com', path='/test/test_1/test_2', params='', query='key=value&%E9%94%AE=%E5%80%BC', fragment='frag')
    SplitResult(scheme='http', netloc='www.urllib_parse.com', path='/test/test_1/test_2', query='key=value&%E9%94%AE=%E5%80%BC', fragment='frag')

     parse_qs, 将get请求参数转化成字典

    import urllib.parse
    
    data = 'name=czh'
    print(urllib.parse.parse_qs(data))
    
    

    # # 结果:{'name': ['czh']}

    展开全文
  • 蟒蛇中urllib.request.Request()与urllib.request.urlopen()的区别: 相对于urllib.request.urlopen()来说urllib.request.... # 主要看这块,构造函数中指明了Request进一步包装请求中可以传递的参数有(ur...
  • python urllib.parse解析url

    2018-10-17 22:20:26
    1.urllib.parse.urlparse(urlstring, scheme=’’, allow_fragments=True) 功能: 将url分为6部分, 返回一个元组; 协议, 服务器的地址(ip:port), 文件路径, 访问的页面 from urllib import parse url = '...
  • #!/usr/bin/env python ...import requests,urllib,urllib2,urllib3,urlparse url = "http://xxx.com/index.php?Q=u=%OS%26%20" print "original:",url #print requests.get(url).content print
  • 我们可以利用urllib来抓取远程的数据进行保存哦,以下是python3 抓取网页资源的多种方法,有需要的可以参考借鉴。 1、最简单 import urllib.request response = urllib.request.urlopen('http://python.org/') ...
  • 如果想要对url的各个部分进行分割提取出来,就需要urlparse和urlsplit函数来处理 前面讲到url的组成部分,附一下链接https://blog.csdn.net/qq_27524749/article/details/105074167 urlparse和urlsplit: 有...
  • 简介 Urllib是Python内置的HTTP请求库。... urllib.parse url : 解析模块 urllib.robotparser :robots.txt解析模块,用的比较少 相比Python2变化: Python2: import urllib2 response=urlli...
  • Python3 url解析,urllib.parse

    千次阅读 2019-05-12 23:55:18
    Python3标准库中的urllib,用来处理各种协议下的url请求。其中parse模块用来解析url,主要包含如下方法: __all__ = ["urlparse", "urlunparse", "urljoin", "urldefrag", "urlsplit", "urlunsplit", "urlencode", ...
  • urllib 是一个收集了多个用到 URL 的模块的包: urllib.request 打开和读取 URL urllib.error 包含 urllib.request 抛出的异常 urllib.parse 用于解析 URL urllib.robotparser 用于解析 robots.txt 文件 源码...
  • 简介 Urllib是Python内置的HTTP请求库。它包含四个模块: urllib.request :请求...urllib.parse url : 解析模块 urllib.robotparser :robots.txt解析模块,用的比较少 相比Python2变化: Python2: import u...
  • Urllib 1. Urllib.request.urlopen().read().decode() 返回一个二进制的对象,对这个对象进行read()操作,可以得到一个包含网页的二进制字符串,然后用decode()...6. geturl() 获取当前爬取页面的网址 示例: from u
  • urllib库是python内置的处理HTTP请求的库,用它来请求url我们用的不多,但是它提供的urllib.parse工具倒是很好用。url.parse :定义了url的标准接口,实现url的各种抽取、解析,合并,编码,解码。 下面来看urlparse...
  • urllib的quote处理url中的字符转义 在url中,有些字符是需要转义的,如空格转义为%20", 引号转义为%22等。在urllib可以用quote来进行处理。 def getPage(): try: base = ...
  • urllib 是 python 的内置模块, 主要用于处理url相关的一些操作,例如访问url、解析url等操作。 urllib 包下面的 request 模块主要用于访问url,但是用得太多,因为它的光芒全都被 requests 这个第三方库覆盖了,最...
  • from urllib.parse import ...# 处理img_url中的中文字符,不对链接中的/:?=进行处理 n_url = quote(img_url, safe='/:?=') file_name = 'c:/img' # 把图片下载本地保存 urllib.request.urlretrieve(n_url, file_name)
  • 考文章:http://lijiang.javaeye.com/blog/312247 在用urllib2.urlopen(url)时,如果url里面包含中文,则必须对此url进行编码处理,否则会引起UnicodeError。 搜索后找到了相关的处理方法 引用参
  • 该模块定义了一个标准接口,用于在组件中解析统一资源定位符(URL)字符串(寻址方案,网络位置,路径等),将组件组合回URL字符串,并将“相对URL”转换为绝对URL给出“基本URL”。 该模块旨在匹配相对统一资源...
  • 刚刚接触爬虫,基础的东西得时时回顾才行...2. urllib.error 异常处理模块 3. urllib.parse url 解析模块 4. urllib.robotparser robots.txt 解析模块 Urllib 库下的几种模块基本使用如下: urllib.request 关于 urlli
  • 处理网络请求urllib

    2021-06-04 15:24:24
    处理网络请求urllib urllib中包括了四个模块,包括 urllib.request ,urllib.error,urllib.parse...urllib.parse:用来解析和处理URL urllib.robotparse:用来解析页面的robots.txt文件 使用urllib.request发送请求 U

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 28,973
精华内容 11,589
关键字:

urllib可以处理url