JSoup爬虫技术

JSoup爬虫技术写的都是自己的心得,转载请标明出处:https://blog.csdn.net/weixin_41156319/article/details/94560767JSoup是现在比较火的爬取数据的技术,因为其简单有效,对于学习过JS,JQuery的开发人员比较容易。现在爬虫技术一般都是通过HTTPClient进行获取页面源码,然后通过JSoup进行解析HTML页面。下面就我对JSoup的理解,并…

写的都是自己的心得,转载请标明出处:https://blog.csdn.net/weixin_41156319/article/details/94560767

JSoup是现在比较火的爬取数据的技术,因为其简单有效,对于学习过JS,JQuery的开发人员比较容易。现在爬虫技术一般都是通过HTTPClient进行获取页面源码,然后通过JSoup进行解析HTML页面。下面就我对JSoup的理解,并列举一个小Demo进行说明。

JSoup是什么?

 JSoup是一款Java的HTML解析器,主要用来对HTML解析。

JSoup的特点?

  • JSoup可以对Html页面字符串,文件,URL进行爬取并解析HTML。
  • JSoup可以利用DOM或则CSS选择器来查找标签进行获取数据
  • JSoup可以通过attr进行标签属性的更改
  • JSoup可以通过白名单来清理用户提交的内容,防止XSS攻击

实战-爬取京东商城商品信息

本实战直接采用JSoup进行页面抓取,页面数据爬取。虽然JSoup可以完成页面获取,但有局限性,只能支持HTTP和HTTPS协议。本Demo为了方便直接采用JSoup来开发,建议采用HTTPClient来获取源码。

首先展示一下获取到的数据,演示项目只抓取了一个页面的数据。

