赞
踩
可以更精准的获取数据(可以切换亚马逊电商不同区域,比如美国、德国、英国,展示的宠物商品、价格、销量都不一样),而IPIDEAIP代理覆盖全球220多个国家地区,自建9000万纯净住宅IP池,基本可以满足我们的需求。
今天我们实验的是爬取宠物数据,针对亚马逊电商的规则,我们使用动态IP来获取数据。例如,我们可以获取10个短期有效的美国区域IP,去分别获取10页数据。动态IP流量的使用费相对比其他家动态IP,相同价格下,IPIDEA的动态IP的性价比更高。
独享的静态IP更适用于跨境电商企业用于养号、社媒营销,有需要的伙伴同样可以选择试用。
目前,IPIDEA已为100万+的用户提供服务,并且赢得了众多知名企业的信赖。其中良好的服务功不可没,尤其是文档这块非常齐全,比如截图展示的数据中心IP接口,基本信息、请求参数、返回示例等都非常详细。
亚马逊电商也有网络安全防护,会有用户行为异常监控,比如我们使用家里的住宅IP,去浏览网站,基本上是间隔2-10秒访问一个页面。如果我们通过一个IP,在10秒内获取了10页数据(500+条数据),这时候就会引发网站的异常监控。
这种情况下,我们可以使用动态代理IP,每个IP控制在5-10内只使用一次,这样就可以合理的减少风险了。
点击进入IPIDEA官网,使用手机号注册账号并登录。
Ps: 现在IPIDEA新用户注册可以免费领取测试额度哦,可以全方位体验IPIDEA代理服务。
登录之后,我们在个人中心就可以找到账户管理、获取代理、购买记录、接口文档等菜单,也可以查看详细的代理统计信息,实时掌握代理使用情况。
通过【获取代理】可以找到【api获取】方式,去获取代理。可以看到,有很多参数都是我们可以自由选择的,比如数据格式可以使用txt、json,国家地区可以按需求选择,提取数量、分隔符等等。
复制上一步生成的测试链接,可以获取到代理IP。
使用Springboot快速构建一个爬虫项目,确定目标站点搜索地址。
使用ipidea提供的代理API,获取动态IP代理信息,通过迭代IP去获取数据。
- private List<ipideaIpInfo> getProxy() {
- ipideaProxy ipideaProxy = restTemplate.getForObject("http://api.proxy.ipidea.io/getProxyIp?num=1&return_type=json&lb=1&sb=0&flow=1®ions=us&protocol=http", ipIdeaProxy.class);
- log.info("代理信息: {}", new Gson().toJson(ipideaProxy));
- return ipideaProxy.getData();
- }
我们还可以通过代码调试,查看获取到的信息。比如页面的html信息、每次请求可以获取到53个商品数据等。
自动化获取数据,最终可以保存到Excel、数据等。
其中最直观的数据,就是标题、销量,从大到小排列。第一条数据是销量最高的商品,其他的次之。
核心代码:
- void obtainPetDataFromAmazon(ipideaIpInfo ipInfo, List<PetProduct> petProductList) {
- log.info("PetDataTest obtainPetDataFromAmazon begin!");
-
- // 按照销量排行检索商品
- String baseUrl = "https://www.amazon.com/s?s=exact-aware-popularity-rank&language=en_US¤cy=USD&k=";
- // 搜索关键词
- String searchName = "dog";
- // 按照销量排行检索关键词,搜索特定品类商品
- String url = baseUrl + searchName;
-
- Proxy proxy = new Proxy();
- // proxy.setHttpProxy(ipInfo.getIp() + ":" + ipInfo.getPort());
-
- System.setProperty("webdriver.chrome.driver", XbbSeleniumUtil.CHROMEDRIVERPATH);// chromedriver localPath
- ChromeOptions chromeOptions = new ChromeOptions();
- chromeOptions.addArguments("--remote-allow-origins=*");
- chromeOptions.addArguments("–no-sandbox"); //--start-maximized
- // chromeOptions.setCapability(CapabilityType.PROXY, proxy);
-
- // 增加禁止加载图片的设置
- HashMap<String, Object> prefs = new HashMap<>();
- prefs.put("profile.default_content_settings", 2);
- // chromeOptions.setExperimentalOption("prefs", prefs);
- chromeOptions.addArguments("blink-settings=imagesEnabled=false");//禁用图片
-
- WebDriver driver = new ChromeDriver(chromeOptions);
- driver.get(url);
-
- // 停顿一秒,等待页面的js执行(ajax获取数据等)
- XbbSeleniumUtil.sleep(1000);
-
- //Selenium获取网页内容
- //获取Amazon cat商品数据
- WebElement mainSelectE = driver.findElement(By.cssSelector("div.s-result-list"));
- //转化为Jsoup文档处理
- Document doc = Jsoup.parse(mainSelectE.getAttribute("outerHTML"));
- //找到cat商品数据集合
- Elements elements = doc.select("div.a-spacing-base");
- log.info("{}商品 元素的长度:{}", searchName, elements.size());
- if (!CollectionUtils.isEmpty(elements)) {
- elements.forEach(ele -> {
- //商品图片信息
- String imgPath = ele.select("span.rush-component>a>div>img").attr("src");
- if (StringUtils.isEmpty(imgPath) == false) {
- // imgPath = "https:" + imgPath;
- log.info("图片地址:{} , 目录:{}", imgPath, searchName);
- XbbSeleniumUtil.download(imgPath, this.model, searchName);
- }
-
- String sellerNum = ele.select("div.a-spacing-top-micro").select("span.a-color-secondary").text();
- if (StringUtils.isEmpty(sellerNum) == false) {
- log.info("销量:{} ", sellerNum);
- }
-
- String title = ele.select("div.s-title-instructions-style").select("span.a-text-normal").text();
- if (StringUtils.isEmpty(title) == false) {
- log.info("标题:{} ", title);
- }
-
- String price = "";
- if (null != ele.select("span.a-price>span.a-offscreen").first()) {
- price = ele.select("span.a-price>span.a-offscreen").first().text();
- log.info("价格:{} ", price);
- } else {
- price = ele.select("span.a-color-base").last().text();
- log.info("价格:{} ", price);
- }
-
- if(!StringUtils.isEmpty(title) ){
- petProductList.add(PetProduct.builder()
- .title(title)
- .sellerStr(sellerNum)
- .picUrl(imgPath)
- .price(price)
- .build());
- }
- });
- }
-
- driver.quit();
- log.info("PetDataTest obtainPetDataFromAmazon end!");
- }

