python爬取天猫商品信息
主要信息有:商品名,价格,月销量,评论数,人气值,店铺评分

以智能手机为例!
首先,发掘网址规律:


第二页的网址如上

第三页的网址如上
注意网址中的数字(靠近中间位置):第二页->60,第三页->120
所以大胆猜测网址的规律就体现在这个数字中
经过尝试,规律确实如此
所以可以通过循环,改变数字的值,访问下一页

代码:

headers = {'User-Agent':'','Cookie':''}

headers代码,user-agent和cookie可以打开任意网页,右键’检查‘,在network文件中查找,复制下来即可
代码:

def gethtml(url,headers):try:response=requests.get(url,headers=headers)#response.encoding='utf-8'if response.status_code==200:return response.textreturn Noneexcept RequestException:return None

上边的代码块非常通用,可以用来访问很多网页
代码:

    for i in range(20,81):price=[]name=[]sales=[]comments=[]link=[]url = 'https://list.tmall.com/search_product.htm?spm=a220m.1000858.0.0.5c1b4227WVFbrJ&s='\+str(i*60)+\'&q=%D6%C7%C4%DC%CA%D6%BB%FA&sort=s&style=g&from=.list.pc_1_suggest&suggest=0_3&type=pc#J_Filter'pprint(url)response = gethtml(url, headers)
