精华内容
下载资源
问答
  • 请说一下urllib和requests的区别? 回答: urllib是python内置的包,不需要单独安装;requests是第三方库,需要单独安装(pip install requests) requests库是在urllib的基础上封装的,比urllib更加好用&...

    题目:

    请说一下urllib和requests的区别?

    回答:

    1. urllib是python内置的包,不需要单独安装;requests是第三方库,需要单独安装(pip install requests)
    2.  requests库是在urllib的基础上封装的,比urllib更加好用&语义化
    3. requests可以直接构建常用的get、post请求并发送;urllib需要先构建请求,然后再发起请求
    4. 具体对比:
      urllib包 requests库
    构建参数 需要使用urllib的urlencode方法进行编码预处理 不要进行编码预处理
    请求头  urllibreqeust需要构造一个请求,再进行请求 requests可以直接添加headers参数以设置请求头,因为请求头是在其内部已经构建了
    请求方法 发送请求时,用urlopen方式发起 发送请求时用requests.get方式发起,更佳清晰、明了和语义化
    请求数据 按照url格式拼接URL请求字符串 顺序将请求的url和参数写好即可
    处理响应

    处理头部消息:info()

    响应码状态:getcode()

    响应正文:read()

    头部信息:head()

    响应码状态:status_code()

    响应正文:text()、content()

    连接方式

    每次请求结束后都会关闭socket连接

    "connection":"close"

    采用urllib3长连接方式,多次请求使用同一个socket,消耗资源更少

    "connection":"keep-alive"

    编码方式 requests库的编码方式Accept-Encoding更全

    参考资料:

    浅谈urllib和requests

    【Python爬虫】requests与urllib库的区别

    展开全文
  • 记住有个urllib的库就行了python2.X 有这些库名可用:urllib,urllib2, urllib3,httplib, httplib2, requestspython3.X 有这些库名可用: urllib, urllib3, httplib2, requests两者都有的urllib3和requests, 它们不是...

    若只使用python3.X, 下面可以不看了, 记住有个urllib的库就行了

    python2.X 有这些库名可用: urllib, urllib2, urllib3, httplib, httplib2, requests

    python3.X 有这些库名可用: urllib, urllib3, httplib2, requests

    两者都有的urllib3和requests, 它们不是标准库. urllib3 提供线程安全连接池和文件post支持,与urllib及urllib2的关系不大. requests 自称HTTP for Humans, 使用更简洁方便

    对于python2.X:

    urllib和urllib2的主要区别:

    urllib2可以接受Request对象为URL设置头信息,修改用户代理,设置cookie等, urllib只能接受一个普通的URL.

    urllib提供一些比较原始基础的方法而urllib2没有这些, 比如 urlencode

    urllib官方文档的几个例子

    使用带参数的GET方法取回URL>>> importurllib>>> params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})>>> f = urllib.urlopen("http://www.musi-cal.com/cgi-bin/query?%s" %params)>>> printf.read()

    使用POST方法>>> importurllib>>> params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})>>> f = urllib.urlopen("http://www.musi-cal.com/cgi-bin/query", params)>>> printf.read()

    使用HTTP代理,自动跟踪重定向>>> importurllib>>> proxies = {'http': 'http://proxy.example.com:8080/'}>>> opener =urllib.FancyURLopener(proxies)>>> f = opener.open("http://www.python.org")>>>f.read()

    不使用代理>>> importurllib>>> opener =urllib.FancyURLopener({})>>> f = opener.open("http://www.python.org/")>>> f.read()

    urllib2的几个官方文档的例子:

    GET一个URL>>> importurllib2>>> f = urllib2.urlopen('http://www.python.org/')>>> printf.read()

    使用基本的HTTP认证importurllib2

    auth_handler=urllib2.HTTPBasicAuthHandler()

    auth_handler.add_password(realm='PDQ Application',

    uri='https://mahler:8092/site-updates.py',

    user='klem',

    passwd='kadidd!ehopper')

    opener=urllib2.build_opener(auth_handler)

    urllib2.install_opener(opener)

    urllib2.urlopen('http://www.example.com/login.html')

    build_opener() 默认提供很多处理程序, 包括代理处理程序, 代理默认会被设置为环境变量所提供的.

    一个使用代理的例子

    proxy_handler= urllib2.ProxyHandler({'http': 'http://www.example.com:3128/'})

    proxy_auth_handler=urllib2.ProxyBasicAuthHandler()

    proxy_auth_handler.add_password('realm', 'host', 'username', 'password')

    opener=urllib2.build_opener(proxy_handler, proxy_auth_handler)

    opener.open('http://www.example.com/login.html')

    添加HTTP请求头部importurllib2

    req= urllib2.Request('http://www.example.com/')

    req.add_header('Referer', 'http://www.python.org/')

    r=urllib2.urlopen(req)

    更改User-agentimporturllib2

    opener=urllib2.build_opener()

    opener.addheaders= [('User-agent', 'Mozilla/5.0')]

    opener.open('http://www.example.com/')

    httplib 和 httplib2 httplib 是http客户端协议的实现,通常不直接使用, urllib是以httplib为基础 httplib2 是第三方库, 比httplib有更多特性

    httplib比较底层,一般使用的话用urllib和urllib2即可

    对于python3.X:

    这里urllib成了一个包, 此包分成了几个模块,

    urllib.request 用于打开和读取URL,

    urllib.error 用于处理前面request引起的异常,

    urllib.parse 用于解析URL,

    urllib.robotparser用于解析robots.txt文件

    python2.X 中的 urllib.urlopen()被废弃, urllib2.urlopen()相当于python3.X中的urllib.request.urlopen()

    几个官方例子:

    GET一个URL>>> importurllib.request>>> with urllib.request.urlopen('http://www.python.org/') as f:

    ...print(f.read(300))

    PUT一个请求importurllib.request

    DATA=b'some data'req= urllib.request.Request(url='http://localhost:8080', data=DATA,method='PUT')

    with urllib.request.urlopen(req) as f:pass

    print(f.status)print(f.reason)

    基本的HTTP认证importurllib.request

    auth_handler=urllib.request.HTTPBasicAuthHandler()

    auth_handler.add_password(realm='PDQ Application',

    uri='https://mahler:8092/site-updates.py',

    user='klem',

    passwd='kadidd!ehopper')

    opener=urllib.request.build_opener(auth_handler)

    urllib.request.install_opener(opener)

    urllib.request.urlopen('http://www.example.com/login.html')

    使用proxy

    proxy_handler= urllib.request.ProxyHandler({'http': 'http://www.example.com:3128/'})

    proxy_auth_handler=urllib.request.ProxyBasicAuthHandler()

    proxy_auth_handler.add_password('realm', 'host', 'username', 'password')

    opener=urllib.request.build_opener(proxy_handler, proxy_auth_handler)

    opener.open('http://www.example.com/login.html')

    添加头部importurllib.request

    req= urllib.request.Request('http://www.example.com/')

    req.add_header('Referer', 'http://www.python.org/')

    r=urllib.request.urlopen(req)

    更改User-agentimporturllib.request

    opener=urllib.request.build_opener()

    opener.addheaders= [('User-agent', 'Mozilla/5.0')]

    opener.open('http://www.example.com/')

    使用GET时设置URL的参数>>> importurllib.request>>> importurllib.parse>>> params = urllib.parse.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})>>> url = "http://www.musi-cal.com/cgi-bin/query?%s" %params>>>with urllib.request.urlopen(url) as f:

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

    ...

    使用POST时设置参数>>> importurllib.request>>> importurllib.parse>>> data = urllib.parse.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})>>> data = data.encode('ascii')>>> with urllib.request.urlopen("http://requestb.in/xrbl82xr", data) as f:

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

    ...

    指定proxy>>> importurllib.request>>> proxies = {'http': 'http://proxy.example.com:8080/'}>>> opener =urllib.request.FancyURLopener(proxies)>>> with opener.open("http://www.python.org") as f:

    ... f.read().decode('utf-8')

    ...

    不使用proxy, 覆盖环境变量的proxy>>> importurllib.request>>> opener =urllib.request.FancyURLopener({})>>> with opener.open("http://www.python.org/") as f:

    ... f.read().decode('utf-8')

    ...

    展开全文
  • 我也是初学者,我先试着回答这个问题首先说下 urllib的urllib.request.Request()与urllib.request.urlopen()区别相对于urllib.request.urlopen()来说urllib.request.Request是进一步包装请求总来说,如果我们...

    我也是初学者,我先试着回答这个问题

    首先说下 urllib中的urllib.request.Request()与urllib.request.urlopen()区别

    相对于urllib.request.urlopen()来说urllib.request.Request是进一步的包装请求

    总的来说,如果我们在获取请求对象时,不需要过多的参数传递,我么可以直接选择urllib.request.urlopen();如果需要进一步的包装请求,则需要用urllib.request.Request()进行包装处理。

    回到requests,requests可以直接构造get,post请求并发起,而urllib.request只能先构造get,post请求,再发起。

    例如:

    import requests

    user_agent = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36 Edge/12.10240'

    headers = {'User_Agent': user_agent}

    get_response = requests.get(url,headers = headers)

    post_response = requests.post(url,headers = headers)

    #使用urllib比较简单的get请求

    import urllib.request

    response = urllib.request.urlopen("https://www.baidu.com")

    html.response.read()

    #构造用.Request后再用urlopen,所以没有requests简洁易懂

    user_agent = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36 Edge/12.10240'

    headers = {'User_Agent': user_agent}

    request = urllib.request.Request(urls, headers=headers)

    response = urllib.request.urlopen(request)

    展开全文
  • urllib2和requests的区别

    2018-10-29 22:58:00
    若只使用python3.X, 下面可以不看了, 记住有个urllib的库就行了 python2.X 有这些库名可用:urllib,urllib2, urllib3,httplib, httplib2, requests python3.X 有这些库名可用: ...两者都有的urllib3和requests, 它...

    若只使用python3.X, 下面可以不看了, 记住有个urllib的库就行了

    python2.X 有这些库名可用: urllib, urllib2, urllib3, httplib, httplib2, requests

    python3.X 有这些库名可用: urllib, urllib3, httplib2, requests

    两者都有的urllib3和requests, 它们不是标准库. urllib3 提供线程安全连接池和文件post支持,与urllib及urllib2的关系不大. requests 自称HTTP for Humans, 使用更简洁方便

    对于python2.X:
    urllib和urllib2的主要区别:

    urllib2可以接受Request对象为URL设置头信息,修改用户代理,设置cookie等, urllib只能接受一个普通的URL.
    urllib提供一些比较原始基础的方法而urllib2没有这些, 比如 urlencode
    urllib官方文档的几个例子

    使用带参数的GET方法取回URL
    >>> import urllib
    >>> params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
    >>> f = urllib.urlopen("http://www.musi-cal.com/cgi-bin/query?%s" % params)
    >>> print f.read()
    使用POST方法
    >>> import urllib
    >>> params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
    >>> f = urllib.urlopen("http://www.musi-cal.com/cgi-bin/query", params)
    >>> print f.read()
    使用HTTP代理,自动跟踪重定向
    >>> import urllib
    >>> proxies = {'http': 'http://proxy.example.com:8080/'}
    >>> opener = urllib.FancyURLopener(proxies)
    >>> f = opener.open("http://www.python.org")
    >>> f.read()
    不使用代理
    >>> import urllib
    >>> opener = urllib.FancyURLopener({})
    >>> f = opener.open("http://www.python.org/")
    >>> f.read()

    urllib2的几个官方文档的例子:

    GET一个URL
    >>> import urllib2
    >>> f = urllib2.urlopen('http://www.python.org/')
    >>> print f.read()
     
    使用基本的HTTP认证
    import urllib2
    auth_handler = urllib2.HTTPBasicAuthHandler()
    auth_handler.add_password(realm='PDQ Application',
                              uri='https://mahler:8092/site-updates.py',
                              user='klem',
                              passwd='kadidd!ehopper')
    opener = urllib2.build_opener(auth_handler)
    urllib2.install_opener(opener)
    urllib2.urlopen('http://www.example.com/login.html')
    build_opener() 默认提供很多处理程序, 包括代理处理程序, 代理默认会被设置为环境变量所提供的.
     
    一个使用代理的例子
    proxy_handler = urllib2.ProxyHandler({'http': 'http://www.example.com:3128/'})
    proxy_auth_handler = urllib2.ProxyBasicAuthHandler()
    proxy_auth_handler.add_password('realm', 'host', 'username', 'password')
     
    opener = urllib2.build_opener(proxy_handler, proxy_auth_handler)
    opener.open('http://www.example.com/login.html')
     
    添加HTTP请求头部
    import urllib2
    req = urllib2.Request('http://www.example.com/')
    req.add_header('Referer', 'http://www.python.org/')
    r = urllib2.urlopen(req)
     
    更改User-agent
    import urllib2
    opener = urllib2.build_opener()
    opener.addheaders = [('User-agent', 'Mozilla/5.0')]
    opener.open('http://www.example.com/')

    httplib 和 httplib2 httplib 是http客户端协议的实现,通常不直接使用, urllib是以httplib为基础 httplib2 是第三方库, 比httplib有更多特性

    httplib比较底层,一般使用的话用urllib和urllib2即可

    对于python3.X:
    这里urllib成了一个包, 此包分成了几个模块, 

    urllib.request 用于打开和读取URL, 
    urllib.error 用于处理前面request引起的异常, 
    urllib.parse 用于解析URL, 
    urllib.robotparser用于解析robots.txt文件

    python2.X 中的 urllib.urlopen()被废弃, urllib2.urlopen()相当于python3.X中的urllib.request.urlopen()

    几个官方例子:

    GET一个URL
    >>> import urllib.request
    >>> with urllib.request.urlopen('http://www.python.org/') as f:
    ...     print(f.read(300))
     
    PUT一个请求
    import urllib.request
    DATA=b'some data'
    req = urllib.request.Request(url='http://localhost:8080', data=DATA,method='PUT')
    with urllib.request.urlopen(req) as f:
        pass
    print(f.status)
    print(f.reason)
     
    基本的HTTP认证
    import urllib.request
    auth_handler = urllib.request.HTTPBasicAuthHandler()
    auth_handler.add_password(realm='PDQ Application',
                              uri='https://mahler:8092/site-updates.py',
                              user='klem',
                              passwd='kadidd!ehopper')
    opener = urllib.request.build_opener(auth_handler)
    urllib.request.install_opener(opener)
    urllib.request.urlopen('http://www.example.com/login.html')
     
    使用proxy
    proxy_handler = urllib.request.ProxyHandler({'http': 'http://www.example.com:3128/'})
    proxy_auth_handler = urllib.request.ProxyBasicAuthHandler()
    proxy_auth_handler.add_password('realm', 'host', 'username', 'password')
     
    opener = urllib.request.build_opener(proxy_handler, proxy_auth_handler)
    opener.open('http://www.example.com/login.html')
     
    添加头部
    import urllib.request
    req = urllib.request.Request('http://www.example.com/')
    req.add_header('Referer', 'http://www.python.org/')
    r = urllib.request.urlopen(req)
     
    更改User-agent
    import urllib.request
    opener = urllib.request.build_opener()
    opener.addheaders = [('User-agent', 'Mozilla/5.0')]
    opener.open('http://www.example.com/')
     
    使用GET时设置URL的参数
    >>> import urllib.request
    >>> import urllib.parse
    >>> params = urllib.parse.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
    >>> url = "http://www.musi-cal.com/cgi-bin/query?%s" % params
    >>> with urllib.request.urlopen(url) as f:
    ...     print(f.read().decode('utf-8'))
    ...
     
    使用POST时设置参数
    >>> import urllib.request
    >>> import urllib.parse
    >>> data = urllib.parse.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
    >>> data = data.encode('ascii')
    >>> with urllib.request.urlopen("http://requestb.in/xrbl82xr", data) as f:
    ...     print(f.read().decode('utf-8'))
    ...
     
    指定proxy
    >>> import urllib.request
    >>> proxies = {'http': 'http://proxy.example.com:8080/'}
    >>> opener = urllib.request.FancyURLopener(proxies)
    >>> with opener.open("http://www.python.org") as f:
    ...     f.read().decode('utf-8')
    ...
    不使用proxy, 覆盖环境变量的proxy
    >>> import urllib.request
    >>> opener = urllib.request.FancyURLopener({})
    >>> with opener.open("http://www.python.org/") as f:
    ...     f.read().decode('utf-8')
    ...

     

    转载于:https://www.cnblogs.com/heyy520/p/9873955.html

    展开全文
  • Python爬虫-Urllib方式- 前言此次我将讲述Python爬虫urllibrequests访问方式一些基础操作遇到一些坑,因为Python版本有2.7目前3.x版本,爬虫会有稍许区别,我会介绍一些区别,爬虫方式有多种,没有...
  • urllib: importurllib.request url=['http://wz.lanzh.95306.cn/mainPageNoticeList.do?method=init&id=2000001&cur=1'] #通常我们爬取网页,在构造http请求时候,都需要加上一些额外信息,什么...
  • 学习了爬虫有一段时间了,是时候对urllibrequests、scrapy三者基本用法做一次总结了。1、urllib模块1.1、添加UA1 importurllib.request23 #User-Agent是爬虫与反爬虫第一步4 ua_headers = {'User-Agent': '...
  • urlliburllib2、requests的区别

    千次阅读 2019-11-13 13:18:21
    urllib和urllib2的区别 urllib和urllib2模块都做与请求URL相关的操作,但他们提供不同的功能。 urllib2.urlopen可以接受一个Request对象或者url,(在接受Request对象时候,并以此可以来设置一个URL 的headers) ...
  • urllib.requests和requests都是爬虫中页面信息获取方法。他们不仅在写法上和导入模块上存在区别,在用法上也不尽相同。
  • urllib and urllib2 区别 ...urllib和urllib2模块都做与请求URL相关操作,但他们提供不同功能。urllib2.urlopen accepts an instance of the Request class or a url, (whereas urllib.urlopen ...
  • httplib, httplib2, urllib, requests 区别

    千次阅读 2017-09-11 00:38:34
    2,urllib和urllib2构建在httplib上,它们更抽象而强大,但有时候不能满足您对某些HTTP相关操作指定需求。对于一般需求(不是很底层),这个用还是比较多。3,关于 requests,它应该是比 urllib* 系列更好...
  • 文章目录两者间主要区别urllib.request导入方法内容requests导入方法内容两者间主要区别使用urllin内request模块是,返回体获取有效信息请求体拼接需要decodeencode后再进行装载。进行http请求时需先构造get...
  • python - urlliburllib2和requests模块之间有什么区别?在Python中,requests,urllib2和requests模块之间有什么区别? 为什么有三个? 他们似乎做同样事情......9个解决方案568 votes我知道它已经说过,但我强烈...
  • Python爬虫-Urllib方式-前言此次我将讲述Python爬虫urllibrequests访问方式一些基础操作遇到一些坑,因为Python版本有2.7目前3.x版本,爬虫会有稍许区别,我会介绍一些区别,爬虫方式有多种,没有最好...
  • requests和urllib的区别

    千次阅读 2020-02-02 22:54:35
    基本的区别是获得的response requests 一、发送请求 1.发送get请求,例如: r = requests.get('http://httpbin.org/ip') 2.发送post请求,例如: r = requests.post('http://httpbin.org/ip') 3.得到的...
  • Python爬虫-Urllib方式- 前言此次我将讲述Python爬虫urllibrequests访问方式一些基础操作遇到一些坑,因为Python版本有2.7目前3.x版本,爬虫会有稍许区别,我会介绍一些区别,爬虫方式有多种,没有...
  • python中urllib.request和requests的使用和区别

    万次阅读 多人点赞 2019-03-06 15:53:45
    python中urllib.request和requests的使用和区别urllib.request发起一个简单的请求添加Headers信息requests urllib.request 我们都知道,urlopen()方法能发起最基本对的请求发起,但仅仅这些在我们的实际应用中一般都...
  • urllib.request和requests的使用和区别 请求网页内容可用urllib.request和requests函数,下面分别描述两种函数使用方法 urllib.request的使用 1.发起基础请求 import urllib.request req = urllib.request.Request...
  • 主要介绍了python中urllib.request和requests的使用及区别详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 我也是初学者,我先试着回答这个问题首先说下 urllib的urllib.request.Request()与urllib.request.urlopen()区别相对于urllib.request.urlopen()来说urllib.request.Request是进一步包装请求总来说,如果我们...
  • 但是在获取网页时候,有人写urlopen()方法,有人写request.get方法,在查找有用信息时候,有人用BeautifulSoup,有人用xpath有人甚至正则。 然后还把他们组合起来,一共好几种写法,看头昏脑涨,...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 131
精华内容 52
关键字:

urllib和requests的区别