一个关于淘宝评论,从输入指定商品信息,直接得到评论+图片的一次经验

这两天写了一个关于淘宝评论的爬虫,期间遇到了一些问题想和大家分享一下,顺便巩固。

首先,随意搜索一个商品,进入页面,找到评论信息。应该先打开F12,在上面发现(https://rate.tmall.com/list_detail_rate.htm?itemId=566951682692&spuId=950250112&sellerId=3848240093&order=3&currentPage=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&ltime=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&ltime=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

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值