`

接下来用xpath提取所需要的信息,
代码:

parser=etree.HTML(response,etree.HTMLParser())

注意导包lxml.etree
至于xpath如何获取:
网页右键检查,找到所需要的信息的位置,右键->copy->xpath

如果所需要的信息在当前位置的标题里:
用/@title提取,title为标题的名字,比如说class、href
如果所提取的信息为当前位置的文本中:
用/text()提取
xpath可以提取大部分信息,但是无法提取到js动态加载,或者异步加载的信息,但是也有方法可以提取到这些信息,具体方法后续再说。
代码:

        for j in range(1,61):p_price=parser.xpath('//*[@id="J_ItemList"]/div['+str(j)+']/div/p[1]/em/text()')[0]# //*[@id="J_ItemList"]/div[1]/div/p[1]/em/text()#                   //*[@id="J_ItemList"]/div[2]/div/p[1]/em/text()p_name=parser.xpath('//*[@id="J_ItemList"]/div['+str(j)+']/div/p[2]/a/@title')[0]#                   //*[@id="J_ItemList"]/div[1]/div/p[2]/a#                   //*[@id="J_ItemList"]/div[2]/div/p[2]/ap_sales=parser.xpath('//*[@id="J_ItemList"]/div['+str(j)+']/div/p[3]/span[1]/em/text()')[0]# //*[@id="J_ItemList"]/div[1]/div/p[3]/span[1]/em# //*[@id="J_ItemList"]/div[2]/div/p[3]/span[1]/emp_comments=parser.xpath('//*[@id="J_ItemList"]/div['+str(j)+']/div/p[3]/span[2]/a/.')[0]# //*[@id="J_ItemList"]/div[1]/div/p[3]/span[2]/a# //*[@id="J_ItemList"]/div[2]/div/p[3]/span[2]/ap_link=parser.xpath('//*[@id="J_ItemList"]/div['+str(j)+']/div/div[1]/a/@href')[0]

因为一页有很多商品,商品的销量,价格,评论数,商品名称的位置都是相对固定的,我们可以根据xpath中的数字规律,利用循环获取当前页面所有商品的上述信息。
由于商品的人气值,店铺的评分,以及用户的评论需要点击进入商品页面才能获取,所以我们也提取出当前页面所有商品的网址,为了后续提取信息

如果程序报错:
list index out of range
则爬取失败,说明被反爬机制检测到,一般为验证码拦截,笔者能力有限,无法解决这种问题,只能尝试更改headers的信息,重新尝试,如果还是不行,就过一段时间在尝试爬取

目前我们爬取到了上述信息
接下来我们开始爬取商品页面里面的信息:
同样利用xpath方法,可以爬到大部分信息,比如店铺评分(在网页顶部位置)
但是人气值,和商品评论:

利用xpath提取出来是空列表
这是因为异步加载的问题,右键检查->network
找到如下文件:

发现:文件preview内容最后的数字就是所需要的人气值
经过多个商品的确认,确实如此
所以思路为:
获取每个商品该文件的链接,下载该网页的内容,用正则表达式匹配所需要的数字:

    for item in url:print(item)response = gethtml(item, headers)parser = etree.HTML(response, etree.HTMLParser())base='https://count.taobao.com/counter3?_ksTS=1621334983260_268&callback=jsonp269&keys=SM_368_dsr-901409638,ICCP_1_'item_id=parser.xpath('//*[@id="J_AddFavorite"]/@data-aldurl')[0]reg = re.compile(r"\d*[ ]")target_id=re.search(reg,item_id).group()# //*[@id="J_DetailMeta"]/div[1]/div[2]/p# //*[@id="J_CollectCount"]target_url=base+target_idprint(target_url)a = urllib.request.urlopen(target_url)  # 打开指定网址po_html = a.read()  # 读取网页源码po_html = po_html.decode("utf-8")  # 解码为unicode码print(po_html)  # 打印网页源码

笔者在此处用了urllib包中的urlopen函数来获取网页源代码,
因为笔者尝试过用requests中的get函数,但是得到的网页源码和看到的不相同,具体表现为:其他内容一致,唯独人气值的数字为0
但用urlopen函数就不会出问题。
接下来发掘该网页链接的规律:
规律已经在代码中体现:
base表示所有商品页面人气值网页的共通部分
ICCP_1_后面接的是商品的ID
用item_id表示,可以在网页中用xpath初步提取,再用正则表达式分离
目标人气值的url就是base+target_id
该规律通过多观察几个商品的人气值网址链接不难发现
注意提取人气值时:

def gethtml(url,headers):try:response=requests.get(url,headers=headers)response.encoding='utf-8'if response.status_code==200:return response.textreturn Noneexcept RequestException:return None

注意encoding

结果如上图
再利用正则表达式就可以提取到商品人气值

至于评论:
方法类似,也是右键检查,找到网页点击评论后加载出来的文件,其中有一个文件:
listTagClouds开头,里面有商品评论的标签:

具体的用户评论在:
list_detail_rate开头文件中

获取方法和获取人气值类似

python爬取天猫商品信息相关推荐

  1. 简单爬虫,爬取天猫商品信息

    前言 这是我第一次用Java来写爬虫项目,研究的也不是很透彻,所以爬虫技术的理论方面的就不说太多了. 主要还是以如何爬取商品信息为主,爬取最简单的商品信息,给出大概的思路和方法. 对于没有反爬技术的网 ...

  2. 用python爬取天猫商品评论并分析(2)

    用python爬取天猫商品评论并分析(2) 之前介绍过天猫数据的爬取和数据初步处理,今天介绍下 将采集的评论进行文本分析!下面是总流程: 0. 主要流程 0. 数据采集 这一步参考网址:https:/ ...

  3. python爬取京东商品信息代码_爬取京东商品信息

    利用 BeautifulSoup + Requests 爬取京东商品信息并保存在Excel中 一.查看网页信息 打开京东商城,随便输入个商品,就选固态硬盘吧 先看看 URL 的规律,可以看到我们输入的 ...

  4. Python爬虫使用selenium爬取天猫商品信息

    文章目录 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多已经做案例的人,却不知道如何去学习更加高深的知识. 那么针对这三类人,我 ...

  5. Python爬取京东商品信息

    *使用Python爬取京东华为手机前十页的所有商品的链接.名称.价格.评价数以及店铺名称. 1.前期准备 (1)下载驱动 我使用的是谷歌浏览器,所以要下载谷歌驱动,用来告诉电脑在哪打开浏览器. 驱动文 ...

  6. Python爬取京东商品信息以及评论存进MySQL

    目录 构建mysql数据表 第一版: 第二版 : 第三版: 总结: 构建mysql数据表 问题:使用SQL alchemy时,非主键不能设置为自增长,但是我想让这个非主键仅仅是为了作为索引,autoi ...

  7. python爬取京东商品信息代码_Python利用Xpath选择器爬取京东网商品信息

    HTML文件其实就是由一组尖括号构成的标签组织起来的,每一对尖括号形式一个标签,标签之间存在上下关系,形成标签树:XPath 使用路径表达式在 XML 文档中选取节点.节点是通过沿着路径或者 step ...

  8. python 爬取京东商品信息

    # -*- coding: utf-8 -*- import os import re import time from urllib.parse import urlencode import re ...

  9. python爬取天猫商品数据

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资 ...

最新文章

  1. MySql数据库概念
  2. python数据结构与算法之list
  3. mysql 关联关系
  4. AI识虫:林业病虫害数据集和数据预处理方法
  5. 第六节:反射(几种写法、好处和弊端、利用反射实现IOC)
  6. oracle导出数据视频教程,Oracle导入导出数据的几种方式
  7. 志汇超级外卖餐饮 5.9.2 + 超级跑腿 v1.9.5 打包下载 小程序模块
  8. jquery audio没有声音_Python实用案例编程入门:第十四章 通过声音控制您的计算机
  9. Android Studio属性动画,Android开发-RecyclerView-AndroidStudio(六)属性动画(3)AddDuration
  10. chrome下方的copeascURL(cmd) 复制的内容,在windows的cmd中不可用的原因
  11. 电气工程cad实用教程电子版_电气CAD实用教程
  12. 【T+】T+和天联高级版软件结合使用的时候,运行T+提示网页崩溃了。
  13. 关于输入法图标消失 只能输入英文 win10 语言选项 键盘那里显示 输入法仅桌面的解决办法
  14. c51单片机秒表程序c语言,单片机简易秒表C51程序
  15. Android开发实例详解之IMF
  16. 《人月神话》-人月神话
  17. PPT 小白洗白教程
  18. python 删除指定后缀文件_python3 遍历删除特定后缀名文件的方法_天津SEO
  19. 电机PID控制和闭环控制
  20. css中盒子模型的布局

热门文章

  1. 恶意代码分析实战-通过IDA对恶意代码进行静态分析(Lab05-01.dll)
  2. 通识~FIR数字滤波器设计讲解
  3. Android振动器调试
  4. 学计算机u盘多少g合适,装系统的u盘需要多大-大白菜装win7的系统一般要多少G的U?大 – 手机爱问...
  5. 如何在A4纸上打印连续的条形码
  6. 期货开户亏损的一点原因
  7. idea 使用 Docker 打包镜像的两种方式_07
  8. 又一个!左手手机,右手汽车,为啥手机厂商都扎堆造汽车?
  9. 软件测试之测试主流技能
  10. OpenCV 计算运行时间(us,ms,s)