乐趣区

关于前端:使用Python获取国际版淘宝AliExpress的商品信息

AliExpress 寰球速卖通,又称国际版淘宝,是一款面向海内的购物网站。
之前有获取过 Amazon 的信息,偶然间发现了这个网站,所以明天看看这个国际版淘宝下面有没有我想要的货色。

 不晓得这下面能不能买到原价的 XboxSerisX 呢?

网站剖析
为了找到下面有没有原价的 Xbox,首先在首页,搜一下 PS5,再查看一下申请:

嗯,很直白的 get 申请,所有的参数链接上都写得清清楚楚。上面尝试一下翻页。
点击下一页之后呢,Doc 选项卡没有任何变动,那就再 XHR 选项卡找,果然找到了翻页的申请:

简化下链接,把一堆宜人的数字参数去掉之后,把链接拿进去独自申请:

完满的触发了验证滑块。
那我无妨换个思路,间接申请地址栏的链接,不去申请他的 api 接口呢?后果是能够的,扭转一下 page 参数就能够了:

1.url = f'https://www.aliexpress.com/wholesale?trafficChannel=main&d=y&CatId=0&SearchText={word}<ype=wholesale&SortType=default&page={page}'  

开始申请
个别的 Get 申请即可:

1.def get_res(word):  
2.    url = f'https://www.aliexpress.com/wholesale?trafficChannel=main&d=y&CatId=0&SearchText={word}<ype=wholesale&SortType=default&page={page}'  
3.    res = requests.get(url, headers=self.headers,timeout=10)  
4.    if res.status_code == 200:  
5.        content = res.content.decode('utf-8') 

查看返回值,他的内容是 js 加载的:

从下面的 content 变量里,用 re 正则表达式获取其中的内容,转化成 json 字符串:

1.content = res.content.decode('utf-8')  
2.info = re.findall("window.runParams = (\{.*\})",content)[-1]  
3.info = info.replace('false','False').replace('true','True')  
4.datas = eval(info)['mods']['itemList']['content']  

如何从那么乌七八糟的货色疾速找到咱们想要的货色呢?json 格式化啊!百度 json 格式化,简单的 json 也能一层一层剥开他的心(要把单引号替换成双引号哦):

这样咱们就能疾速找到咱们想要的内容了,我只有 title 和 url 就能够了,反正能够自定义,管他呢。

代理设置
方才也看到了,滑块验证不晓得什么时候就呈现了。如果想顺利的获取想要的数据,高效稳固的代理必定是少不了的。
我这里呢应用的是 ipidea 的代理,新用户能够白嫖流量,成果好不好无妨能够试试
地址:http://www.ipidea.net/
自己亲测高并发下成功率可不低的哦。
本次应用的是 ipidea 的账密代理形式;

设置好帐号信息,将账密的链接当成代理信息传进去就能够了:

1.entry = '账密链接'  
2.proxy = {  
3.    'http': entry,  
4.    'https': entry,  
5.}  
6.url = f'https://www.aliexpress.com/wholesale?trafficChannel=main&d=y&CatId=0&SearchText={word}<ype=wholesale&SortType=default&page={page}'  
7.res = requests.get(url,headers=headers, proxies=proxy)  
8.if res.status_code == 200:  
9.    content = res.content.decode('utf-8')  

残缺代码

退出移动版