文章目录

  • 前言
  • 一、商品数据
    • 1.分析url
    • 2.登录账号
    • 3.解析数据
    • 4.模拟滑动滑块
  • 二、评论数据
    • 1.分析url
    • 2.解析数据

前言

天猫商城商品数据、评论数据爬取


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

一、商品数据

爬取天猫商城商品数据,观察页面没有动态加载,但是页面会是不是出现登录界面,所以选择selenium登录的方式爬取商品数据,整个爬虫的过程中需要mitmdump拦截伪装,详情可看我主页文章淘宝
https://blog.csdn.net/weixin_47163937/article/details/114998786

1.分析url

我们看一下第一页的url一共有5个参数,其中肯定有无用参数,根据以往的爬虫经验可以确定的是q表示的是商品关键字

https://list.tmall.com/search_product.htm?
q=%D0%A1%C3%D7
&type=p
&vmarket=
&spm=875.7931836%2FB.a2227oh.d100
&from=mallfp..pc_1_searchbutton

再看第二页的url,多了几个参数,这几个参数又没用呢?反复试试就好

https://list.tmall.com/search_product.htm?
spm=a220m.1000858.0.0.6a205623Xb1F3l
&s=60
&q=%D0%A1%C3%D7
&sort=s
&style=g
&from=mallfp..pc_1_searchbutton
&smAreaId=130500
&type=pc#J_Filter

最后剩下的有用参数就只有两个,一个是表示关键字的q还有一个s,从下面的规律来看,s就是表示商品个数,从第几个商品个数开始显示,规律就是每下页s+60 第一页为0 即:s=(page-1)60,q表示关键字可以直接换成中文*

第一页:https://list.tmall.com/search_product.htm?&s=0&q=%D0%A1%C3%D7
第二页:https://list.tmall.com/search_product.htm?&s=60&q=%D0%A1%C3%D7
第三页:https://list.tmall.com/search_product.htm?&s=120&q=%D0%A1%C3%D7

最终的url模板

https://list.tmall.com/search_product.htm?&s=(page-1)*60&q=商品关键字

2.登录账号

如果看过我之前写的淘宝的爬虫登录我想这就不用说了,可以看下面的连接文章

https://blog.csdn.net/weixin_47163937/article/details/114998786

使用扫码登录手机淘宝确认的方式实现登录,其中整个爬虫的过程中需要mitmdump拦截伪装,CMD进入文件夹 调用mitmdump -s HttpProxy.py -p 9000
上面链接的文章已经详细说明

通过selenium访问页面出现登录页面强制休眠40秒,手机扫码登录

3.解析数据

扫码登录进入页面之后,我们来打印一下一共有多少页数,这样可以了解我们要获取多少页

通过xpath定位获取文本,再利用正则表达式提取出页数

page = self.bro.find_element_by_xpath('//form[@name="filterPageForm"]').text
page=int(re.findall('(\d+)',page)[0])

根据页数我们可以制作循环,利用input交互式翻页

self.start_page=input("请输入起始页数:")
self.end_page=input("请输入结束页数:")
for i in range(int(self.start_page),int(self.end_page)+1):self.bro.get("https://list.tmall.com/search_product.htm?s=%d&q=%s"%((i-1)*60,self.keyword))

进入商品页面,右键检查元素,可以看到,每一个商品数据都在div标签下

根据这些,可以利用Xpath定位来获取数据

代码如下(示例):

html=etree.HTML(self.bro.page_source)
div_list=html.xpath('//div[@id="J_ItemList"]/div')
for div in div_list:dic={}try:dic["title"]=div.xpath('.//p[@class="productTitle"]/a[1]/@title')[0]except:dic["title"]=""try:dic["price"]=div.xpath('.//p[@class="productPrice"]/em[1]/@title')[0]except:dic["price"]=""try:dic["sales"]=re.findall('(\d+)',div.xpath('.//p[@class="productStatus"]/span[1]/em[1]/text()')[0])[0]except:dic["sales"]=""print(dic)with open(".//tmall.csv", "a+", encoding="utf-8") as f:writer = csv.DictWriter(f, dic.keys())writer.writerow(dic)

4.模拟滑动滑块

当你完成扫码登录时有可能出现滑块,需要直接手动滑走,我试过用selenium滑动 别检测了 不可以,我把滑块代码放下面 有兴趣的自己研究

def Page_Slider_Slide(self):Slider = self.bro.find_element_by_xpath('//*[@id="nc_1_n1z"]')# 动作链action = ActionChains(self.bro)# 点击长按指定的标签action.click_and_hold(Slider).perform()action.move_by_offset(xoffset=260, yoffset=0).perform()action.release()

效果

二、评论数据

