首页 > 其他 > 详细

socket爬取图片

时间:2020-02-07 16:47:36      阅读:51      评论:0      收藏:0      [点我收藏+]

  在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种方式。通过 socket 这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据。

  小编初学者,只能写一些例子。

  先写一个 服务端的例子:

  作为本地服务器,端口为8080,监听到请求后 发送hello world。

import socket


def fun1():
    # 创建服务端
    server = socket.socket()
    # 绑定IP 端口  启动本地的服务器
    server.bind((0.0.0.0, 8080))
    # 监听 有没有人访问
    server.listen(5)  # 连接数量
    # 接受
    conn, addr = server.accept()
    print(addr)
    # 接收数据
    conn.send(bhello world)
    # data = conn.recv(1024)

  下面创建一个客户端,用来发送请求。

def fun():
    # 客户端
    client = socket.socket()
    # 连接百度服务器
    client.connect((0.0.0.0, 8080))
    # 构造报文
    data = bGET / HTTP/1.0\r\nHost:www.baidu.com\r\n\r\n
    # 发送报文
    client.send(data)
    # 接受数据
    res = client.recv(1024)
    # print(res)
    temp = b‘‘
    while res:
        temp += res
        res = client.recv(4096)
    # 提取正文
    # print(re.findall(b‘\r\n\r\n(.*)‘, temp, re.S)[0])
    print(temp.decode())

fun()

客户端发送请求之后会,服务器会发送 ‘hello world’。

 

下面 写一个客户端访问 2717.com 获取图片数据。

 

import socket
import ssl
import re
# 1 找到图片的来源 从某个服务器下载的
# 2network 中的image项
# 3 https://t1.hddhhn.com/uploads/tu/201905/30/56dg.jpg


client1 = socket.socket()         # HTTP
client = ssl.wrap_socket(socket.socket())   # HTTPS 协议客户端
# 访问image url
# 构造报文
data = bGET /uploads/tu/201905/30/56dg.jpg HTTP/1.1\r\nHost: t1.hddhhn.com\r\n\r\n
# 请求服务器
client.connect((t1.hddhhn.com, 443))
client.send(data)
# 接受图片的数据
# res = client.recv(1024)
# print(res)
# 拿到二进制的数据
img_first_data = client.recv(1024)
length = int(re.findall(bContent-Length: (.*?)\r\n, img_first_data, re.S)[0])
print(length)
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 += temp
    else:
        break

    if len(img_data) >= length:   # 数据是否接受完成
        break
print(len(img_data), length)

with open(test.jpg, wb) as f:
    f.write(img_data)

 

socket爬取图片

原文:https://www.cnblogs.com/a-runner/p/12273127.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!