Java爬虫:使用Jvppeteer(Puppeteer)轻松爬淘宝商品

本文介绍了如何使用Java爬虫库Jvppeteer来高效爬取淘宝商品信息。通过多线程和页对象复用减少页面创建频率,提高爬取速度。同时,拦截图片和多媒体资源加载以提升爬虫效率。测试结果显示,100个任务在15秒内完成。文章最后提到了通过浏览器队列管理和替换策略来应对浏览器可能的崩溃问题。
摘要由CSDN通过智能技术生成

Java爬虫:使用Jvppeteer(Puppeteer)轻松爬淘宝商品

想要爬取某宝的商品,如果只是用HttpURLConnection发个请求,失败率是很高的。一般想要保证成功率的话,都会选择真实的浏览器去抓取。

以前常用的解决方案是selenium或phantomjs,但是它两的环境配置太麻烦了,对程序员极度不友好,自从谷歌推出Puppeteer后,puppeteer迅速流行起来,获得大家一致称赞。它是一个NodeJS库,但今天并不是要使用它来爬取某宝商品,而是使用Java语言写的Jvppeteer,Jvppeteer与Puppeteer是同样的实现原理。

思路

  1. 使用多线程,一个线程负责一个页面的爬取(接下来的内容会使用page代替页面)

  2. 创建与线程池线程数相同的page队列,page放在LinkedBlockingQueue队列里,每当有爬取任务时,就从队列里取出一个page,爬取任务完成时,将page放回队列的后面。这样做的原因是重复利用page,减少页面的创建频率,但是要注意的是一个页面不能利用太久或者次数太多,防止出现crash的情况

  3. 拦截图片和多媒体资源的加载,多媒体资源和图片的加载会极大影响页面的加载速度,从而影响爬虫效率,所以要拦截(可选)。

  4. 我们选择获取整个页面内容,然后解析得到商品信息

    代码实现

    1.启动浏览器
     //指定启动路径,启动浏览器
            String path = new String("F:\\java教程\\49期\\vuejs\\puppeteer\\.local-chromium\\win64-722234\\chrome-win\\chrome.exe".getBytes(), "UTF-8");
            ArrayList<String> argList = new ArrayList<>();
            LaunchOptions options = new OptionsBuilder().withArgs(argList).withHeadless(false).withExecutablePath(path).build();
            argList.add("--no-sandbox");
            argList.add("--disable-setuid-sandbox");
            Browser browser = Puppeteer.launch(options
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值