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")