python调用http方法_利用python的socket发送http(s)请求方法示例

本文介绍了如何在Python中使用socket库发送HTTP和HTTPS请求,详细讲解了遇到的400 Bad Request错误及解决方法,以及HTTP与HTTPS的区别,并提供了相关代码示例。
摘要由CSDN通过智能技术生成

前言

这是个在写计算机网络课设的时候碰到的问题,卡了我一天,所以总结一下。

其实在之前就有用requests写过python爬虫,但是计算机网络要求更底层的实现,刚好我看到了[这篇文章]1结果发现他就是用socket来实现的请求,所以就学习了。

本来也觉得应该不难,毕竟就是建立tcp连接。

原网站的例子如下: def fetch(url):

sock = socket.socket() # 建立socket

sock.connect(('xkcd.com', 80)) # 远程连接

request = 'GET {} HTTP/1.0\r\nHost: xkcd.com\r\n\r\n'.format(url) # 构建请求

sock.send(request.encode('ascii')) # 向socket发送数据

response = b''

chunk = sock.recv(4096) # 从socket接收数据

while chunk:

response += chunk

chunk = sock.recv(4096)

# Page is now downloaded.

links = parse_links(response)

q.add(links)

我选择爬取的网站是链家,当然也看了很多其他例子,还用fiddler抓包,把headers整个放了上去,首先是参考了这个文章:https://segmentfault.com/a/1190000005126160 ,该文章介绍到:

Python通过socket发送http请求

我们以访问百度主页为案例,使用socket发送http请求。 import socket

s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

s.connect(('www.baidu.com',80))

s.send('''GET https://www.baidu.com/ HTTP/1.1

Host: www.baidu.com

Connection: keep-alive

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

Upgrade-Inse

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值