歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Python socket向百度發送http長連接請求 並做搜索

Python socket向百度發送http長連接請求 並做搜索

  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  
Copyright © Linux教程網 All Rights Reserved