我们通过chrome的抓包工具可以 利用搜索功能找到评论数据包

1.分析url

https://rate.tmall.com/list_detail_rate.htm?
itemId=637718172384
&spuId=1974781701
&sellerId=2024314280
&order=3
&currentPage=2
&append=0
&content=1
&tagId=
&posi=
&picture=
&groupId=
&ua=098%23E1hvQ9v4vfIvUvCkvvvvvjiWPLdOljDRP2FpsjthPmPOAj3vPFcwQjiPn2cZsjtn9vhvHHiwrTCozHi47qBTt1Q471Y4NYGBdvhvmpvC8QPHvv2ldTQCvvyvvBGz49vvG6u%2BvpvEvvHOcRIvvVIb9vhv2HiwRM%2FSjHi473qPzTQCvCZV9NFqq9vvOUZDjlRDKfZ3%2BbydLrVvvpvZ7DSGMl2w7Di4fSS5MvrfwxdLz6k%2BvpvEvvHZZHyvvveNi9hvCvvvpZpgvpvhvvCvpvgCvvpvvPMMvvhvC9mvphvvvv9CvhQCTaNcjXZTKFyzOvxr1EKK5u6aWXxreEAK53rV%2BE7reEuKNZ0QD40Oe4tYLfmD5iyfezBO0f06W3vOJ1kHsfUpV36AxYjxRLwp%2B3%2BFkvhvC9hvpyP9t89Cvv9vvhhtIp3n7d9Cvm9vvhCvvvvvvvvvByOvvvHivvCVB9vv9LvvvhXVvvmCjvvvByOvvUhw39hvCvmvphm%2BvpvEvUhE2aOvvUn4dvhvmpmvlnC%2FvvmEU29CvvpvvhCvdvhvmpmCfeiwvvm8%2BTQCvChhvJSSu9vvgwODj6KHkoVQRL9CvvpvvhCvdvhvmpmCZHRNvvCQZOvCvv14cx2zKn147DIqQnGgvpvhvvCvpv%3D%3D&needFold=0&_ksTS=1616652793241_1231
&callback=jsonp1232

经过筛选最终剩余有用的参数

https://rate.tmall.com/list_detail_rate.htm?
itemId=638745107951
&sellerId=268451883
&order=3
&currentPage=2 ==>页数

2.解析数据

请求头应包含referer、cookie、user-agent

head={"referer":"https://detail.tmall.com/item.htm?spm=a220m.1000858.1000725.19.7fae1259B86Ot8&id=638745107951&skuId=4750693590803&areaId=130100&user_id=268451883&cat_id=2&is_b=1&rn=e8a3583611f939545fa4eff7ad5d1e04","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","cookie":"hng=CN|zh-CN|CNY|156; lid=tb850619367; enc=XWYuCFHvbY6LVFJ8O82ekXp7zn+BpC5PqaDfnxPqRhFZ3W/9+P5VfZz/dkT7I/bzeQzh30BWA80E8sSw7Zc/9Y6soPAlKMR2SftG72vIPXM=;"}

我们利用url并且添加请求头信息返回的数据中有干扰数据,其中开头的jsonp128就是

