电商网站商品价格获取方法_电商网站

电商网站商品价格获取方法_电商网站电商网站商品价格获取本文以苏宁易购,京东,两个电商网站,模仿说明电商网站商品价格的两种获取方法。json形式存放,京东商品的价格以json形式存放,以以下页面为例https://item.jd.com/100000287133.html明显价格数据并非放在前端页面里,搜索找到以下数据查看当前的url在浏览器中请求https://p.3.cn/prices/mgets?cal…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

电商网站商品价格获取

本文以苏宁易购,京东,两个电商网站,模仿说明电商网站商品价格的两种获取方法。

json形式存放,京东商品的价格以json形式存放,以以下页面为例
在这里插入图片描述

https://item.jd.com/100000287133.html

明显价格数据并非放在前端页面里,搜索找到以下数据
在这里插入图片描述
查看当前的url
在这里插入图片描述
在浏览器中请求

https://p.3.cn/prices/mgets?callback=jQuery6054119&type=1&area=6_303_36780_0&pdtk=&pduid=1588655612&pdpin=&pin=null&pdbp=0&skuIds=J_100000287133%2CJ_5416604%2CJ_100001477751%2CJ_4741808&ext=11100000&source=item-pc

通常来说call_back包含的内容可以直接去除,将链接处理后得到

https://p.3.cn/prices/mgets?skuIds=J_100000287133
skuIds=J_100000287133 

#分析即可发现j_后的字符串为商品ID,对应商品详情页的链接
请求结果如下:
在这里插入图片描述
接下来,填充主程序。仅作为示例代码,详情数据重新处理

import scrapy
import json

class JgSpider(scrapy.Spider):
    name = 'jg'
    allowed_domains = ['shouji.jd.com','p.3.cn'] #需说明的是在价格详情内域名发生了变化
    start_urls = ['https://item.jd.com/100000287133.html']

    def parse(self, response):

        item = { 
   }

        contain= response.xpath("//div[@class='product-intro clearfix']")

        item["title"] = contain.xpath("./div[@class='itemInfo-wrap']/div[@class='sku-name']/text()").extract_first().strip()
        item["sku_num"] = contain.xpath(".//a[@class='notice J-notify-sale']/@data-sku").extract_first()

        item["price_href"]='https://p.3.cn/prices/mgets?&skuIds=J_{}'.format(item["sku_num"])

        yield scrapy.Request(
            item["price_href"],
            callback=self.price_detail,  #获取价格
            meta={ 
   "item":item}
        )


    def price_detail(self ,response):

        item = response.meta["item"]

        item["price"] =json.loads(response.body.decode())[0]["p"] #json数据遍历方法

        print(item)

需要说明的几点:

allowed_domains = ['shouji.jd.com','p.3.cn'] #需说明的是在价格详情内域名发生了变化
item["price_href"]='https://p.3.cn/prices/mgets?&skuIds=J_{}'.format(item["sku_num"]) #也可直接拼接

代码运行结果如下:
在这里插入图片描述

苏宁易购商品价格获取,与淘宝的逻辑相似存放在主页面但需要正则匹配获取。
在这里插入图片描述
同样以具体的某些页面为例:

https://product.suning.com/0070091633/10717510914.html?safp=d488778a.10038.resultsRblock.12&safc=prd.3.ssdln_502687_pro_pic01-1_0_0_10717510914_0070091633

用同样的方法找到价格
在这里插入图片描述
填充主程序代码:

import scrapy
import re

class SnSpider(scrapy.Spider):

    name = 'sn'
    allowed_domains = ['suning.com']
        
    start_urls=['https://product.suning.com/0070091633/10717510914.html?safp=d488778a.10038.resultsRblock.12&safc=prd.3.ssdln_502687_pro_pic01-1_0_0_10717510914_0070091633']

    def parse(self, response):

        pr=re.findall('"itemPrice":"(.*?)",',response.body.decode())

        print(pr)

运行结果如下
在这里插入图片描述

以上就是主流电商网站的商品价格获取方法,希望对大家的学习工作有所帮助。
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/187017.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Activiti教程(六)activiti的流程设计_未完待续

    Activiti教程(六)activiti的流程设计_未完待续一.idea配置activiti插件二.流程设计使用idea设计各种流程图并讲解流程空间的各自属性 

    2022年7月21日
    14
  • linux用通配符取数据文件,Linux 通配符「建议收藏」

    linux用通配符取数据文件,Linux 通配符「建议收藏」概述本章节主要介绍关于linux通配符的用法,熟练运用通配符可以提高工作效率并且可以简化一些繁琐的处理步骤。测试数据touchaa6.logabc.logac.txtbcc5.txtx.logA“*”代表任意多个字符例:查询以”.log”结尾的文件ll*.log“?”代表任意单个字符例:只查询a、b、cll?“[]”代表“[”和“]”之间的某一个字符,比如[0-9]可以代表0-9…

    2022年9月19日
    1
  • 大数的阶乘算法

    大数的阶乘算法用data数组来存放阶乘的每一位数字,首先令第一位的数值为1,位数为1,然后将每次相乘的乘积存回数组,并循环处理每个数组中超过10的数,若数值超过10,则需要进位,将位数加1,原来的数除以10,商数加前一位数的数值后存回前一位数的数组中,再将余数存回原来位数的数组中。例如求5!的值步骤一:1!=1位数1数组内容0     0     0     1步骤二:2!=2

    2022年7月24日
    5
  • mysql字符串截取拼接_mybatis截取字符串

    mysql字符串截取拼接_mybatis截取字符串用法:1.substring(str,pos)例子:str是被操作的字符串,pos表示是从哪个位置开始。如果pos为正,则下标从左到右从1开始记。如果pos为负,则下标从右到左从-1开始记。2.substring(strfrompos)例子:与1的用法相同,但是逗号变为from。3.substring(str,pos,len)例子:str是被操作的字符串,pos表示是从哪个位置开始。如果pos为正,则下标从左到右从1开始记。如果pos为负,则下

    2022年10月2日
    1
  • Jieba分词简介[通俗易懂]

    Jieba分词简介[通俗易懂]Jieba分词官网:https://github.com/fxsjy/jieba 三种分词模式 Jieba提供了三种分词模式:精确模式,试图将句子最精确地切开,适合文本分析; 全模式,把句子中所有的可以成词的词语都扫描出来,速度非常快,但是不能解决歧义; 搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。importjiebasent…

    2022年5月24日
    35
  • 关系数据库理论(一)

    关系数据库理论(一)前面已经讲述了关系数据库、关系模型的基本概念以及关系数据库的标准语言。如何使用关系模型设计关系数据库,也就是面对一个现实问题,如何选择一个比较好的关系模式的集合,每个关系又应该由哪些属性组成,这属于数

    2022年7月1日
    26

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号