http_client请求baidu报错

来源:4-12 正确认识http协议 -2

慕后端9154177

2020-12-21

图片描述
返回值是 HTTP/1.1 400 Bad Request
加cookie也是报同样的错

写回答

2回答

bobby

2020-12-24

import socket
import time

# 访问网站
ACCESS_URL = 'www.baidu.com'
# 端口
ACCESS_PORT = 80


# socket阻塞请求网站
def blocking(pn):
    sock = socket.socket()
    sock.connect((ACCESS_URL, ACCESS_PORT))  # 连接网站 ,发出一个HTTP请求
    request_url = 'GET {} HTTP/1.0\r\nHost: www.baidu.com\r\n\r\n'.format('/s?wd={}'.format(pn))
    sock.send(request_url.encode())
    response = b''
    chunk = sock.recv(1024)
    while chunk:  # 循环接收数据,因为一次接收不完整
        response += chunk
        chunk = sock.recv(1024)
    # print(response.decode())
    return response


def block_way():
    for i in range(3):
        blocking(i)


if __name__ == '__main__':
    start = time.time()
    block_way()
    print('请求3次页面耗时{}'.format(time.time() - start))


0
1
慕后端9154177
非常感谢!
2020-12-24
共1条回复

bobby

2020-12-22

你的代码贴一下 我本地运行试试

0
1
慕后端9154177
import socket http_client = socket.socket() http_client.connect(("www.baidu.com",80)) http_client.send("""GET /HTTP/1.1 Connection: keep-alive User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 """.encode("utf8")) data = b"" while True: tmp = http_client.recv(1024) if tmp: data += tmp else: break print(data.decode("utf8")) :麻烦了
2020-12-22
共1条回复

Python爬虫工程师实战 大数据时代必备

慕课网严选精品教程,高质量内容+服务!

2378 学习 · 1158 问题

查看课程