美文网首页
urllib用法

urllib用法

作者: Alice丨殇 | 来源:发表于2018-12-23 19:29 被阅读0次

    1.urllib.parse.urlencode()方法:

    一般HTTP请求提交数据,需要编码成 URL编码格式,然后做为url的一部分,或者作为参数传到Request对象中.
    这时可以使用urllib.parse模块下的urlencode()函数,帮我们将key:value这样的键值对转换"key=value"这样的字符串,解码工作可以使用urllib.parse的unquote()函数。

    例如获取百度美女贴吧的url
    import urllib.parse

    url = "http://tieba.baidu.com/f?"
    key = urllib.parse.urlencode({"kw" : "美女"})
    url = url + key
    组合后的url示例:http://tieba.baidu.com/f?kw=%E7%BE%8E%E5%A5%B3

    2.urllib.request()

    快速爬取一个网页

    import urllib.request
    url = 'http://www.baidu.com/'
    response = urllib.request.urlopen(url)
    html = response.read()
    with open('baidu/baidu.html','w') as f:
    f.write(html.decode())
    f.close()

    3.urllib高级用法一,自定义opener

    基本的urlopen()方法不支持代理、cookie等其他的HTTP/HTTPS高级功能

    简单的自定义opener()

    import urllib.request
    url = 'http://www.baidu.com'
    https_handler = urllib.request.HTTPHandler()
    opener = urllib.request.build_opener(https_handler)
    request = urllib.request.Request(url=url)
    response = opener.open(request)
    content = response.read().decode()
    with open('baidu.html','w') as f:
    f.write(content)

    4.urllib高级用法二,设置代理

    基本原理: 代理实际上指的就是代理服务器,英文叫作proxy server,它的功能是代理网络用户去取得网络信息。形象地说,它是网络信息的中转站。在我们正常请求一个网站时,其实是发送了请求给Web服务器,Web服务器把响应传回给我们。如果设置了代理服务器,实际上就是在本机和服务器之间搭建了一个桥,此时本机不是直接向Web服务器发起请求,而是向代理服务器发出请求,请求会发送给代理服务器,然后由代理服务器再发送给Web服务器,接着由代理服务器再把Web服务器返回的响应转发给本机。这样我们同样可以正常访问网页,但这个过程中Web服务器识别出的真实IP就不再是我们本机的IP了,就成功实现了IP伪装,这就是代理的基本原理

    import urllib.request
    import urllib.parse

    西刺免费代理IP:http://www.xicidaili.com/

    快代理免费代理:https://www.kuaidaili.com/free/inha/

    proxy = {
    'http':'61.176.223.7:58822',
    'https':'180.121.135.91:3128'
    }
    url = 'http://www.baidu.com'

    创建处理代理的handler

    proxyhandler = urllib.request.ProxyHandler(
    proxies=proxy
    )

    创建一个opener

    opener = urllib.request.build_opener(proxyhandler)

    构造一个请求

    request = urllib.request.Request(url=url)
    response = opener.open(request)
    content = response.read().decode()
    with open('daili.html','w') as f:
    f.write(content)

    相关文章

      网友评论

          本文标题:urllib用法

          本文链接:https://www.haomeiwen.com/subject/rlankqtx.html