urllib的使用1

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)
#python2import 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)
  1. geturl()返回的是一个url的字符串;
  2. info()返回的是一些meta标记的元信息,包括一些服务器的信息;
  3. 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请求数据

  1. 使用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 伪装身份

  1. 方法一
import urllib.request

#请求的url
url="http://www.csdn.net"

#请求头数据
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,伪装仍然可以被发现

  1. 方法二
import urllib.request

#获取请求url
url="http://www.csdn.net"
#创建请求对象
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)
  1. 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)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值