1获取整页页面
#python3
import urllib.request
response=urllib.request.urlopen('http://www.baidu.com')
data=response.read()
html=data.decode("utf8")
print(type(html))
with open("d:/python/pachong/pc2.html",'w',encoding='utf8') as f:
f.write(html)
#python2版
import io
import urllib
import urllib2
response=urllib2.urlopen('http://www.baidu.com')
data=response.read()
html=data.decode('utf8')
with io.open('d:/python/pachong/ub1.html','w',encoding='utf8') as f:
f.write(html)
由上可见,python3里的urllib.request即为python2里的urllib2
2 获取某个图片
#python3版
import urllib.request
url="https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo/bd_logo1_31bdc765.png"
response=urllib.request.urlopen(url)
#创建请求对象
#request=urllib.request.Request(url)
#response=urllib.request.urlopen(request)
data=response.read()
#将数据存入到图片文件中
with open("d:/python/pachong/baidu.png','wb') as f:
f.write(data)
#python2版
import urllib
import urllib2
import io
url="https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo/bd_logo1_31bdc765.png"
#response=urllib.urlopen(url)
request=urllib2.Request(url)
response=urllib2.urlopen(request)
data=response.read()
with io.open('d:/python/pachong/ub2_1.png','wb') as f:
f.write(data)
- geturl()返回的是一个url的字符串;
- info()返回的是一些meta标记的元信息,包括一些服务器的信息;
- getcode()返回的是HTTP的状态码,如果返回200表示请求成功
查看返回相关信息
import urllib.request
#获取请求地址
url="http://www.sohu.com"
#发送请求,获取相应
response = urllib.request.urlopen(url)
#获取相应的数据
#获取请求的数据url
print(response.geturl())
#服务器相应的数据信息
print(response.info())
#获取相应的返回码
print(response.getcode())
3 获取post请求数据
- 使用baidu的api完成汉译英功能
import urllib.request
#baidu翻译的地址
url='http://fanyi.baidu.com/v2transapi'
param={
"from":"zh",
"to":"en",
"query":"中国",
"transtype":"translang",
"simple_means_flag":"3"
}
#将参数转码
param=urllib.parse.urlencode(param)
#将参数转换为bytes类型
param=bytes(param,encoding='utf8')
#发送请求
response=urllib.request.urlopen(url,data=param)
#读取返回的数据
data=response.read()
#将bytes类型转换为str类型
data=str(data,encoding='utf8')
print(data)
2. 使用json完成校验
#使用baidu的api完成汉译英功能
import urllib.request
import urllib.parse
import json
transData=input("请您输入要翻译的内容(中文)")
#baidu翻译的地址
url='http://fanyi.baidu.com/v2transapi'
param={
"from":"zh",
"to":"en",
"query":transData,
"transtype":"translang",
"simple_means_flag":"3"
}
#将参数转码
param=urllib.parse.urlencode(param)
#将参数转换为bytes类型
param=bytes(param,encoding='utf8')
#发送请求
response=urllib.request.urlopen(url,data=param)
#读取返回的数据
data=response.read()
#将bytes类型转换为str类型
data=str(data,encoding='utf8')
#print(data)
#将json的字符串转为字典
result=json.loads(data)
#获取需求的数据
dst=result["trans_result"]["data"][0]["dst"]
print("翻译后的结果:"+dst)
4 伪装身份
- 方法一
import urllib.request
#请求的url
url="http://www.youkuaiyun.com"
#请求头数据
headers={
"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
}
#创建请求对象
request=urllib.request.Request(url)
#发送请求
response=urllib.request.urlopen(request)
#读取数据
data=response.read().decode('utf8')
#print(data)
with open('d:/python/pachong/weizhuang1.html','w',encoding='utf8') as f:
f.write(data)
从结果可以看出,Provisional headers are shown,伪装仍然可以被发现
- 方法二
import urllib.request
#获取请求url
url="http://www.youkuaiyun.com"
#创建请求对象
request=urllib.request.Request(url)
#请求对象添加请求头文件
request.add_header("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0")
#发送请求
response=urllib.request.urlopen(request)
#读取数据
data=response.read().decode('utf8')
with open('d:/python/pachong/weizhuang2.html','w',encoding='utf8') as f:
f.write(data)
- IP代理的使用
import urllib.request
# 获取网络请求地址
url="http://ip.chinaz.com"
#创建handler
proxyHandler=urllib.request.ProxyHandler({"https":"60.205.227.57:63336"})
#创建opener
opener=urllib.request.build_opener(proxyHandler)
#install opener
urllib.request.install_opener(url)
#发起网络请求
response=opener.open(url)
#读取数据
data=response.read().decode("utf8")
print(data)