博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python socket向百度发送http长连接请求 并做搜索
阅读量:5816 次
发布时间:2019-06-18

本文共 1293 字,大约阅读时间需要 4 分钟。

分类:
382人阅读
(0)
[python]
  1. #coding=gbk  
  2. ''''' 
  3. socket 给百度发送http请求 
  4.   
  5. 连接成功后,发送http的get请求,所搜索功能 
  6.  
  7. '''  
  8. import socket  
  9. import sys  
  10. import time  
  11. if __name__=='__main__':  
  12.     #创建套接字  
  13.     try :  
  14.         sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
  15.     except socket.eorror,e:  
  16.         print 'socket false:%s'%e  
  17.     print 'socket ...'  
  18.      
  19.     #连接百度ip  
  20.     try :  
  21.         sock.connect(('220.181.111.148',80))  
  22.     except socket.error,e:  
  23.         print 'connect false %s'%e  
  24.         sock.close()  
  25.     print 'connect ...'  
  26.      
  27.     #发送百度首页面请求并且保持连接  
  28.     try :  
  29.         print 'send start...'  
  30.         str='GET / HTTP/1.1\r\nHost:www.baidu.com\r\nConnection:keep-alive\r\n\r\n'  
  31.         sock.send(str)  
  32.     except socket.eorror,e:  
  33.         print 'send false'  
  34.         sock.close()  
  35.      
  36.     data=''  
  37.     data = sock.recv(1024)  
  38.     while (1):       '''''如何判断数据接收完毕,在发送http 最前端, 
  39.                         包含发送数据文件大小属性Content-Length, 
  40.                         用字符匹配方式取得文件大小, 
  41.                         同过大小判断是否接收完毕。 
  42.                         '''  
  43.         print data  
  44.         beg = data.find('Content-Length:',0,len(data))  
  45.         end = data.find('Content-Type:',0,len(data))  
  46.         print beg  
  47.         print end  
  48.         if(beg == end):  
  49.             print 'connecting closed'  
  50.             break  
  51.         num = long(data[beg+16:end-2])  
  52.         print num  
  53.         nums = 0  
  54.         while (1):  
  55.             data=sock.recv(1024)  
  56.             print data  
  57.             nums +=len(data)  
  58.             if(nums >= num):  
  59.                 break  
  60.         word = raw_input('please input your word----->')  
  61.         str='''''GET /s?wd=''' + word + ''''' HTTP/1.1 
  62. Host:www.baidu.com 
  63. Connection: Keep-Alive 
  64.  
  65. '''  
  66.         print str  
  67.         sock.send(str)  
  68.         data = ''  
  69.         data = sock.recv(1024)     
  70.     sock.close()  
  71.     print data  

转载地址:http://vzmbx.baihongyu.com/

你可能感兴趣的文章
通过vb.net 和NPOI实现对excel的读操作
查看>>
TCP segmentation offload
查看>>
java数据类型
查看>>
数据结构——串的朴素模式和KMP匹配算法
查看>>
FreeMarker-Built-ins for strings
查看>>
验证DataGridView控件的数据输入
查看>>
POJ1033
查看>>
argparse - 命令行选项与参数解析(转)
查看>>
一维数组
查看>>
Linux学习笔记之三
查看>>
CentOS 6.6 FTP install
查看>>
图解Ajax工作原理
查看>>
oracle导入导出小记
查看>>
聊一聊log4j2配置文件log4j2.xml
查看>>
NeHe OpenGL教程 第七课:光照和键盘
查看>>
修改上一篇文章的node.js代码,支持默认页及支持中文
查看>>
Php实现版本比较接口
查看>>
删除设备和驱动器中软件图标
查看>>
第四章 TCP粘包/拆包问题的解决之道---4.1---
查看>>
html语言
查看>>