Goods{name='六福珠宝 网络专款足金康乃馨黄金珐琅工艺吊坠女款挂坠不含项链女款 计价 GDGTBP0022 2.63克(含工费171元)', price='1236.00', imgUrl='//img10.360buyimg.com/n7/jfs/t1/33090/4/15084/173381/5d195638E6acaf2ac/57963a0dafce6025.jpg', title='六福珠宝 网络专款足金康乃馨黄金珐琅工艺吊坠女款挂坠不含项链女款 计价 GDGTBP0022 2.63克(含工费171元)', href='https://item.jd.com/46526107175.html'}
Goods{name='炫银部落 黄金项链999足金吊坠18K金套链女心形3D硬金生日礼物 999足金心形吊坠+18k金链', price='229.00', imgUrl='//img14.360buyimg.com/n7/jfs/t1/83555/14/1070/87748/5cf48a2cEc3f57365/7a5eff80eb4bb098.jpg', title='炫银部落 黄金项链999足金吊坠18K金套链女心形3D硬金生日礼物 999足金心形吊坠+18k金链', href='//item.jd.com/49209944114.html'}
Goods{name='赛菲尔 黄金项链足金 9999金吊坠花朵锁骨链女款套链 芙蓉 送礼 金重约5.7-5.82克', price='2304.00', imgUrl='//img13.360buyimg.com/n7/jfs/t4726/58/2160648948/195202/7a708868/58f9d0a5N82afe5c7.jpg', title='赛菲尔 黄金项链足金 9999金吊坠花朵锁骨链女款套链 芙蓉 送礼 金重约5.7-5.82克', href='//item.jd.com/3567923.html'}
Goods{name='鸣钻国际 水滴之恋 黄金项链套链女款 足金石榴石吊坠项坠挂坠配金链子 珍贵如你,幸运如我,满1000减100,白条6期免息,好货不贵,立即抢购,猛戳!!', price='3488.00 ', imgUrl='//img10.360buyimg.com/n7/jfs/t1/10512/15/2087/93948/5be00b94Ea54ead1f/66394c64d9dda521.jpg', title='珍贵如你,幸运如我,满1000减100,白条6期免息,好货不贵,立即抢购,猛戳!!', href='//item.jd.com/100000837950.html'}
Goods{name='周大福 礼物 依恋 肖邦链 足金黄金项链(工费:98计价) F172885 足金 45cm 约5.80g 【京东配送,急速送达】6.25-7.3热销商品低至120元,用券更省,立即抢购!', price='2447.00', imgUrl='//img10.360buyimg.com/n7/jfs/t18466/309/585753538/217120/1b00fc3d/5a97c76cNf5b706de.jpg', title='【京东配送,急速送达】6.25-7.3热销商品低至120元,用券更省,立即抢购!', href='//item.jd.com/5712110.html'}
Goods{name='周生生 CHOW SANG SANG 黄金足金万字项链百搭素链 女款 09251N 40厘米 - 2.5克 【京东物流,高效送达】6.30-7.7,热销黄金满2000减80/满3500减200/满5000减350,指定非黄金饰品每满599减60,领券再减!', price='1087.00', imgUrl='//img11.360buyimg.com/n7/jfs/t9781/93/1083934663/62687/2bc1e978/59dc92a7N9f23d3a9.jpg', title='【京东物流,高效送达】6.30-7.7,热销黄金满2000减80/满3500减200/满5000减350,指定非黄金饰品每满599减60,领券再减!', href='//item.jd.com/100001374616.html'}
Goods{name='潮宏基 黄金足金 精灵宝可梦-皮卡丘欢呼 黄金吊坠女款 定价 S 预售约7月中旬发货', price='1580.00', imgUrl='//img13.360buyimg.com/n7/jfs/t1/64860/15/2538/167601/5d0c814bEee3e7dc8/2b79a0a9a845111d.jpg', title='潮宏基 黄金足金 精灵宝可梦-皮卡丘欢呼 黄金吊坠女款 定价 S 预售约7月中旬发货', href='https://item.jd.com/29658717493.html'}
Goods{name='周生生CHOW SANG SANG 18K金黄色黄金项链百搭素链女款 04800N18KY 45厘米 【京东物流,高效送达】6.30-7.7,热销黄金满2000减80/满3500减200/满5000减350,指定非黄金饰品每满599减60,领券再减!', price='660.00', imgUrl='//img10.360buyimg.com/n7/jfs/t10525/321/1105962847/56507/60dc5a34/59dc91dbN68f6127c.jpg', title='【京东物流,高效送达】6.30-7.7,热销黄金满2000减80/满3500减200/满5000减350,指定非黄金饰品每满599减60,领券再减!', href='//item.jd.com/5483710.html'}
Goods{name='周大福(CHOW TAI FOOK)礼物 简约 足金黄金项链 F159797 68 45cm 约3.7克 【京东配送,急速送达】6.25-7.3热销商品低至120元,用券更省,立即抢购!', price='1566.50', imgUrl='//img10.360buyimg.com/n7/jfs/t16270/65/1937678174/69336/cd9050b4/5a6ec510N93c19094.jpg', title='【京东配送,急速送达】6.25-7.3热销商品低至120元,用券更省,立即抢购!', href='//item.jd.com/6308550.html'}
Goods{name='周六福 珠宝女款黄18K金项链时尚肖邦链锁骨链 KH050484 42cm 【京东配送,高效送达】7.1-7.9周六福珠宝周年店庆,指定款每满1000减60,立即抢购', price='436.00', imgUrl='//img12.360buyimg.com/n7/jfs/t21529/11/2105069081/101544/63f5552c/5b45f4e7N9de5fef5.jpg', title='【京东配送,高效送达】7.1-7.9周六福珠宝周年店庆,指定款每满1000减60,立即抢购', href='//item.jd.com/8347787.html'}
Goods{name='欧弗莱 黄金项链足金999女款镶嵌时尚心形吊坠套链锁骨链浪漫求爱生日礼物送女友送老婆 心心相印吊坠+足金项链(现货立发) 【买即送检查证书,假一罚三】【免费刻字,代写贺卡】【品质保障,放心购】', price='2315.00', imgUrl='//img13.360buyimg.com/n7/jfs/t1/58433/19/3099/110834/5d103c20E0a56630c/4df63c869a17c6c1.jpg', title='【买即送检查证书,假一罚三】【免费刻字,代写贺卡】【品质保障,放心购】', href='//item.jd.com/42971379848.html'}
Goods{name='周大福(CHOW TAI FOOK)礼物 百搭简约 足金黄金项链 F183782 48 40cm 约3.4克 【京东配送,急速送达】6.25-7.3热销商品低至120元,用券更省,立即抢购!', price='1425.00', imgUrl='//img13.360buyimg.com/n7/jfs/t16108/18/1722972571/181934/3a69828f/5a6ed044N8f161127.jpg', title='【京东配送,急速送达】6.25-7.3热销商品低至120元,用券更省,立即抢购!', href='//item.jd.com/6925068.html'}
Goods{name='鸣钻国际 倾世之恋1 黄金项链 足金吊坠套链锁骨链女款 送女友生日礼物', price='5999.00', imgUrl='//img14.360buyimg.com/n7/jfs/t1/20698/23/3221/103934/5c2595b5Ef44f73d8/fdf3fa4b93009a1b.jpg', title='鸣钻国际 倾世之恋1 黄金项链 足金吊坠套链锁骨链女款 送女友生日礼物', href='https://item.jd.com/100001626274.html'}
Goods{name='周大福(CHOW TAI FOOK)爱恋 足金黄金项链 F188335 58 约3克 45cm 【京东配送,急速送达】6.25-7.3热销商品低至120元,用券更省,立即抢购!', price='1273.00', imgUrl='//img13.360buyimg.com/n7/jfs/t18061/122/1446734739/98751/a477e3f4/5acc3ce1N21bf1d5c.jpg', title='【京东配送,急速送达】6.25-7.3热销商品低至120元,用券更省,立即抢购!', href='//item.jd.com/100002329283.html'}
Goods{name='米芙诺 黄金项链心语吊坠18K黄金套链love项链女锁骨链生日礼物订婚送女友 心语套链 长40厘米 爱的心语,闪闪亮。送玫瑰礼盒,带证书!', price='739.00', imgUrl='//img13.360buyimg.com/n7/jfs/t23458/33/578117647/325664/cd69009e/5b35cbdeNb66dbc81.jpg', title='爱的心语,闪闪亮。送玫瑰礼盒,带证书!', href='//item.jd.com/29776595913.html'}
Goods{name='周大福 礼物 ing系列 爱圆满 足金黄金项链/吊坠(工费:238计价) F206704 足金 45cm 约7.50g 【京东配送,急速送达】6.25-7.3热销商品低至120元,用券更省,立即抢购!', price='3275.50', imgUrl='//img14.360buyimg.com/n7/jfs/t18172/190/647596835/62304/71aca859/5a9cbf8aNc83f18d6.jpg', title='【京东配送,急速送达】6.25-7.3热销商品低至120元,用券更省,立即抢购!', href='//item.jd.com/5563119.html'}
Goods{name='周大福(CHOW TAI FOOK)礼物 相恋 足金黄金项链 F173873 68 45cm 约3.9克 【京东配送,急速送达】6.25-7.3热销商品低至120元,用券更省,立即抢购!', price='1647.50', imgUrl='//img11.360buyimg.com/n7/jfs/t19066/149/337920283/195653/6800409e/5a6eb93eN022cc074.jpg', title='【京东配送,急速送达】6.25-7.3热销商品低至120元,用券更省,立即抢购!', href='//item.jd.com/100000480751.html'}
Goods{name='周生生 CHOW SANG SANG 黄金足金Amore心心相印项链女款 78039N 42厘米 4.14克 【京东物流,高效送达】6.30-7.7,热销黄金满2000减80/满3500减200/满5000减350,指定非黄金饰品每满599减60,领券再减!', price='1784.00', imgUrl='//img11.360buyimg.com/n7/jfs/t9829/15/1088569000/146286/84dda978/59dc944cN654da58a.jpg', title='【京东物流,高效送达】6.30-7.7,热销黄金满2000减80/满3500减200/满5000减350,指定非黄金饰品每满599减60,领券再减!', href='//item.jd.com/5113221.html'}
Goods{name='花好玉缘 蝶恋花 18K黄金项链 金吊坠项坠套链锁骨链女款 送女友生日礼物 KJD161', price='2899.00', imgUrl='//img12.360buyimg.com/n7/jfs/t28960/135/290527453/95658/7bf5468c/5bee6661N7ec03adf.jpg', title='花好玉缘 蝶恋花 18K黄金项链 金吊坠项坠套链锁骨链女款 送女友生日礼物 KJD161', href='https://item.jd.com/100001949482.html'}
Goods{name='赛菲尔 18k金项链 女款O字十字K金项链 锁骨链女 金链子', price='347.00', imgUrl='//img10.360buyimg.com/n7/jfs/t5473/195/650144607/76431/c1c13bae/5904431fN59293854.jpg', title='赛菲尔 18k金项链 女款O字十字K金项链 锁骨链女 金链子', href='//item.jd.com/4030285.html'}
Goods{name='CEMNI千年珠宝 黄金项链 全橄榄足金999土豪项链 金链子显粗男女款 父亲节礼物 约15.12g 长约45cm 多退少补', price='5156.00', imgUrl='//img11.360buyimg.com/n7/jfs/t3193/11/4946545803/318543/7968dbd2/585a447eN62fde79c.jpg', title='CEMNI千年珠宝 黄金项链 全橄榄足金999土豪项链 金链子显粗男女款 父亲节礼物 约15.12g  长约45cm 多退少补', href='//item.jd.com/31043961616.html'}
Goods{name='晴爱 黄金项链 999足金吊坠女款双心锁骨链套链 生日礼物送女友 双心套链 约4.3-4.4g 节日礼物送女友送老婆,支持七天无理由退换货', price='1859.00', imgUrl='//img11.360buyimg.com/n7/jfs/t24391/202/1322725541/141853/32101489/5b5ac38eN2a15039a.jpg', title='节日礼物送女友送老婆,支持七天无理由退换货', href='//item.jd.com/14990255991.html'}
Goods{name='御龙金翠 黄金项链 心心相印黄金吊坠套链 足金黄金首饰 金项链女款链长42cm+3cm 黄金心心相印(光砂升级版)约5.1克 顺丰发货,免费刻字请联系客服,或者直接留言', price='1868.00', imgUrl='//img10.360buyimg.com/n7/jfs/t1/27857/3/10711/63399/5c88d6abE150b76bb/6664e32cdea7e6e4.jpg', title='顺丰发货,免费刻字请联系客服,或者直接留言', href='//item.jd.com/1647784205.html'}
Goods{name='周大福(CHOW TAI FOOK)礼物 时尚水波链 18K金项链 E121035 980 45cm 【京东配送,急速送达】6.25-7.3热销商品低至120元,用券更省,立即抢购!', price='931.00', imgUrl='//img10.360buyimg.com/n7/jfs/t19720/73/584000607/178264/935d52d/5a97c5c5N10c1d476.jpg', title='【京东配送,急速送达】6.25-7.3热销商品低至120元,用券更省,立即抢购!', href='//item.jd.com/5264080.html'}
Goods{name='先恩尼 黄金丘比特吊坠 女款足金项链 小天使黄金吊坠 足金吊坠 黄金项链 黄金饰品 爱情礼物', price='1560.00', imgUrl='//img13.360buyimg.com/n7/jfs/t1/57930/27/2179/60013/5cff2b95E48155a1f/70623432f4d8b8f3.jpg', title='先恩尼 黄金丘比特吊坠 女款足金项链 小天使黄金吊坠 足金吊坠 黄金项链 黄金饰品 爱情礼物', href='https://item.jd.com/1017375403.html'}
Goods{name='周大福(CHOW TAI FOOK)因你而幸lucky字母足金黄金项链 吊坠 F217504 108 45cm 约6克 【京东配送,急速送达】6.25-7.3热销商品低至120元,用券更省,立即抢购!', price='2538.00', imgUrl='//img10.360buyimg.com/n7/jfs/t17158/131/1487123533/124382/aba706ab/5acc37dcNa396117d.jpg', title='【京东配送,急速送达】6.25-7.3热销商品低至120元,用券更省,立即抢购!', href='//item.jd.com/7135715.html'}
Goods{name='周大福(CHOW TAI FOOK)简约 足金黄金项链 F132516 108 45cm 约9.0克 【京东配送,急速送达】6.25-7.3热销商品低至120元,用券更省,立即抢购!', price='3753.00', imgUrl='//img12.360buyimg.com/n7/jfs/t17683/296/1440839068/189380/cdd6356c/5acc37c4N09effc41.jpg', title='【京东配送,急速送达】6.25-7.3热销商品低至120元,用券更省,立即抢购!', href='//item.jd.com/7135717.html'}
Goods{name='周大福 简约 足金黄金项链(工费:168计价) F178119 足金 45cm 约9.00g 6.28-7.3日追逐群星,黄金低至238元,用券更省猛戳', price='3813.00', imgUrl='//img12.360buyimg.com/n7/jfs/t3121/176/2913518645/237322/cc8627a0/57e8bbe7Na2e6e439.jpg', title='6.28-7.3日追逐群星,黄金低至238元,用券更省猛戳', href='//item.jd.com/13020508772.html'}
Goods{name='赛菲尔 黄金项链足金 9999金吊坠双心扉锁骨链女款套链 新品送礼', price='1651.00', imgUrl='//img12.360buyimg.com/n7/jfs/t1/59718/17/3388/83792/5d197805E0680247d/74cb083f4a414aee.jpg', title='赛菲尔 黄金项链足金 9999金吊坠双心扉锁骨链女款套链 新品送礼', href='//item.jd.com/3998872.html'}
Goods{name='翠广源 黄金项链女款999足金吊坠女士爱心形锁骨链套链 送女友、老婆礼物 慕心足金吊坠+黄金项链(总金重约2.4g) 顺丰航空1-2天达、六期免息、支持京东物流货到付款,一对一配送证书、假一罚十、七天无理由退换', price='1190.00', imgUrl='//img12.360buyimg.com/n7/jfs/t1/35170/18/4424/100884/5cbbe4b4E133c1fda/72384c26d068e50c.jpg', title='顺丰航空1-2天达、六期免息、支持京东物流货到付款,一对一配送证书、假一罚十、七天无理由退换', href='//item.jd.com/45919300547.html'}

