第五十九节,模拟浏览器请求Python结合html基本格式
模拟浏览器请求Python结合html基本格式
用Python模拟一个客户端,结合打开一个HTML页面
创建客户端
#!/usr/bin/env python
# -*- coding:utf8 -*-
import socket #导入单线程通讯模块
def handle_request(client):
buf = client.recv(1024)
client.sendall(bytes("HTTP/1.1 201 OK\r\n\r\n","utf8")) #向客户端发送内容,以字节形式发送
f = open("1.html", "r", encoding="utf-8") #打开HTML文件
f2 = f.read() #读出HTML文件内容
f.close() #关闭打开的文件 client.sendall(bytes(f2,"utf8")) #将读出HTML文件内容向客户端发送内容,以字节形式发送 def main():
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #创建服务端通讯对象
sock.bind(('localhost',8082)) #在服务端设置服务端ip和端口8
sock.listen(5) #监听IP和端口,设置一个参数,表示最多连接排队数量 while True:
connection, address = sock.accept() #等待接收客户端的请求,一旦有客户端请求连接,就会返回两个值,一个是连接对象,一个是客户端的地址信息,所以需要两个变量来接收
handle_request(connection) #执行handle_request函数,将客户端请求连接传入handle_request函数
connection.close() #关闭连接 if __name__ == '__main__': #wds系统下if __name__ == "__main__"才能创建进程,我们调试没关系,以后在Linux系统没这个问题 main() #执行main函数
HTML页面
将HTML页面放入客服端相同的目录里
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>你好</h1>
</body>
</html>
启动客户端后在浏览器输入http://127.0.0.1:8082/ 可以看到以下结果
你好
下面我们开始讲HTML知识
HTML基本格式
<!DOCTYPE html> //文档类型声明
<html lang="zh-cn"> //表示HTML文档开始,属性lang,属性值=zh-cn(声明中文网页的意思)
<head> //包含文档元素开始
<meta charset="UTF-8"> //声明字符编码
<title>标题</title> //设置文档标题
</head> //包含文档元素结束
<body> //表示HTML内容开始 </body> //表示HTML内容结束
</html> //表示HTML文档结束
<!DOCTYPE html>
它主要告诉浏览器所查看的文件类型,表示为HTML文档类型
<html lang="zh-cn"></html>
HTML元素是文档开始和结尾的元素,它是一个双标签,包含内容,这个元素有一个属性和属性值,lang="zh-cn",表示文档语言为:简体中文,如果是英文网页为lang="en"
<head> </head>
用来包含元数据内容,元数据内容包括:<link>、<meta>、<noscript>、<scripy>、<style>、<title>,这些内容用来向浏览器提供信息,比如link提供css信息,这些类型都是页面不可见的
<meta>
这个元素可以用来设置字符编码,告诉浏览器页面采用什么编码,除了设置编码还有别的
<title></title>
这个元素是设置页面的标题的,标题会显示到浏览器上部,也会被搜索引擎识别
<body> </body>
用来包含文档内容的元素,也就是浏览器可见部分,所有的可见部分都应该写在这里
第五十九节,模拟浏览器请求Python结合html基本格式的更多相关文章
- 第三百五十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)介绍以及安装
第三百五十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)介绍以及安装 elasticsearch(搜索引擎)介绍 ElasticSearch是一个基于 ...
- 第一百五十九节,封装库--JavaScript,表单序列化结合ajax提交数据
封装库--JavaScript,表单序列化结合ajax提交数据 封装库,表单序列化方法 /** xu_lie_biao_dan()方法,表单序列化方法,将自动获取指定表单里面的各项字段name值和va ...
- 第四十节,requests模拟浏览器请求模块初识
requests模拟浏览器请求模块初识 requests模拟浏览器请求模块属于第三方模块 源码下载地址http://docs.python-requests.org/zh_CN/latest/use ...
- 第三百八十九节,Django+Xadmin打造上线标准的在线教育平台—列表筛选结合分页
第三百八十九节,Django+Xadmin打造上线标准的在线教育平台—列表筛选结合分页 根据用户的筛选条件来结合分页 实现原理就是,当用户点击一个筛选条件时,通过get请求方式传参将筛选的id或者值, ...
- 第三百六十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索功能
第三百六十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索功能 Django实现搜索功能 1.在Django配置搜索结果页的路由映 ...
- 第三百二十九节,web爬虫讲解2—urllib库爬虫—ip代理—用户代理和ip代理结合应用
第三百二十九节,web爬虫讲解2—urllib库爬虫—ip代理 使用IP代理 ProxyHandler()格式化IP,第一个参数,请求目标可能是http或者https,对应设置build_opener ...
- requests模拟浏览器请求模块初识
requests模拟浏览器请求模块初识 一.下载 requests模拟浏览器请求模块属于第三方模块 源码下载地址http://docs.python-requests.org/zh_CN/lates ...
- 第三百四十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—cookie禁用、自动限速、自定义spider的settings,对抗反爬机制
第三百四十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—cookie禁用.自动限速.自定义spider的settings,对抗反爬机制 cookie禁用 就是在Scrapy的配置文件set ...
- 第三百一十九节,Django框架,文件上传
第三百一十九节,Django框架,文件上传 1.自定义上传[推荐] 请求对象.FILES.get()获取上传文件的对象上传对象.name获取上传文件名称上传对象.chunks()获取上传数据包,字节码 ...
随机推荐
- jq屏蔽f5
//屏蔽F5 $(document).ready(function () { $(document).bind("keydown", function (e) { e = wind ...
- Tiny6410之重定位代码到SDRAM
在上一章中,将代码重定位到了SRAM中,但是这样的做法作用不大.正确的做法的是将代码重定位到更大的主存中,即DRAM.Tiny6410的DRAM控制寄存器最多只能支持两个同一类型的芯片.每个芯片最多可 ...
- Tiny6410之重定位代码到SRAM+4096
重定位代码 两个不同的地址概念: 对于程序而言,需要理解两个地址,一个是程序当前所处的地址,即程序运行时所处的当前地址.二是程序应该位于的运行地址,即编译程序时所指定的程序的链接地址.在Tiny641 ...
- cookie会话技术
会话技术 B/S请求是无状态无记忆的,脚本与脚本之间是没有联系的,导致不能进行连续的业务逻辑 Cookie技术:将会话数据保存在浏览器端 原理:服务器向浏览器发送指令,用来管理存储在浏览器端的cook ...
- JSON文件处理
牛X的JSON解析JSON字符串显示字典键值 public void ResolveJson() { //定义的JSON字符串,注意JSON的格式 string str = @” { “”Name”” ...
- Redis 集群解决方案比较
调研比较了三个Redis集群的解决方案: 系统 贡献者 是否官方Redis实现 编程语言 Twemproxy Twitter 是 C Redis Cluster Redis官方 是 C Codis 豌 ...
- [Linux]当一个棘手问题需要即可定位,如何协助开发,缩小定位范围
写在前面:前段时间,朋友给我说了一个她亲身经历的某知名企业面试故事,面试结束感觉自己已脱了一层皮...面试官的问题并不刁钻,但是却是步步紧逼,而且有点类似拜占庭将军问题,只是拜占庭将军问题是所有的假设 ...
- 【for陷阱】遍历的同时删除元素
今晚,哦不,是昨晚了,想删除空行时,给for语句和列表坑得好惨!!! 一般来说,删除字符串的空行有以下几种常见的方法~(然而我竟然想不出来) 假设我们要把下面的字符串之间的空行给去掉 # coding ...
- 什么是Bash Shell的内建(build in)命令
1.什么是build in命令: shell内建命令是指bash(或其它版本)工具集中的命令.一般都会有一个与之同名的系统命令,比如bash中的echo命令与/bin/echo是两个不同的命令,尽管他 ...
- 解决larave-dompdf中文字体显示问题
1.安装laravel-dompdf依赖. Packagist:https://packagist.org/packages/barryvdh/laravel-dompdf composer requ ...