生活随笔
收集整理的這篇文章主要介紹了
【转】 python socket向百度发送http长连接请求 并做搜索
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
http://hi.baidu.com/leejun_2005/blog/item/30fe9bd23a396c28960a1640.html
【轉(zhuǎn)】 ?python socket向百度發(fā)送http長(zhǎng)連接請(qǐng)求 并做搜索2011-10-08 22:13轉(zhuǎn)載自?冷子健最終編輯?leejun_2005
? #coding=gbk ''' socket 給百度發(fā)送http請(qǐng)求
連接成功后,發(fā)送http的get請(qǐng)求,所搜索功能
''' import socket import sys import time if __name__=='__main__': ??? #創(chuàng)建套接字 ??? 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 ...' ??? ??? #發(fā)送百度首頁(yè)面請(qǐng)求并且保持連接 ??? 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):?????? '''如何判斷數(shù)據(jù)接收完畢,在發(fā)送http 最前端, ??????????????????????? 包含發(fā)送數(shù)據(jù)文件大小屬性Content-Length, ??????????????????????? 用字符匹配方式取得文件大小, ??????????????????????? 同過(guò)大小判斷是否接收完畢。 ??????????????????????? ''' ??????? 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)會(huì)返回一個(gè)forbidden的,其實(shí)加一個(gè)add_header就可以了. 給出一個(gè)關(guān)鍵字 word 就會(huì)返回搜索結(jié)果了。 ??? 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通過(guò)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實(shí)現(xiàn)的TCP長(zhǎng)連接和短連接實(shí)例 http://blog.csdn.net/peterwanghao/article/details/6900523
與50位技術(shù)專家面對(duì)面 20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖
總結(jié)
以上是生活随笔 為你收集整理的【转】 python socket向百度发送http长连接请求 并做搜索 的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔 網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔 推薦給好友。