4.1 IPIDEA的IP代理几大好处
4.1.1 提供全球多个区域的代理
可以更精准的获取数据(可以切换亚马逊电商不同区域,比如美国、德国、英国,展示的宠物商品、价格、销量都不一样),而IPIDEAIP代理覆盖全球220多个国家地区,自建9000万纯净住宅IP池,基本可以满足我们的需求。
4.1.2 使用动态IP代理,性价比更高
今天我们实验的是爬取宠物数据,针对亚马逊电商的规则,我们使用动态IP来获取数据。例如,我们可以获取10个短期有效的美国区域IP,去分别获取10页数据。动态IP流量的使用费相对比其他家动态IP,相同价格下,IPIDEA的动态IP的性价比更高。
独享的静态IP更适用于跨境电商企业用于养号、社媒营销,有需要的伙伴同样可以选择试用。
4.1.3 文档齐全,便捷的API接口,方便在代码里接入
目前,IPIDEA已为100万+的用户提供服务,并且赢得了众多知名企业的信赖。其中良好的服务功不可没,尤其是文档这块非常齐全,比如截图展示的数据中心IP接口,基本信息、请求参数、返回示例等都非常详细。
4.1.4 选品所需数据较多,使用代理减少单一IP的风险
亚马逊电商也有网络安全防护,会有用户行为异常监控,比如我们使用家里的住宅IP,去浏览网站,基本上是间隔2-10秒访问一个页面。如果我们通过一个IP,在10秒内获取了10页数据(500+条数据),这时候就会引发网站的异常监控。
这种情况下,我们可以使用动态代理IP,每个IP控制在5-10内只使用一次,这样就可以合理的减少风险了。
5.使用代码获取亚马逊宠物数据
5.1 测试代理
5.1.1 注册登录
点击进入IPIDEA官网,使用手机号注册账号并登录。
Ps: 现在IPIDEA新用户注册可以免费领取测试额度哦,可以全方位体验IPIDEA代理服务。
登录之后,我们在个人中心就可以找到账户管理、获取代理、购买记录、接口文档等菜单,也可以查看详细的代理统计信息,实时掌握代理使用情况。
5.1.2 查看API
通过【获取代理】可以找到【api获取】方式,去获取代理。可以看到,有很多参数都是我们可以自由选择的,比如数据格式可以使用txt、json,国家地区可以按需求选择,提取数量、分隔符等等。
5.1.3 测试代理
复制上一步生成的测试链接,可以获取到代理IP。
5.2 构建项目
使用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();
}
5.2.1 代码调试
我们还可以通过代码调试,查看获取到的信息。比如页面的html信息、每次请求可以获取到53个商品数据等。
5.2.2 获取数据
自动化获取数据,最终可以保存到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!");
}
5.3 导入Excel
5.3.1 导入easyExcel
在pom.xml文件里导入easyExcel依赖项
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.11.0</version>
</dependency>
5.3.2 excel核心代码
Excel宠物数据辅助类,核心代码如下:
/**
* 宠物数据 Excel 辅助类
*/
public class PetExcelUtil {
public void writeExcel(String filePath, List<PetProduct> data) {
EasyExcel.write(filePath, PetProduct.class).sheet("Sheet1").doWrite(data);
}
}
5.3.3 批量写入Excel核心代码
5.3.4 查看结果
可以在我们预设置好的文件夹里找到已经整理好的数据。
由于我们在抓取数据时,已经按照销量做了排序,因此在excel里的数据,也是按照销量排序好的数据。可以看到Excel里的数据从第一条的60K+销量依次减少,也能看到标题、价格、图片等信息。
比如我们统计的这个Excel数据,第一条是6万+销量的药丸狗零食,在1万+销量以上的基本上都是狗狗零食、狗饼干、狗咀嚼玩具等,价格基本上都在 10-50美元左右。
那我们在选择商品的时候,就可以综合这些因素,保证价格在10-50美元区间,品类控制在狗零食、狗饼干、狗咀嚼玩具上。这样我们上架的商品就可以得到这些相关的搜索流量,增加曝光率,销量也会随之增长。
6.总结
宠物跨境电商的市场,随着居民的感情需求越来越大了,但是居民也越来越挑剔了,对价格、品牌、质量都有很高的要求。
这时就需要我们对市场有足够的洞察力,及时的获取到市场销售数据。而今天我们做的自动化应用,就可以满足这些需求。
今天我们使用Springboot数据获取程序应用 + IPIDEA代理,几分钟就获取到了大量的亚马逊畅销榜宠物商品数据,我们可以根据Excel表单里的数据,明确用户实时的喜好数据。从而可以实时的调整我们的选品,上架用户真正喜好的商品。
* IPIDEA所有类型IP仅支持在境外网络环境下使用