这篇文章大概一个月前就想写了,可是中间各种懒癌发作,追赶项目,打游戏,健身,踢球,撩妹。直到今天,闲下来了,才想起来要写。
9月份有个朋友给我发来这网站,问我怎么爬。我经验浅薄,第一次看到这种类型的网站。它不同于过去我爬取的那些网站,它是通过websocket协议来获取数据的。也就是说过去我的那些get啊post的方法,在这里统统没用。http://viewapi.kxt.com/
大家可以进去感受一下
遇到事情第一件事就是去google,不过这里说句题外话。我经常在群里和一些新人朋友说,你要想成为一个优秀的程序猿(装逼脸),必须得会英文。因为你遇到的坑,别人都遇到过,你只要去stackoverflow那里搜一下,很快就能找到你要的答案,你只要看懂上面的英文就好了。另外,最新的那些文档也都是英文的,汉化的速度很难跟上更新的速度。不过不会英文也能把问题解决就是了,因为我们还有人工智能!找个群,找个论坛,发条信息“在线等,急!”,这样就可以等待人工智能来帮你排忧解难。
我在google上找到了一些信息和可使用的包
通过模仿它的代码,我跑了一下
毫无意外,失败了!!
然后我懒癌发作,找了个人工智能,直接扔给他去研究。
他自己重写了一个爬虫,再跑!
毫无意外,失败了!
然后我突然发现network里的response是没有任何数据的,这不行!
这里是用的火狐,换谷歌看看
YO nigger!有数据了,而且我们发现了些有意思的东西对不对!!看我的红箭头!!然后一道灵光打进了我的天灵盖!!!突然想到了些什么!!!!眼前一幕幕画面快速闪过,最终定格在!
这里!!!!!
没错!!!!这时候感觉自己就像柯南一样!!我终于明白了!!!!
然后我就跟人工智能说!
然后毫无意外的!!!!
成功了!!!!
最后把代码贴出来了,重要的事情说三遍,代码作者是朝阳-皮皮警(瞎瞎),代码作者是朝阳-皮皮警(瞎瞎),代码作者是朝阳-皮皮警(瞎瞎)!
作者:朝阳-皮皮警(瞎瞎)
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()