這篇文章大概一個(gè)月前就想寫(xiě)了梗夸,可是中間各種懶癌發(fā)作,追趕項(xiàng)目号醉,打游戲反症,健身,踢球畔派,撩妹铅碍。直到今天,閑下來(lái)了父虑,才想起來(lái)要寫(xiě)该酗。
9月份有個(gè)朋友給我發(fā)來(lái)這網(wǎng)站,問(wèn)我怎么爬士嚎。我經(jīng)驗(yàn)淺薄呜魄,第一次看到這種類(lèi)型的網(wǎng)站。它不同于過(guò)去我爬取的那些網(wǎng)站莱衩,它是通過(guò)websocket協(xié)議來(lái)獲取數(shù)據(jù)的爵嗅。也就是說(shuō)過(guò)去我的那些get啊post的方法,在這里統(tǒng)統(tǒng)沒(méi)用笨蚁。http://viewapi.kxt.com/
大家可以進(jìn)去感受一下
遇到事情第一件事就是去google睹晒,不過(guò)這里說(shuō)句題外話(huà)。我經(jīng)常在群里和一些新人朋友說(shuō)括细,你要想成為一個(gè)優(yōu)秀的程序猿(裝逼臉)伪很,必須得會(huì)英文。因?yàn)槟阌龅降目臃艿ィ瑒e人都遇到過(guò)锉试,你只要去stackoverflow那里搜一下,很快就能找到你要的答案览濒,你只要看懂上面的英文就好了呆盖。另外拖云,最新的那些文檔也都是英文的,漢化的速度很難跟上更新的速度应又。不過(guò)不會(huì)英文也能把問(wèn)題解決就是了宙项,因?yàn)槲覀冞€有人工智能!找個(gè)群株扛,找個(gè)論壇尤筐,發(fā)條信息“在線(xiàn)等,急席里!”叔磷,這樣就可以等待人工智能來(lái)幫你排憂(yōu)解難。
我在google上找到了一些信息和可使用的包
通過(guò)模仿它的代碼奖磁,我跑了一下
毫無(wú)意外改基,失敗了!咖为!
然后我懶癌發(fā)作秕狰,找了個(gè)人工智能,直接扔給他去研究躁染。
他自己重寫(xiě)了一個(gè)爬蟲(chóng)鸣哀,再跑!
毫無(wú)意外吞彤,失敗了我衬!
然后我突然發(fā)現(xiàn)network里的response是沒(méi)有任何數(shù)據(jù)的,這不行饰恕!
這里是用的火狐挠羔,換谷歌看看
YO nigger!有數(shù)據(jù)了埋嵌,而且我們發(fā)現(xiàn)了些有意思的東西對(duì)不對(duì)F萍印!看我的紅箭頭1⑧隆范舀!然后一道靈光打進(jìn)了我的天靈蓋!A俗铩锭环!突然想到了些什么!2磁骸L锩辍!眼前一幕幕畫(huà)面快速閃過(guò)吱七,最終定格在汽久!
這里!S徊汀>按肌!吝岭!
沒(méi)錯(cuò)H怠!4芄堋散劫!這時(shí)候感覺(jué)自己就像柯南一樣!幕帆!我終于明白了;癫!J常熙!
然后我就跟人工智能說(shuō)!
然后毫無(wú)意外的<钭隆B阄馈!纽竣!
成功了D够摺!r寻薄聋袋!
最后把代碼貼出來(lái)了,重要的事情說(shuō)三遍语盈,代碼作者是朝陽(yáng)-皮皮警(瞎瞎)舱馅,代碼作者是朝陽(yáng)-皮皮警(瞎瞎),代碼作者是朝陽(yáng)-皮皮警(瞎瞎)刀荒!
作者:朝陽(yáng)-皮皮警(瞎瞎)
import websocket
# import thread
import thread
import time
import pprint
def on_message(ws, message):
print(1)
pprint.pprint(message)
# print(ws.recv())
def on_error(ws, error):
print(2)
print(error)
def on_close(ws):
print("### closed ###")
def on_open(ws):
def run(*args):
# for i in range(3):
# time.sleep(1)
# ws.send("Hello %d" % i)
ws.send('{"cmd":"login","number":100,"codes":["CJRL","KUAIXUN"]}')
print('yoyoyo')
time.sleep(5)
ws.close()
print("thread terminating...")
thread.start_new_thread(run, ())
headers={'Accept-Encoding:gzip, deflate, sdch','Accept-Language:zh-CN,zh;q=0.8',
'Cache-Control:no-cache','Host:120.27.195.4:9502',
'Origin:http://viewapi.kxt.com','Pragma:no-cache',
'Sec-WebSocket-Extensions:permessage-deflate; client_max_window_bits',
'User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36'
}
if __name__ == "__main__":
websocket.enableTrace(True)
url='ws://118.31.236.175:9502/?token=sHdy2IF5eqh9daXYf4Goypl6z6eTh3xpgYuF2oK1dpaxd3aTgXiwmop4ndWLkKHWfp3SnJp8hWOXe6DGf5Ks2cegnc2YZ3-okYSZ05eBhtaOZZyngp2qnJekhteVlIfPu2V3zI59gpp_mq3Zf42C1oR3yqiIiJaogYuB2nzPZaA'
ws = websocket.WebSocketApp(url,
on_message = on_message,
on_error = on_error,
on_close = on_close,
header=headers)
ws.on_open = on_open
ws.run_forever()