在pom.xml文件里导入easyExcel依赖项
- <dependency>
- <groupId>commons-io</groupId>
- <artifactId>commons-io</artifactId>
- <version>2.11.0</version>
- </dependency>
Excel宠物数据辅助类,核心代码如下:
- /**
- * 宠物数据 Excel 辅助类
- */
- public class PetExcelUtil {
- public void writeExcel(String filePath, List<PetProduct> data) {
- EasyExcel.write(filePath, PetProduct.class).sheet("Sheet1").doWrite(data);
- }
- }
可以在我们预设置好的文件夹里找到已经整理好的数据。
由于我们在抓取数据时,已经按照销量做了排序,因此在excel里的数据,也是按照销量排序好的数据。可以看到Excel里的数据从第一条的60K+销量依次减少,也能看到标题、价格、图片等信息。
比如我们统计的这个Excel数据,第一条是6万+销量的药丸狗零食,在1万+销量以上的基本上都是狗狗零食、狗饼干、狗咀嚼玩具等,价格基本上都在 10-50美元左右。
那我们在选择商品的时候,就可以综合这些因素,保证价格在10-50美元区间,品类控制在狗零食、狗饼干、狗咀嚼玩具上。这样我们上架的商品就可以得到这些相关的搜索流量,增加曝光率,销量也会随之增长。
宠物跨境电商的市场,随着居民的感情需求越来越大了,但是居民也越来越挑剔了,对价格、品牌、质量都有很高的要求。
这时就需要我们对市场有足够的洞察力,及时的获取到市场销售数据。而今天我们做的自动化应用,就可以满足这些需求。
今天我们使用Springboot数据获取程序应用 + IPIDEA代理,几分钟就获取到了大量的亚马逊畅销榜宠物商品数据,我们可以根据Excel表单里的数据,明确用户实时的喜好数据。从而可以实时的调整我们的选品,上架用户真正喜好的商品。
* IPIDEA所有类型IP仅支持在境外网络环境下使用
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。