阿粉教你如何使用爬虫来对比某东上的数据

[[346986]]

本文转载自微信公众号「Java极客技术」,作者鸭血粉丝。转载本文请联系Java极客技术公众号。   

自从阿粉经历过上次的大数据杀熟事件之后,明显感觉现在的平台对于用户非常的不友好呀,只要你高频的搜索某些关键词的同时,却往往是越对比,直接就买在了最高峰,就和买股票一样,每次总感觉能抄底,殊不知买在了天台。于是阿粉想了个办法,把所有的数据扒拉下来,我自己做对比,也不去搜索了,省的平台上总是根据我的搜索内容去进行推荐。

Java如何做爬虫

大家在想到爬虫的时候,一定想说,爬虫,这东西不是学Python的人员才能做的么?我们Java能做呢?阿粉想告诉大家的是,可以,Java语言这么多年,历时这么久,怎么可能没有这些内容呢,于是阿粉就开始了学习了 Java 的爬虫道路。

Jsoup

阿粉在介绍这个类之前,肯定先得说说我们通常看到的内容是由什么组成的,现在比如说我们做开发的都知道,至少我们在电脑端访问某东,某宝的数据的时候,他们给我们反馈的数据都是通过 HTML 来进行展示的,比如说这个样子:

在开发的肯定都是知道,这些都是些什么意思,阿粉在这里我们就不再进行详细的介绍,说这个 HTML 到底是个啥东西了,阿粉需要介绍的是 Jsoup ,然后告诉大家怎么使用 Jsoup 这个类爬取京东的数据。

正如官方文档所给我们提示的内容,怎么去解析一段 HTML 代码 :

  1. String html = "<html><head><title>First parse</title></head>" 
  2.   + "<body><p>Parsed HTML into a doc.</p></body></html>"
  3.    
  4. Document doc = Jsoup.parse(html); 

而这个 Document是什么呢?我们可以输出一下看一眼,顺带着看看源码解释,毕竟嘛,开发人员不看这个类是干嘛的,就不是个合格的程序员不是,

输出内容:

  1. <html> 
  2.  <head> 
  3.   <title>First parse</title> 
  4.  </head> 
  5.  <body> 
  6.   <p>Parsed HTML into a doc.</p> 
  7.  </body> 
  8. </html> 

其实可以看出这里,Document实际上是给我们输出了一个新的文档,而且是整理之后的,相当于为之后的分析 HTML 做了专业的准备。

而我们在看源码的注释的时候,不难看出,Jsoup不单单是能解析我们给的这个字符串,还可以是一个URL,也可以是一个文件。

它把我们给他的 HTML 字符串转换成了一个对象,这个对象就是我们上面看到的 Document,然后我们就可以顺利成章的去使用 Document 对象里面的元素了。

上面是解析字符串,那我们看下面这个解析 URL 的存在:

  1. public static void main(String[] args) { 
  2.        try { 
  3.            Document doc = Jsoup.connect("https://www.jd.com/?cu=true&utm_source=baidu-pinzhuan&utm_medium=cpc&utm_campaign=t_288551095_baidupinzhuan&utm_term=0f3d30c8dba7459bb52f2eb5eba8ac7d_0_f38cf584e9fb4328a3e0d2bb515e1458").get(); 
  4.            String title = doc.title(); 
  5.            System.out.println(title); 
  6.        }catch (IOException e){ 
  7.            e.printStackTrace(); 
  8.        } 
  9.    } 

大家执行以下的话,就一定能够看到这个 title 到底是什么,而结果是这个样子的:

和我们在百度搜索的时候是不是不太一样了,因为这个是进入之后的主页。

Element

而在我们看源码的时候,我们能清晰的看到,Document 是继承了 Element 的类,那么必然可以调用 Element 里面的方法,比如说:

  1. getElementById(String id); //是不是有点眼熟,像不像Js里面的ID选择器 
  2.  
  3. getElementsByTag(String tagName);// 通过标签来选择 
  4.  
  5. getAllElements();//获取所有的Element的元素 

关于方法,阿粉就不再一一的进行叙述了,大家有兴趣的可以去看看官方文档,或者去看看这个源码,包名送上 package org.jsoup.nodes

有人肯定开始烦了,说阿粉,你就别介绍了,那你说了太多废话了,赶紧介绍爬京东,好的,这就开始,

我们在爬取之前肯定先分析京东的网址,比如说我搜索硬盘:

下面就出来了一堆数据,而我们则需要解析的就是在 HTML 种最有用的那一部分,比如:

  1. <div class="p-price"
  2.     <strong class="J_54994027563" data-done="1"
  3.         <em>¥</em><i>879.00</i> 
  4.     </strong> 
  5. </div> 

在这里我们就记下了这个价格,然后我们去找我们要的名字

看,p-name就是我们需要的名字,那么我们就可以写代码了。

  1. //这是京东的搜索网址,我们把这个keyword关键词提取出来,注意中英文,中文要处理一下 
  2.    String url = "https://search.jd.com/Search?keyword=" + keyword; 
  3.    url = url + "&enc=utf-8"
  4.    Document document = Jsoup.parse(new URL(url), 40000); 
  5.    
  6.    //我们先找这个 List,然后一层一层的遍历 
  7.    Element element = document.getElementById("J_goodsList"); 
  8.    Elements elements = element.getElementsByTag("li"); 
  9.    for (Element el : elements) { 
  10.        String img = el.getElementsByTag("img").eq(0).attr("source-data-lazy-img"); 
  11.        String price = el.getElementsByClass("p-price").eq(0).text(); 
  12.        String title = el.getElementsByClass("p-name").eq(0).text(); 
  13.        String shop = el.getElementsByClass("p-shop").eq(0).text(); 
  14.           System.out.println("========================="); 
  15.           System.out.println("标题:" + title); 
  16.           System.out.println("图片url:" + img); 
  17.           System.out.println("店铺:" + shop); 
  18.           System.out.println("价格:" + price); 
  19.     }  

大家看执行的效果图:

如果你还有兴趣的话,你可以直接在for循环里面新建一个对象,弄一个List集合,然后在最后的的时候,执行一下插入数据库的方法,这样是不是就能完整的把数据都保存下来了呢?

写在最后

为什么阿粉介绍爬取某东,而不去爬取某宝,因为某东是允许你爬取我的数据的,他没有做任何的反扒机制,而某宝则不行,正是应了那句话

“某东:我卖的是真货,你说我骗人,我赔给你,某宝:我卖假货,但是我不承认,你能拿我怎么办?某多多:亲,假一赔十,结果发过来11件假货,”

 

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/124732.html<

(0)
运维的头像运维
上一篇2025-02-23 10:13
下一篇 2025-02-23 10:14

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

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