AliExpress全球速卖通,又称国际版淘宝,是一款面向海外的购物网站。
之前有获取过Amazon的信息,偶然间发现了这个网站,所以今天看看这个国际版淘宝上面有没有我想要的东西。
不知道这上面能不能get原价的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加载的:
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的代理,新用户可以白嫖流量,效果好不好不妨可以试试
本人亲测高并发下成功率可不低的哦。
本次使用的是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()