生活随笔
收集整理的這篇文章主要介紹了
【转】 python socket向百度发送http长连接请求 并做搜索
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
http://hi.baidu.com/leejun_2005/blog/item/30fe9bd23a396c28960a1640.html
【轉】 ?python socket向百度發送http長連接請求 并做搜索2011-10-08 22:13轉載自?冷子健最終編輯?leejun_2005
? #coding=gbk ''' socket 給百度發送http請求
連接成功后,發送http的get請求,所搜索功能
''' import socket import sys import time if __name__=='__main__': ??? #創建套接字 ??? try : ??????? sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) ??? except socket.eorror,e: ??????? print 'socket false:%s'%e ??? print 'socket ...' ??? ??? #連接百度ip ??? try : ??????? sock.connect(('220.181.111.148',80)) ??? except socket.error,e: ??????? print 'connect false %s'%e ??????? sock.close() ??? print 'connect ...' ??? ??? #發送百度首頁面請求并且保持連接 ??? try : ??????? print 'send start...' ??????? str='GET / HTTP/1.1\r\nHost:www.baidu.com\r\nConnection:keep-alive\r\n\r\n' ??????? sock.send(str) ??? except socket.eorror,e: ??????? print 'send false' ??????? sock.close() ??? ??? data='' ??? data = sock.recv(1024) ??? while (1):?????? '''如何判斷數據接收完畢,在發送http 最前端, ??????????????????????? 包含發送數據文件大小屬性Content-Length, ??????????????????????? 用字符匹配方式取得文件大小, ??????????????????????? 同過大小判斷是否接收完畢。 ??????????????????????? ''' ??????? print data ??????? beg = data.find('Content-Length:',0,len(data)) ??????? end = data.find('Content-Type:',0,len(data)) ??????? print beg ??????? print end ??????? if(beg == end): ??????????? print 'connecting closed' ??????????? break ??????? num = long(data[beg+16:end-2]) ??????? print num ??????? nums = 0 ??????? while (1): ??????????? data=sock.recv(1024) ??????????? print data ??????????? nums +=len(data) ??????????? if(nums >= num): ??????????????? break ??????? word = raw_input('please input your word----->') ??????? str='''GET /s?wd=''' + word + ''' HTTP/1.1 Host: www.baidu.com Connection: Keep-Alive
''' ??????? print str ??????? sock.send(str) ??????? data = '' ??????? data = sock.recv(1024)??? ??? sock.close() ??? print data
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++用python搜索google from:http://ipython.iteye.com/blog/336304 如果直接用urllib.urlopen(url)會返回一個forbidden的,其實加一個add_header就可以了. 給出一個關鍵字 word 就會返回搜索結果了。 ??? import urllib ? ??? import urllib2 ? ??? def search(word): ? ???? url=r'http://www.google.cn/search?hl=zh-CN&newwindow=1&q='+word+"&start=10&sa=N" ? ???? req=urllib2.Request(url) ? ???? req.add_header("User-Agent",'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322)') ? ???? opener=urllib2.build_opener() ? ???? text=opener.open(req).read() ? ???? return text? python通過socket查詢whois腳本 from:http://www.oschina.net/code/snippet_54100_2870import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(("whois.networksolutions.com", 43)) s.send("sina.com.cn \r\n") while 1: ??????? v = s.recv(1024) ??????? if v == "" or v == None: ??????????????? break ??????? print v s.close()
?
?
?
基于Apache Mina實現的TCP長連接和短連接實例 http://blog.csdn.net/peterwanghao/article/details/6900523
與50位技術專家面對面 20年技術見證,附贈技術全景圖
總結
以上是生活随笔 為你收集整理的【转】 python socket向百度发送http长连接请求 并做搜索 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。