python爬虫:socket爬取图片

1.随便打开一个网站:
例如https://www.51miz.com/sucai/?tab=beijing
右键 检查,或者F12

在下面Img部分随便找一张图片

在其header部分找到URL:https://img.51miz.com/Index/2019/12/13/20191213231527_Element_7942812.jpg
和请求的方法:GET
那么报文的格式就是:

GET+空格+com后面的部分+空格+HTTP/1.1(或1.0)+\r\n+Host:+域名+\r\n\r\n

'GET /Index/2019/12/13/20191213231527_Element_7942812.jpg HTTP/1.1\r\nHost: img.51miz.com\r\n\r\n'
# -*- coding:utf-8 -*-
import socket
import re
import ssl
'''
socket: 套接字
应用层--接口--运输层
IP + port
OSI七层模型
'''
'''
200成功
301 重定向
403 禁止访问
404 页面不存在
503 服务器错误'''# 服务端
def func():# 创建服务器server = socket.socket()# 绑定IP  端口server.bind(('0.0.0.0', 8080))# 监听server.listen(5)  # 连接数# 接收conn, addr = server.accept()# 接收数据data = conn.recv(1024)  # 获取1024代销的文件print(data)# 客户端
def func1():client = socket.socket()# 连接百度服务器client.connect(('www.baidu.com', 80))# 构造报文data = b'GET / HTTP/1.0\r\nHost:www.baidu.com\r\n\r\n'  # HTTP# 发送报文client.send(data)# 接受res = client.recv(1024)temp = b''while res:temp += resres = client.recv(4096)# print(temp)  # 请求头+响应报文# 提取正文print(re.findall(b'\r\n\r\n(.*)', temp, re.S)[0])'''
socket下载一张图片1.找到图片的来源.图片一定是从哪个服务器下载回来的2.img选项3.查找图片的渲染效果 Preview4.URL : https://img.51miz.com/Index/2019/12/13/20191213231527_Element_7942812.jpg
'''# client = socket.socket() #http协议
# HTTPS = HTTP + SSL/TLS
client = ssl.wrap_socket(socket.socket())  # https协议
# img URL : https://
# 构造报文
data = b'GET /Index/2019/12/13/20191213231527_Element_7942812.jpg HTTP/1.1\r\nHost: img.51miz.com\r\n\r\n'
# 请求服务器
client.connect(('img.51miz.com', 443))
# 发送报文
client.send(data)
# 接受图片的数据
# 正文 \r\n\r\n
img_first_data = client.recv(1024)  # 第一次,主要是请求头,但有一些是图片数据的内容
length = int(re.findall(b'Content-Length: (.*?)\r\n', img_first_data, re.S)[0])
img_data = b''  # 图片数据保存
img_data += re.findall(b'\r\n\r\n(.*)', img_first_data, re.S)[0]
while True:temp = client.recv(1024)if temp:img_data += tempelse:breakif len(img_data) >= length:  # 数据是否接受完成break
print(len(img_data), length)  # 验证
# 写文件
with open('test.jpg', 'wb') as f:f.write(img_data)

成功

python爬虫:socket相关推荐

  1. Python使用socket读取网页源代码实现简单爬虫程序

    功能描述: 创建套接字,向目标网站HTTP端口80或HTTPS端口443发送请求,获取指定网页的源代码,实现一个简单的网络爬虫程序. 参考代码: 运行结果: 温馨提示 关注本公众号"Pyth ...

  2. 玩转 Python 爬虫,需要先知道这些

    作者 | 叶庭云 来源 | 修炼Python 头图 | 下载于视觉中国 爬虫基本原理 1. URI 和 URL URI 的全称为 Uniform Resource Identifier,即统一资源标志 ...

  3. python爬虫入门教程--优雅的HTTP库requests(二)

    requests 实现了 HTTP 协议中绝大部分功能,它提供的功能包括 Keep-Alive.连接池.Cookie持久化.内容自动解压.HTTP代理.SSL认证等很多特性,下面这篇文章主要给大家介绍 ...

  4. python爬虫入门教程--快速理解HTTP协议(一)

    http协议是互联网里面最重要,最基础的协议之一,我们的爬虫需要经常和http协议打交道.下面这篇文章主要给大家介绍了关于python爬虫入门之快速理解HTTP协议的相关资料,文中介绍的非常详细,需要 ...

  5. python爬虫 - Urllib库及cookie的使用

    lz提示一点,python3中urllib包括了py2中的urllib+urllib2.[python2和python3的区别.转换及共存 - urllib] 怎样扒网页? 其实就是根据URL来获取它 ...

  6. python爬虫入门-python爬虫入门,8分钟就够了,最简单的基础教学!

    一.基础入门 1.1什么是爬虫 爬虫(spider,又网络爬虫),是指向网站/网络发起请求,获取资源后分析并提取有用数据的程序. 从技术层面来说就是 通过程序模拟浏览器请求站点的行为,把站点返回的HT ...

  7. python爬虫原理-python学习之python爬虫原理

    原标题:python学习之python爬虫原理 今天我们要向大家详细解说python爬虫原理,什么是python爬虫,python爬虫工作的基本流程是什么等内容,希望对这正在进行python爬虫学习的 ...

  8. python常用命令汇总-Python爬虫框架Scrapy常用命令总结

    本文实例讲述了Python爬虫框架Scrapy常用命令.分享给大家供大家参考,具体如下: 在Scrapy中,工具命令分为两种,一种为全局命令,一种为项目命令. 全局命令不需要依靠Scrapy项目就可以 ...

  9. python爬虫原理-python爬虫原理详细讲解

    原标题:python爬虫原理详细讲解 一 .爬虫是什么 1.什么是互联网? 互联网是由网络设备(网线,路由器,交换机,防火墙等等)和一台台计算机连接而成,像一张网一样. 2.互联网建立的目的?互联网的 ...

最新文章

  1. 【转】statfs获得硬盘使用情况 模拟linux命令 df
  2. Ubuntu搭建Spark运行环境
  3. SpringBoot多线程环境下,解决多个定时器冲突问题
  4. 通过蜜罐技术获取攻击者手机号、微信号【网络安全】
  5. SecurityUtil
  6. flex内根据id(string)获取对象
  7. #{}与${}的区别
  8. mysql innodb_data_file_path_MySQL修改innodb_data_file_path参数的一些注意事项
  9. 【华为云技术分享】昇腾AI处理器软件栈--总览
  10. 微信小程序云开发用户身份登录_你必须要掌握的微信小程序云开发
  11. python视频教程-中谷python中文视频教程(全38集)
  12. python读取组合惯导数据,并进行坐标转换到北东天、utm坐标系
  13. python xlwt修改excel_通过Python模块xlwt更改xls文件中的默认分页符
  14. HTTP基础知识你知道吗?
  15. 用ArcGIS对图像进行地理配准
  16. Ubuntu:Gparted,linux 的pqmagic分区魔术师
  17. 去不去 Google ?Ex-Googler 讲述他的职业选择
  18. 等额本息和等额本金实现步骤
  19. 地方征信平台第2讲:河北省征信
  20. ANSYS有限元仿真分析:边界非线性 (接触Contact)

热门文章

  1. 数学建模 # 论文撰写技巧
  2. 2021年京东Android岗面试必问,高级面试题+解析
  3. ue4 Curvature材质
  4. 插件 iOS开发之微信自动抢红包功能
  5. 大数据社区研讨会 (第一届)
  6. 姓名学软件测试机,‎App Store 上的“姓名学测算丶 三才五格姓名测试取名大师”...
  7. 电脑显示器桌面最佳颜色对眼睛最好的最科学的
  8. 创维电视安装第三方软件
  9. Java 并发编程中的死锁 ( Kotlin 语言讲解)
  10. 以太网OAM和CFM的基本概念、配置和应用