• python socket向百度发送http长连接请求 并做搜索


    python socket向百度发送http长连接请求 并做搜索 - 玩命写博客 - 博客频道 - CSDN.NET

    python socket向百度发送http长连接请求 并做搜索

    分类: python小毒蛇 382人阅读 评论(0) 收藏 举报
    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  
  • 相关阅读:
    Spring+Springmvc+SpringJDBC+freemaker+Logback配置
    POJ1942+找规律
    HDU2955+DP+背包变形
    HDU1201+简单题
    HDU1288+枚举
    面试经验(转)
    HDU1864+dp+类似背包
    PKU1659+havelhakimi定理
    算法复杂度分析(摘)
    HDU3047+并查集
  • 原文地址:https://www.cnblogs.com/lexus/p/2851387.html
Copyright © 2020-2023  润新知