项目代码如下:

public static void main(String[] args) throws IOException {
        String url = "https://search.jd.com/Search?keyword=%E9%BB%84%E9%87%91%E9%A1%B9%E9%93%BE&enc=utf-8";
        //商品集合
        List<Goods> goods = Lists.newArrayList();
        //获取Dom并解析
        Connection conn = Jsoup.connect(url);
        // 修改http包中的header,伪装成浏览器进行抓取
        conn.header("User-Agent",user-agent);
        Document doc = conn.get();
        Elements liElements = doc.getElementsByClass("gl-item");
        for(Element e : liElements) {
            Goods good = new Goods();
            Elements e1 = e.children();
            String title = e1.get(0).getElementsByTag("div").get(0).getElementsByTag("a").attr("title");
            String href = e1.get(0).getElementsByTag("div").get(0).getElementsByTag("a").attr("href");
            String imgUrl = e1.get(0).getElementsByTag("div").get(0).getElementsByTag("img").attr("source-data-lazy-img");

            String price = e.getElementsByClass("p-price").get(0).getElementsByTag("i").text();
            String name = e.getElementsByClass("p-name").get(0).getElementsByTag("a").text();
            good.setHref(href);
            good.setImgUrl(imgUrl);
            good.setName(name);
            good.setPrice(price);
            good.setTitle(title);
            goods.add(good);
        }
        for (Goods goods : goodsInfos){
                System.out.println(goods);
            }
    }
代码中url含带中文直接进行转码

代码中conn.header()方法中设置的User-Agent是为了让服务器伪装成浏览器进行访问。可以使用JS代码来查看自己浏览器user-agent

通过javascript:alert(navigator.userAgent)来查看。

在爬取数据时查看待爬取数据源码规律,进行查看找到最佳爬取数据使用的获取标签内容方法。

上面的代码是自己习惯所向,每个人获取标签属性都不一样。比如我们获取界面的title时可以直接使用doc.title()。使用HTTPClient可以通过传输页面访问条件进行多页面爬取。爬取任务一般时间较长,可以放在线程中执行,为了演示方便没有写在线程中。方法多种多样。JSoup最重要的三个类就是:JSoup,Document,Element类,三者方法的具体API下面我已展示出来:

JSOUP类API    Document类API  Element类API

有需要的读者可以进入官网API查看,进行更细致的学习。本人程序员小白,欢迎各位朋友进行指点讨论。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/38589.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注