发布网友 发布时间:2024-09-06 13:36
共1个回答
热心网友 时间:2024-10-01 10:36
导读:今天首席CTO笔记来给各位分享关于python默认端口是多少的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
python爬虫前奏在浏览器中发送http请求的过程:
1.当用户在浏览器地址栏输入URL并按回车键时,浏览器会向HTTP服务器发送HTTP请求。HTTP请求主要分为“获取”和“发布”两种方法。
2.当我们输入网址htp://www百度。com在浏览器中,浏览器发送Request请求获取HTP/wwwBaidu.com的html文件,服务器将Response文件对象发回浏览器。
3.浏览器分析响应中的HTML,发现它引用了很多其他文件,比如Images文件、CSS文件、JS文件。浏览器会自动再次发送一个获取图片、CSS文件或JS文件的请求。
4.当所有文件下载成功后,网页将完全按照HTML语法结构显示。
#url解释:
URL是统一资源定位符的缩写,统一资源定位符。
网址由以下部分组成:
scheme://host:port/path/query-string=XXX#ancho
方案:表示访问的协议,如http或https、ftp等。
主机:主机名、域名,如。
端口:端口号。当您访问网站时,浏览器默认使用端口80。
路径:找到路径。例如,在,,以下趋势/现在是路径。
查询字符串:查询字符串,如?.Wd=python,后跟Wd=python,是搜索字符串。
锚点:锚点,背景一般忽略,前端用于页面定位。
浏览器中的一个ufl,浏览器将对这个url进行编码。除了英文字母、数字和一些符号之外,所有其他符号都用百分号加上十六进制代码值进行编码。
#请求头通用参数:
在http协议中,当向服务器发送请求时,数据被分成三部分。第一个是把数据放在url中,第二个是把数据放在正文中(在post请求中),第三个是把数据放在头部。这里,我们介绍一些经常在网络爬虫中使用的请求头参数:
用户代理:浏览器名称。这通常用于网络爬虫。当请求网页时,服务器可以通过这个参数知道哪个浏览器发送了请求。如果我们通过爬虫发送请求,那么我们的用户代理就是Python。对于那些有反爬虫机制的网站,很容易判断你的请求是爬虫。因此,我们应该始终将此值设置为某些浏览器的值,以伪装我们的爬虫。
引用者:指示当前请求来自哪个网址。这也可以作为反爬虫技术。如果不是来自指定页面,则不会做出相关响应。
http协议是无状态的。也就是说,同一个人发送了两个请求,服务器无法知道这两个请求是否来自同一个人。因此,此时使用cookie进行标识。一般来说,如果你想成为一个登录后才能访问的网站,你需要发送cookie信息。
常见的请求方法有:
在Http协议中,定义了八种请求方法。这里介绍两种常见的请求方法,即get请求和post请求。
Getrequest:一般来说,getrequest只在从服务器获取数据时使用,不会对服务器资源产生任何影响。
发布请求:发送数据(登录)、上传文件等。,并在会影响服务器资源时使用post请求。
这是网站开发中常用的两种方法。并且一般会遵循使用原则。然而,为了成为一个反爬虫机制,一些网站和服务器经常出于常识玩牌。应该使用get方法的请求可能必须更改为post请求,这取决于具体情况。
常见响应状态代码:
00:请求正常,服务器正常最近数据。
31:永久重定向。例如,当您访问时,您将被重定向到。
32:临时重定向。例如,当访问需要登录的页面时,此时没有登录,您将被重定向到登录页面。
400:在服务器上找不到请求的网址。换句话说,盾请求ur1错误。
403:服务器拒绝访问,权限不足。
50:服务器内部错误。可能是服务器有bug。
使用python发布接口,如何提醒用户升级
简单说下接口测试,现在常用的2种接口就是httpapi和rpc协议的接口,今天主要说:httpapi接口是走http协议通过路径来区分调用的方法,请求报文格式都是key-value形式,返回报文一般是json串;
接口协议:http、webservice、rpc等。
请求方式:get、post方式
请求参数格式:
a.get请求都是通过url?param=xxx?m1=xxx
b.post请求的请求参数常用类型有:application/json、application/x-www-form-urlencoded、multipart/form-data、text/html等。
还需要知道接口的url、参数类型、返回结果的数据格式、了解接口是否有header、cookie等信息。
接口的实现:请求方式-get,接口的写法:
importflaskfromflaskimportrequestfromflaskimportjsonifyimporttoolsimportOP_dbimportsettings'''flask:web框架,可以通过flask提供的装饰器@server.route()将普通函数转换为服务登录接口,需要传url、username、passwd'''#创建一个服务,把当前这个python文件当做一个服务server=flask.Flask(__name__)#server.config['JSON_AS_ASCII']=False#@server.route()可以将普通函数转变为服务登录接口的路径、请求方式@server.route('/login',methods=['get'])deflogin():#获取通过url请求传参的数据username=request.values.get('name')#获取url请求传的密码,明文pwd=request.values.get('pwd')#判断用户名、密码都不为空,如果不传用户名、密码则username和pwd为Noneifusernameandpwd:#获取加密后的密码password=tools.md5_pwd(pwd)#执行sql,如果查询的username和password不为空,说明数据库存在admin的账号sql='selectname,passwordfromtestwherename="%s"andpassword="%s";'%(username,password)#从数据查询结果后,res返回是元组res=OP_db.getconn(host=settings.mysql_info['host'],user=settings.mysql_info['user'],passwd=settings.mysql_info['pwd'],db=settings.mysql_info['db'],port=settings.mysql_info['port'],sql=sql)ifres:#res的结果不为空,说明找到了username=admin的用户,且password为加密前的123456resu={'code':200,'message':'登录成功'}returnjsonify(resu)#将字典转换为json串,json是字符串else:resu={'code':-1,'message':'账号/密码错误'}returnjsonify(resu)else:res={'code':999,'message':'必填参数未填写'}returnjsonify(res)if__name__=='__main__':server.run(debug=True,port=8888,host=0.0.0.0)#指定端口、host,0.0.0.0代表不管几个网卡,任何ip都可以访问
md5加密、数据库mysql的操作详见我的其他博客~~~~~
get访问接口:
项目启动后,接口的地址是:,默认端口是5000。
打开浏览器,输入url;pwd=123456,后面跟上接口的地址login,参数跟url直接使用?相连,每个请求参数直接使用相连。请求成功,则返回{'code':200,'message':'登录成功'}。
请求方式-post,接口的写法:
importflaskfromflaskimportjsonifyfromflaskimportrequestfromconfimportopMysqlfromconfimportmd5_create'''注册接口:post请求,请求参数入参类型json{"username":"aaa","pwd":"123456","c_pwd":"123456"}'''server=flask.Flask(__name__)@server.route('/register',methods=['get','post'])defregisterPost():#判断接口的请求方式是GET还是POSTifrequest.method=='POST':#获取请求参数是json格式,返回结果是字典params=request.jsonusername=params.get('username')pwd=params.get('pwd')confirmpwd=params.get('confirmpwd')ifusernameandpwdandconfirmpwd:#判断输入的用户名、密码、确认密码都不为空select_sql='selectusernamefromlhldemowhereusername="%s";'%username#查询注册的用户是否存在数据库,如果存在,则username不为空,否则username为空res_mysql=opMysql.op_select(select_sql)ifres_mysql:returnjsonify({"code":999,"mesg":"用户已注册"})else:ifpwd==confirmpwd:#判断pwd和confirmpwd一致new_pwd=md5_create.md5_test(pwd)#加密后的密码insert_sql='insertintolhldemo(username,password)values("%s","%s");'%(username,new_pwd)opMysql.op_insert(insert_sql)returnjsonify({"code":200,"msg":"注册成功"})else:returnjsonify({"code":998,"msg":"密码不一样"})else:returnjsonify({"code":504,"msg":"必填项不能为空"})else:returnjsonify({"code":201,"msg":"请求方式不正确"})if__name__=='__main__':#port可以指定端口,默认端口是5000#host写成0.0.0.0的话,其他人可以访问,代表监听多块网卡上面,默认是127.0.0.1server.run(debug=True,port=8899,host='0.0.0.0')
post访问接口:
项目启动后,接口的地址是:,默认端口是5000。
打开浏览器,输入url,后面跟上接口的地址register,参数使用postman或jmeter进行请求,参数类型是json。请求成功,则返回{'code':200,'message':'登录成功'}。
请求方式-get、post都可以访问,写法如下:importflaskfromflaskimportjsonifyfromflaskimportrequestfromconfimportopMysqlfromconfimportmd5_create'''注册接口:post请求,请求参数入参类型json{"username":"aaa","pwd":"123456","c_pwd":"123456"}'''server=flask.Flask(__name__)@server.route('/register',methods=['get','post'])defregisterPost():#post请求获取请求的参数,返回结果类型是strusername=request.values.get('username')pwd=request.values.get('pwd')confirmpwd=request.values.get('confirmpwd')ifusernameandpwdandconfirmpwd:#判断输入的用户名、密码、确认密码都不为空select_sql='selectusernamefromlhldemowhereusername="%s";'%username#查询注册的用户是否存在数据库,如果存在,则username不为空,否则username为空res_mysql=opMysql.op_select(select_sql)ifres_mysql:returnjsonify({"code":999,"mesg":"用户已注册"})else:ifpwd==confirmpwd:#判断pwd和confirmpwd一致new_pwd=md5_create.md5_test(pwd)#加密后的密码insert_sql='insertintolhldemo(username,password)values("%s","%s");'%(username,new_pwd)opMysql.op_insert(insert_sql)returnjsonify({"code":200,"msg":"注册成功"})else:returnjsonify({"code":998,"msg":"密码不一样"})else:returnjsonify({"code":504,"msg":"必填项不能为空"})if__name__=='__main__':#port可以指定端口,默认端口是5000#host默认是127.0.0.1,写成0.0.0.0的话,其他人可以访问,代表监听多块网卡上面,server.run(debug=True,port=8899,host='0.0.0.0')
python2中为什么017620表示8080利用Python自带的包可以建立简单的web服务器。在DOS里cd到准备做服务器根目录的路径下,输入命令:
python-mWeb服务器模块[端口号,默认8000]
例如:
python-mSimpleHTTPServer8080
然后就可以在浏览器中输入
http://localhost:端口号/路径
来访问服务器资源。
例如:
http://localhost:8080/index.htm(当然index.htm文件得自己创建)
其他机器也可以通过服务器的IP地址来访问。
pycharm使用windows10子系统ubuntu环境运行python在MicrosoftStore中搜索ubuntu找到后点击安装、启动进入ubuntu界面设置账号密码
进入页面后输入cat/etc/lsb-release查看系统版本我安装的是ubuntu20.04.1LTS
先更新下包
可以在pycharm的terminal中用ssh请求连接测试一下,发现连接被拒绝了。
因为这里默认使用端口22连接,而22已经被windows占用。打开配置文件,
修改端口为2222
保存退出后启动ssh
发现启动失败提示sshderror:couldnotloadhostkey
使用命令安装
完成后查看启动ssh启动状态成功
再在pycharm中连接测试下,发现已经可以连接了
但是又发现一个新问题
再用ssh连接,发现root账号登陆总是不成功,需要使用启动ubuntu设置的账号密码登录,注意现在使用2222端口连接
接下来在pycharm中点击ToolsDeploymentConfiguration增加sftp连接,填入刚刚ssh连接的配置信息,点击TestConnection连接成功
在Setting-Project:Intepreter中选择SSHIntepreter使用刚刚添加的连接
点击运行发现找不到远程文件
最后再运行一次,成功!
pip安装包时遇到gcc问题
Python配合前端写简单接口(加前端vue代码)服务器端:
#开发人员:hanhan丶
#开发时间:2020/11/1214:36
importflask,json??????????????#Flask一个轻量级的web框架
fromflask_corsimport*
server=flask.Flask(__name__)???#__name__代表当前的python文件。把当前的python文件当做一个服务启动
CORS(server,supports_credentials=True)???#解决跨域
@server.route('/login',methods=['post'])
#第一个参数就是路径,第二个参数支持的请求方式,不写的话默认是get,
#加了@server.route才是一个接口,不然就是一个普通函数
deflogin():
user=flask.request.values.to_dict()
foriteminuser:
items=json.loads(item)
loginName=items.get("loginName")
password=items.get("password")
ifloginNameandpassword:
res={"code":0,"msg":"请求成功","data":{"loginName":loginName,"password":password}}
else:
res={'msg':'调用失败'}
#json.dumps序列化时对中文默认使用的ascii编码,输出中文需要设置ensure_ascii=False
????returnjson.dumps(res,ensure_ascii=False)
if__name__=='__main__':
#port可以指定端口,默认端口是5000
??#host默认是服务器,默认是127.0.0.1
??#debug=True修改时不关闭服务
??server.run(debug=True)
前端:
template
?div
??账号:inputtype="text"v-model="loginName"
??br
???密码:inputtype="text"v-model="password"
??br
??br
??br
??button@click="btn"点击/button
?/div
/template
script
importaxiosfrom"axios";
exportdefault{
?data(){
??return{
???loginName:"",
???password:""
??};
?},
?methods:{
??getDate(){
???axios({
????headers:{
?????"X-Requested-With":"XMLHttpRequest",
?????"Content-Type":"application/x-www-form-urlencoded;charset=UTF-8"
????},
????url:"",
????method:"post",
????data:{
?????loginName:this.loginName,
?????password:this.password
????}
???}).then(res={
????console.log(res);
???});
??},
??btn(){
???this.getDate();
??}
?}
};
/script
style
/style
python1个端口起多个web服务可以默认启动一个端口为8000的web服务,直接访问会显示执行命令所在目录中的文件,如果需要使用其他端口,在最后增加端口就可以。如以下就使用8080端口。
结语:以上就是首席CTO笔记为大家整理的关于python默认端口是多少的相关内容解答汇总了,希望对您有所帮助!如果解决了您的问题欢迎分享给更多关注此问题的朋友喔~