0
点赞
收藏
分享

微信扫一扫

Python获取Amazon限时特惠信息

12a597c01003 2022-04-21 阅读 15
python学习

        又来折腾亚马逊了......

        从最近的几次爬取亚马逊的情况来看,数据获取难度还算是一般,恶心的就在数据处理方面,一堆的JS,HTML等等罗列在一起。不怎么费脑子,但是费眼。

        正文开始。

一、请求分析

        特惠信息页面:/gp/goldbox

         照例,打开开发者模式,清除cookie,然后再次请求:

         就直接查看这个当前页的请求,预览的时候发现并没有数据:

为了避嫌该打码的地方都打了,求审核高抬贵手 

         但是我在另外的请求发现了想要的数据:

https://data.xxx.com/api/marketplaces/ATVPDKIKX0DER/deals/2ba64a89,0164bea5,cc744f0c,cd92d862,ee824116,3169c9f5,78d7cbde,340b91b0,e5663819,d1dcecb2,5cbe503e,322beb76,20a10f2c,8772f291,a4653316,e7c24724,5e7ed3bf,8e249c83,b7aca80c,5f003b5e,a03fb361,cdfb36cd,14807e7b,03b1853a,6a4292e7,d7c52de3,18cf263d,cb0186a7,528ae49c,d465196c

          于是我搜索了一下这个请求其中的一个参数2ba64a89,发现了数据还是藏在刚才请求的连接了,主要是数据太杂,没有发现:        

         那么就直接请求就行了。

二、发送请求

        简简单单的get请求,直接贴上代码:

def getAmazon():
    url = 'https://www.amazon.com/gp/goldbox'
    headers = {
        'authority': 'www.amazon.com',
        '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=url,headers=headers,proxies=getApiIp())
    content = res.content
    content = content.decode('utf-8')

         开始费眼了,下面开始数据分析。

三、数据分析

        刚才的开发者模式,将刚才请求的内容格式化,一直往下拖就能找到数据列表了:

         直接上结论吧,这些信息都存储在aapiGetDealsList列表中的entities的这个列表,把里面的true和false替换成True和False之后,eval格式化之后就成了正常处理的python list了。

    Datainfo = re.findall("entities\":(.*?)}]},\"initialLoadTimeUtc",content)[0]
    infos = Datainfo.replace("true","True").replace("false","False")
    infos = eval(infos)
    for info in infos:
        print(info)

        图片,价格,到期时间这些东西都在这里了。

四、写在最后

        写了三期的亚马逊了,爬取了列表,评论和优惠,每次最头疼的就是数据的解析,太乱了。请求方面确实没啥太多的影响,多亏了ipidea的代理,高速稳定质量高,才能那么顺利的获取到想要的东西,新用户可以白嫖流量哦!

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

        不用白不用

        最后贴上代码吧:

def getAmazon():
    url = 'https://www.amazon.com/gp/goldbox'
    headers = {
        'authority': 'www.amazon.com',
        '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=url,headers=headers,proxies=getApiIp())
    content = res.content
    content = content.decode('utf-8')
    Datainfo = re.findall("entities\":(.*?)}]},\"initialLoadTimeUtc",content)[0]
    infos = Datainfo.replace("true","True").replace("false","False")
    infos = eval(infos)
    for info in infos:
        print(info)

getAmazon()

        也太水了!

举报

相关推荐

0 条评论