Blogger Information
Blog 9
fans 0
comment 0
visits 6975
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
使用Python获取国际版淘宝AliExpress的商品信息
IPIDEA全球HTTP
Original
738 people have browsed it


AliExpress全球速卖通,又称国际版淘宝,是一款面向海外的购物网站。

之前有获取过Amazon的信息,偶然间发现了这个网站,所以今天看看这个国际版淘宝上面有没有我想要的东西。

1665553608723863.png

 不知道这上面能不能get原价的XboxSerisX呢?

 

网站分析

为了找到上面有没有原价的Xbox,首先在首页,搜一下PS5 ,再查看一下请求:

 2.png

嗯,很直白的get请求,所有的参数链接上都写得清清楚楚。下面尝试一下翻页。

点击下一页之后呢,Doc选项卡没有任何变化,那就再XHR选项卡找,果然找到了翻页的请求:

 1665553776561737.png

简化下链接,把一堆恼人的数字参数去掉之后,把链接拿出来单独请求:

 1665553796778274.png

完美的触发了验证滑块 。

那我不妨换个思路,直接请求地址栏的链接,不去请求他的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加载的:

 5.png

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']

 6.png

如何从那么乱七八糟的东西快速找到我们想要的东西呢?json格式化啊!百度json格式化,复杂的json也能一层一层剥开他的心(要把单引号替换成双引号哦):

 7.png

这样我们就能快速找到我们想要的内容了,我只要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')

 

完整代码

1. import requests  
2. import re  
3. import multiprocessing as mp  
4. from loguru import logger  
5.    
6. class aliExpress():  
7.    
8.     def __init__(self):  
9.         self.manager = mp.Manager  
10.         self.headers = {  
11.                 "authority":"www.aliexpress.com",  
12.                 "accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",  
13.                 "user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36",  
14.         }  
15.         #地址:http://www.ipidea.net/?utm-source=csdn&utm-keyword=?wb   
16.         entry = '账密链接'  
17.         self.proxy = {  
18.             'http': entry,  
19.             'https': entry,  
20.         }  
21.         self.resultList = self.manager().list()  
22.    
23.     def get_res(self,i,word):  
24.         logger.info(f"开始测试{word}")  
25.         url = f'https://www.aliexpress.com/wholesale?trafficChannel=main&d=y&CatId=0&SearchText={word}<ype=wholesale&SortType=default&page=1'  
26.         try:  
27.             res = requests.get(url,headers = self.headers,proxies = self.proxy)  
28.             if res.status_code == 200:  
29.                 content = res.content.decode('utf-8')  
30.                 info = re.findall("window.runParams = (\{.*\})",content)[-1]  
31.                 info = info.replace('false','False').replace('true','True')  
32.                 datas = eval(info)['mods']['itemList']['content']  
33.                 for data in datas:  
34.                     print(data)  
35.                     exit()  
36.                     itemData = {}  
37.                     itemData['title'] = data['title']['displayTitle']  
38.                     itemId = data['productId']  
39.                     itemData['itemUrl'] = f'https://www.aliexpress.com/item/{itemId}.html'  
40.                     print(itemData)  
41.         except Exception as e:  
42.             print('error',e)  
43.    
44.     def start(self):  
45.         keywords = [关键词list]  
46.         for word in keywords:  
47.             self.get_res(1,word)  
48.    
49. if __name__ == '_
 _main__':  
50.     aliExpress().start()


Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post