urllib2的使用(四)

139 阅读1分钟

request对象的各种方法

使用request对象的各种方法

import urllib2
import urllib

def downloadasAndroid(url):
    headers = {"User-Agent": "MQQBrowser/26 Mozilla/5.0 (Linux; U; Android 2.3.7; zh-cn; MB200 Build/GRJ22; CyanogenMod-7) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"}
    request = urllib2.Request(url,headers = headers)
    request.add_header("Connection","keep-alive")
    print(request.get_full_url())  # 整个网页的链接
    print(request.get_host())      # 服务器域名/ip
    print(request.get_method())    # 请求方法
    print(request.get_header("Connection"))  # http/ftp/https
    print(request.get_type())

    response = urllib2.urlopen(request)
    print(response.code)        # 状态码
    print(response.info())     # 网页详细信息
    print(response.read())      # 网页源代码

downloadasAndroid("http://www.baidu.com")

代理使用

  • 使用网络上找到的免费的代理
  • ProxyHandler创建代理的函数,参数是一个字典,键http/https 值ip:port 或者yonghuming:mima@ip:port
  • 在创建opener的时候将代理对象加入进去 opener = urllib2.build_opener(代理对象)
import urllib2

httpproxy = urllib2.ProxyHandler({"http":"49.70.64.148:9999"})  # 无密码验证代理的使用
# httpproxy = urllib2.ProxyHandler({"http":"waws:111111@49.70.64.148:9999"}) # 带密码的代理使用
# 出错的一个原因其实就是代理不好使

"""
nohttpproxy = urllib2.ProxyHandler({})  # 空代理的使用
opener = urllib2.build_opener(nohttpproxy) # 创建一个空代理打开器
"""

opener = urllib2.build_opener(httpproxy) # 创建一个打开器
"""
注意下面的url链接的完整性ttp://www.baidu.com/  斜杠
"""
request = urllib2.Request("https://www.kuaidaili.com/doc/")
response = opener.open(request) # 打开网页,内置代理服务器
print(response.read())

下载图片urlretrieve

# python2
import urllib
urllib.urlretrieve("https://www.kuaidaili.com/doc/product/img/tps_intro.jpg","../img/sp_test_img/1.jpg")

# python3
import urllib.request
urllib.request.urlretrieve("https://www.kuaidaili.com/doc/product/img/tps_intro.jpg","./1.jpg")