歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Python socket向百度發送http長連接請求 並做搜索

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

日期:2017/3/1 10:50:50   编辑:Linux編程

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

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