【电商系列】shopee的数据获取

【电商系列】shopee的数据获取,第1张

        在Amazon,Aliexpress之后,又一个海外电商出现在我的视野里——shopee,在东南亚很火的电商平台。

这战略布局都到南美跟欧洲了

        这网站有意思的是啊,每个国家的商品虽然大同小异,但是也能凸显各个国家的风格的,比如印度的shopee,一股阿三的气息。

对味儿了 

一、请求分析: 

        地址:https://xxxxxx.tw/daily_discover?pageNumber=1,这次就以台湾站为例。

        老步骤:清理cookie,打开开发者模式,重新请求:

        查看当前连接的请求,看返回内容的长度可知数据绝对不在这里。

        找这种网站的信息,个人的经验是先去这个链接的请求(一般在DOC)先去碰碰运气,是不是直接的get请求。要是前后端分离的数据,就去XHR或者JS里面去找,有的请求会返回正好的json数据,而有的就是js需要自己去做数据清洗。

        所以只能一个一个往下找,于是找到了这个请求:https://xxxxxx.tw/api/v4/recommend/recommend?bundle=daily_discover_main&item_card=2&limit=60&offset=0

         这个链接返回的是数据的json,新开一个无痕窗口打开发现并不需要cookie就可以直接获取,又是一个简单的get请求。要是需要cookie的话有可能会需要额外处理,但是这个网站正好,不需要。

        (这篇文章我是边看边写的,没想到这个请求还是那么简单。)

        那么下面的任务就是进行请求和数据解析,拿到想要的数据即可。

二、请求

        处理好请求头,设置好代理,直接get请求连接:

def getRes():
    url = "https://shopee.tw/api/v4/recommend/recommend?bundle=daily_discover_main&item_card=2&limit=60&offset=0"
    headers = {
        "authority": "shopee.tw",
        "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36",
    }
    res = requests.get(url,headers=headers,proxies=getApiIp())
    datas = res.json()['data']['sections'][0]['data']['item']
    for data in datas:
        print(data)

         这些数据很简单的就获取到了,也没有很复杂。重要的是不要太频繁请求罢了,容易封号封IP。

        那有没有好一点的办法呢?用代理啊!

        ipidea支持全球国家代理,支持api和账密请求,高效高质量,新用户可以白嫖流量!

        地址:http://www.ipidea.net/?utm-source=csdn&utm-keyword=?wb 

三、数据处理 

        本次就获取 链接、商品名、最高价、最低价、图片 这几个字段。

        链接url是由域名+商品名+shopid+itemid组成的,一时间居然没看出来。

datas = res.json()['data']['sections'][0]['data']['item']
    for data in datas:
        iteminfo = {}
        iteminfo['url'] = f"https://shopee.tw/{data['name']}-i.{data['shopid']}.{data['itemid']}"
        iteminfo['name'] = data['name']
        iteminfo['price_min'] = data['price_min']
        iteminfo['price_max'] = data['price_max']
        imagelist = []
        for image in data['images']:
            imagelist.append(f'https://cf.shopee.tw/file/{image}')
        iteminfo['pic'] = ";".join(imagelist)
        print(iteminfo)

        处理结果如下:

 四、写在最后

        最近写了一些电商的文章,都是边看边写的,以为会带来点新鲜的。搞了半天请求的部份都是比较简单的,而这次的shopee请求的居然是现成的json。希望这些能给需要获取电商信息的朋友一点点思路。

        最后附上整体的代码:

def getRes():
    url = "https://shopee.tw/api/v4/recommend/recommend?bundle=daily_discover_main&item_card=2&limit=60&offset=0"
    headers = {
        "authority": "shopee.tw",
        "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36",
    }
    res = requests.get(url,headers=headers,proxies=getApiIp())
    datas = res.json()['data']['sections'][0]['data']['item']
    for data in datas:
        iteminfo = {}
        iteminfo['url'] = f"https://shopee.tw/{data['name']}-i.{data['shopid']}.{data['itemid']}"
        iteminfo['name'] = data['name']
        iteminfo['price_min'] = data['price_min']
        iteminfo['price_max'] = data['price_max']
        imagelist = []
        for image in data['images']:
            imagelist.append(f'https://cf.shopee.tw/file/{image}')
        iteminfo['pic'] = ";".join(imagelist)
        print(iteminfo)

getRes()

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/716990.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-25
下一篇 2022-04-25

发表评论

登录后才能评论

评论列表(0条)

保存