一个关于淘宝评论,从输入指定商品信息,直接得到评论+图片的一次经验
這兩天寫了一個關于淘寶評論的爬蟲,期間遇到了一些問題想和大家分享一下,順便鞏固。
首先,隨意搜索一個商品,進入頁面,找到評論信息。應該先打開F12,在上面發現(https://rate.tmall.com/list_detail_rate.htm?itemId=566951682692&spuId=950250112&sellerId=3848240093&order=3¤tPage=2&append=0&content=1&tagId=&posi=&picture=&groupId=&ua=098%23E1hvB9vPvBvvUvCkvvvvvjiPRFFZzjlPRFqv0j3mPmPZ1jYPP2LOlj3nPLSW1j3vRphvCvvvvvmrvpvEvvQ6kBGNvj3RdphvmpvWjgVduQvhaQyCvhQvfk9vCsN%2BFOcn%2B3Csowex6aZtn0vHfwLpaXTAVAdpa4AU%2B2XkLuc6gRvweeQ4S47B9CkaU6bnDO2pjLyDZacEKOmAdcpiYWL6YETAkphvC9QvvOCsBuyCvv9vvUv0mvKwAdyCvm9vvvvvphvvvvvvvQCvpvCqvvv2vhCv2UhvvvWvphvWgvvvvQavpvQXvphvC9v9vvCvpvGCvvpvvPMMRphvCvvvvvm5vpvhvvmv9IwCvvpvCvvvdphvmpvWep5WsvCIzT6Cvvyv2hJEBZZv9WRCvpvZz2szf8NNznswUvafYgLwkaAv7Ih%3D&needFold=0&_ksTS=1564576271028_792&callback=jsonp793)
這樣的網址,不得不說,這網址很ok,
反爬做的也很細節,但是大爬蟲是無所不能的。首先還是先去分析了一下它的網頁結構,發現了幾個變量,itemd、spuid、currentpage.,處理最后一個是評論的頁數可以直觀的發現外,前面兩個,應該會在此評論的網頁上有,那么就先把他們放一放,后面的是處理后面的變量,后面的變量先使用,請求頭去處理。比如。這樣:
headers={'Accept-Language':'zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3','Host':'rate.tmall.com','Cookie':'isg=BDw8RVflTfCiNnhmBZ3jwLF6DtruNeBfzLrRQBa8BCcB4d1rPkRK74YXwcs8shi3; l=cBrWhFtlvdsWU9lMBOfChurza77O2IO4zkPzaNbMiICPOLfX7LPCWZ3htr8WCn1Ap6iBR3Jck4zJBeYBqZYRCSBNa6Fy_; cna=23hWFQfTdCsCATrz+sOzh+ZX; lid=tb20629484; enc=9AAJmgXokpH77%2BIbbSZKZOuLTM%2FQmcrbcZBPbAI37TmibwO22hwnBSArbfWZPPecKlv2jonWWtenkO5ndh9AnA%3D%3D; otherx=e%3D1%26p%3D*%26s%3D0%26c%3D0%26f%3D0%26g%3D0%26t%3D0; hng=CN%7Czh-CN%7CCNY%7C156; t=2bb88e196c8b03b8c67b85462f0a2f19; uc3=vt3=F8dBy3%2F51QbVYkH%2FzbE%3D&id2=UNcPuP6peMJwqg%3D%3D&nk2=F5RHoWcR1mLQ4g%3D%3D&lg2=V32FPkk%2Fw0dUvg%3D%3D; tracknick=tb20629484; lgc=tb20629484; _tb_token_=767b51464eee4; cookie2=1dcf8c6acc4158f822d1d380f2bad41a; OZ_SI_2061=sTime=1564451313&sIndex=21; OZ_1U_2061=vid=vd3fa1f20decc3.0&ctime=1564455166<ime=1564455161; OZ_1Y_2061=erefer=https%3A//s.taobao.com/list%3Fq%3D%25E4%25B8%2589%25E5%258F%25AA%25E6%259D%25BE%25E9%25BC%25A0%26cat%3D16%26style%3Dgrid%26seller_type%3Dtaobao%26spm%3Da217f.1257546.1000187.1&eurl=https%3A//detail.tmall.com/item.htm%3Fspm%3Da219r.lm874.14.102.78ba3422b0cofM%26id%3D594832940012%26ns%3D1%26abbucket%3D18&etime=1564455153&ctime=1564455166<ime=1564455161&compid=2061; x5sec=7b22726174656d616e616765723b32223a226132306236616161343264653337366266636436613665663031656265646238434f76692f756b46454e6d4f7a49724e774f62486841453d227d','Referer':'https://detail.tmall.com/item.htm?spm=a219r.lm874.14.102.78ba3422b0cofM&id=594832940012&ns=1&abbucket=18','User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36',}也就可以破解后面一大串的內容了,但是,剛開始以為就可以這樣獲得評論的json數據了,但是始終都是不行,登不上去,后來發現,
? _ksTS=1564576271028_792&callback=jsonp793?這幾個數據,好生不老實,一直都在變換中,查了很多資料了,發現原來它返回來的數據是一個時間戳,數據大概應該返回的是:156457627.1028792,這已經很相近的對吧,確實是這樣,然后便會發現jsonp后的數據是'_'之后+1.這樣便會不停的變換了,怎樣處理呢,一個算法問題,也就不細說了。
現在就是萬事具備,只欠登陸了,配上
pagram={'currentPage':i+1,'_ksTS':'%s'%(t),'callback':'jsonp%s'%(int(ran_num)+1)}用前面的url="https://rate.tmall.com/list_detail_rate.htmitemId=566951682692&spuId=950250112&sellerId=3848240093&order=3"
配合在一起就可以進行,登陸嘍,雪白雪白的json就等著你去處理了,
但是來,json也是讓我操碎了心,怎樣處理呢?
response=requests.get(url,headers=headers,params=pagram) data=response.content.decode()進坑是因為,我解析了這個網頁,加了個text
讓我絕望至極,怎么提取不出數據,
找到毛病就快了
用這個
dict_json=json.loads(data1) data2=dict_json['rateDetail']['rateList']也就找到評論所在的json了
剩下了用循換取做,找評論,也就可以提取出來了。
這樣,整個爬蟲的一大部分就做完了。
那么還記得我們還有變量沒處理嗎,就是怎樣進入到具體的商品頁。逐層找到網頁進行分析。
等到寫到搜索爬蟲的時候問題又來了。
頁面全是js加密,一臉懵逼。
翻閱博客,查到要要用庫js2xml這個神器,進行處理了
demo=r.content soup=BeautifulSoup(demo,'lxml') src=soup.select('head script')[7].string src_text = js2xml.parse(src, encoding='utf-8', debug=False)src_tree = js2xml.pretty_print(src_text) print(src_tree)這樣便可以找到了加密網頁的具體信息了。
嘿嘿
完成!
想要源碼的可以私信我!
關鍵字到評論+圖片
效果圖
http://140.143.223.4/index/Collection/pl?dijiye=1&spid=562395261802http://140.143.223.4/index/Collection/pl?dijiye=1&spid=562395261802
?
總結
以上是生活随笔為你收集整理的一个关于淘宝评论,从输入指定商品信息,直接得到评论+图片的一次经验的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [实践系列]Promises/A+规范
- 下一篇: 如何远程连接Windows和linux服