2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 爬虫项目七:Python对唯品会商品数据 评论数据的爬取

爬虫项目七:Python对唯品会商品数据 评论数据的爬取

时间:2024-02-07 15:20:36

相关推荐

爬虫项目七:Python对唯品会商品数据 评论数据的爬取

文章目录

前言一、商品数据1.分析页面2.分析url3.解析数据二、评论数据1.抓包2.分析url3.获取数据三、总结

前言

用Python爬取唯品会商品数据、评论数据


提示:以下是本篇文章正文内容,下面案例可供参考

一、商品数据

1.分析页面

我们进入唯品会官网,搜索商品观察页面,向下滑动页面 可以看到数据是动态加载的,对于动态加载数据 有两种办法一个是selenium一个是找接口,我是用的selenium

2.分析url

我们拿首页url看一看,keyword就是商品关键词 无容置疑,但是关键词后面的是什么呢?不知道

/suggest.php?keyword=%E5%B0%8F%E7%B1%B3&ff=235|12|1|1

我们点击第二页拿出url,看一看,看到多了一个参数page,哪个不知道的参数还是不知道

/suggest.php?keyword=%E5%B0%8F%E7%B1%B3&ff=235%7C12%7C1%7C1&page=2

我们大胆尝试一下,将keyword换成我们的中文,那个不知道的参数 直接去掉,最后的url

/suggest.php?keyword=小米&page=1

我们访问一下页面,看一下 是可以正常访问的,也就是说我们捏造的url是可以使用的

3.解析数据

我们上文知道了数据是动态加载的,并且分析了页面url

现在我们来操控selenium 访问url后 向下滚动 以此加载完整数据

bro.get(url)bro.execute_script('window.scrollTo(0, document.body.scrollHeight)') # 向下拉动一屏self.bro.execute_script('window.scrollTo(0, document.body.scrollHeight)') # 向下拉动一屏

加载完全数据后,就是解析数据,我们用的是Xpath

html=etree.HTML(bro.page_source)div_list=html.xpath('//section[@class="goods-list c-goods-list--normal"]/div')[1:]for div in div_list:sleep(0.5)dic={}try:dic["title"]=div.xpath('.//div[@class="c-goods-item__name c-goods-item__name--two-line"]/text()')[0]except:dic["title"]=""

注意div_list并不能全部遍历,因为数据中第一个div是空数据没有用 所以舍去

二、评论数据

1.抓包

我们利用chrome的抓包工具,很容易的就抓到了评论数据包

2.分析url

我们把它的url拿出来看一看,参数有很多,但其中有很多没有的参数,以及干扰的参数,需要我们剔除

/vips-mobile/rest/content/reputation/queryBySpuId_for_pc?callback=getCommentDataCbapp_name=shop_pcapp_version=4.0warehouse=VIP_BJfdc_area_id=101103105client=pcmobile_platform=1province_id=101103api_key=70f71280d5d547b2a7bb370a529aeea1user_id=mars_cid=1616550262960_63ea57943137d7888115c8b5935ca173wap_consumer=aspuId=7958247815467008brandId=1710612828page=1pageSize=10timestamp=1616575850000keyWordNlp=%E5%85%A8%E9%83%A8_=1616575837670

最后简化后的url,这几个参数缺一不可,我们可以利用requests 中params携带参数的方式,把这些参数带上

/vips-mobile/rest/content/reputation/queryBySpuId_for_pc?api_key=70f71280d5d547b2a7bb370a529aeea1spuId=1183397626621612032page=1pageSize=10

如果说我们直接用上面的url直接访问是得不到数据的,因为还有需要请求头,这里有一个坑,那就是cookie中的中文 需要删掉,cookie中会携带你自己的省份和城市 这个需要删除 要不然会报错

head = {"referer":"/","cookie":'vip_address=%7B%22pid%22%3A%22101103%22%2C%22cid%22%3A%22101103105%22%2C%22pname%22%3A%22%5Cu6cb3%5Cu5317%5Cu7701%22%2C%22cname%22%3A%22%5Cu90a2%5Cu53f0%5Cu5e02%22%7D; vip_provin550262960_63ea57943137d7888115c8b5935ca173',"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36"}

3.获取数据

我们分析好了url,现在来看数据,返回的是json数据我们进入转换一下,可以看到每一条评论数据都在data中

知道了这些就好写代码了

text=requests.get(url=url,headers=head,params=params).json()for da in text["data"]:dic={}try:dic["authorName"]=da["reputationUser"]["authorName"]except:dic["authorName"]=""

三、总结

唯品会的数据爬取很简单,都是常规操作,反爬不是不严重,但是数据奇少

如果说你不想写代码,想直接用爬虫,可以去公众号“阿虚学Python”中回复“唯品会”,获取本篇文章的完整代码,代码我已经设置过了,还是比较人性化的

好了,这篇文章已经结束了,如果你对爬虫感兴趣,可以关注我的主页 最近都在写一些爬虫案例,主页中已经更新了多个爬虫项目,谢谢大家的观看

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。