jsonp128({"rateDetail":{"rateCount":{"total":742,"shop":0,"picNum":431,"used":49}

我们将其返回数据字符串剔除掉无用数据,再将其转换为json数据

 text=requests.get(url=url,headers=head,params=params).texttext=text.replace("jsonp128","").replace("(","").replace(")","")data=json.loads(text)

我们将数据放到json.cn中观察,可以看到所以的评论数据数据在rateList中

代码如下(示例):

for da in data["rateDetail"]["rateList"]:dic={}try:dic["displayUserNick"]=da["displayUserNick"]except:dic["displayUserNick"]=""try:dic["auctionSku"]=da["auctionSku"]except:dic["auctionSku"]=""with open(".//comment.csv", "a", encoding="utf-8") as f:writer = csv.DictWriter(f, dic.keys())writer.writerow(dic)

效果

完整代码在公众号”阿虚学Python“回复”天猫“获取

谢谢大家的观看

爬虫项目八:Python对天猫商品数据、评论数据爬取相关推荐

  1. 【爬虫】【python】微信公众号信息的爬取(以南中医青年为例)

    微信公众号信息的爬取 1.Selenium库来获取源码 打开搜狗微信,在搜索框中输入"南中医青年",这里就搜索到了南中医青年发布的公众号文章结果 但是在浏览器中复制浏览器地址后再度 ...

  2. 淘宝、天猫商品详情最低价skuid爬取、各类sku信息调取

    以下是行业内了解到的一些情况,本帖只展示部分代码,需要全部参数以及更多API调试请移步注册API账号 http://console.open.onebound.cn/console/?i=Rookie ...

  3. python爬虫(6)——获取天猫商品评论信息

    本文以读取商品评论的json数据的方式来获取天猫商品评论,本文所采用的方法借鉴自知乎某大神(https://www.zhihu.com/question/36524413),可以非常方便地爬取特定商品 ...

  4. python如何爬虫网页数据-如何轻松爬取网页数据?

    一.引言 在实际工作中,难免会遇到从网页爬取数据信息的需求,如:从微软官网上爬取最新发布的系统版本.很明显这是个网页爬虫的工作,所谓网页爬虫,就是需要模拟浏览器,向网络服务器发送请求以便将网络资源从网 ...

  5. python爬取虎扑评论_Python爬取NBA虎扑球员数据

    虎扑是一个认真而有趣的社区,每天有众多JRs在虎扑分享自己对篮球.足球.游戏电竞.运动装备.影视.汽车.数码.情感等一切人和事的见解,热闹.真实.有温度. 受害者地址 https://nba.hupu ...

  6. 知乎爬虫(scrapy默认配置下单机1小时可爬取60多万条数据)

    知乎爬虫(scrapy默认配置下单机1小时可爬取60多万条数据) 版本:1.0 作者: AlexTan CSDN: http://blog.csdn.net/alextan_ e-mail: alex ...

  7. python 闲鱼消息_GitHub - ygq556/XianyuSdd: 爬取闲鱼某关键字实时信息,将最新的发送到钉钉群聊。更多我们共同开发的项目(咸鱼反爬更新,只能作为学习使用)...

    XianyuSdd 爬取闲鱼某关键字实时信息,将最新的发送到钉钉群聊 写了一个异步爬取闲鱼商品最新信息推送到钉钉 图中的需求有两个部分值得学习. 多线程爬取最新关键字的商品信息 python对钉钉的操 ...

  8. Python爬虫学习第三章-4.3-使用xpath解析爬取全国城市名称

    Python爬虫学习第三章-4.3-使用xpath解析爬取全国城市名称   这一节主要是使用xpath解析爬取全国城市名称 这里使用的网址是:空气质量历史数据查询   这一个案例体现的点主要是xpat ...

  9. 美团商品各项数据(1.爬取)

    美团商品各项数据(1.爬取) 程序 import requests import time import json import pandas as pd 这里只需要这四个库,pandas主要作保存数 ...

  10. 零基础入门python爬虫之《青春有你2》选手信息爬取

    零基础入门python爬虫之<青春有你2>选手信息爬取 完成<青春有你2>选手图片爬取,生成选手图片的绝对路径并输出,统计爬取的图片总数量.使用工具:requests模块.Be ...

最新文章

  1. MacOS 终于可以完美使用 Podman 了!
  2. 苹果在GitHub上正式开源iOS内核源码
  3. 创建分区表+分区表的分类+创建散列分区表+查看散列分区表分区中的数据+创建列表分区表+查看列表分区表分区中的数据...
  4. org.apache.commons.lang.StringUtils
  5. 数据库优化:8 种常见的SQL错误用法
  6. 导入hbase_HBase基础学习之bulkload了解
  7. Linux 命令(10)—— split 命令
  8. @OneToOne or @ManyToOne on references an unknown entity:
  9. java 1.5.0 gcj_java gcj调试
  10. 怎么用软件测试相似相似度,文档相似性检测工具
  11. 【知识图谱】阿里巴巴电商知识图谱
  12. pta第六章错题函数and编程
  13. Hadoop 简介 及 安装
  14. android服务无法启动,Android服务无法启动(Android service would't start)
  15. Java Json格式化工具
  16. 对当前网上公开的聊天对话机器人语料整理
  17. 菜鸟后端程序员花了两天半模仿写出了赶集网主页,速来围观!
  18. 格式化什么意思?格式化了数据还能恢复吗?
  19. 通过LRC文件分析出一首歌曲的速度
  20. 肖特基二极管的反向恢复过程

热门文章

  1. Web阶段--Servlet基础知识点
  2. 300000000元!短融网获C轮融资,CEO王坤透露了几点信息
  3. matlab 与eyelink,EyeLink眼动追踪系统
  4. Linux显示瞬间进程动态的命令ps
  5. 春季高考计算机专业专业分值,春季高考考哪些课程?各占分值多少?
  6. java 防渗透_火焰 对于 () 相当于墨汁对于()A.冰冷 洁白B.温暖 黝黑C.氧气 砚台D.光明 黑暗...
  7. 十速单片机学习归纳总结(四):LED闪烁实验
  8. errcode.php,errCode.php
  9. vm 虚拟机设置共享文件夹
  10. 我的世界java下载慢怎么办_MC国际版的下载教程