Java爬虫实现爬取京东上的手机搜索页面HttpCliient + Jsoup

  

  

  

  

  

        & lt; dependencies>   & lt; dependency>   & lt; groupId> org.apache.httpcomponents   & lt; artifactId> httpclient   & lt; version> 4.5.3   & lt;/dependency>      & lt; dependency>   & lt; !——jsoup HTML解析器库@ https://jsoup.org/?   & lt; groupId> org.jsoup   & lt; artifactId> jsoup   & lt; version> 1.11.2   & lt;/dependency>      & lt; !——https://mvnrepository.com/artifact/log4j/log4j——比;   & lt; dependency>   & lt; groupId> log4j   & lt; artifactId> log4j   & lt; version> 1.2.17   & lt;/dependency>   & lt;/dependencies>      

log4j配置(log4j . properties),将信息及以上等级信息输出到控制台,不单独设置输出文档。

        log4j。rootLogger=INFO,控制台      #控制台   log4j.appender.Console=org.apache.log4j.ConsoleAppender   log4j.appender.Console.layout=org.apache.log4j.PatternLayout   log4j.appender.Console.layout。ConversionPattern=% d [% t] % 5 p [% c] - % m % n      

  

<强> 2.1需求分析

  

第一步,建立客户端与服务端的连接,并通过URL获得网页上的HTML内容。

  

第二步,解析HTML内容,获取需要的元素。

  

第三步,将HTML内容输出到本地的文本文档中,可直接通过其他数据分析软件进行分析。

  

根据以上分析,建立4个类,GetHTML(用于获取网站HTML), ParseHTML(用于解析HTML),用WriteTo(用于输出文档),Maincontrol(主控)。下面分别对四个类进行说明。为使代码尽量简洁,所有的异常均从方法上直接抛出,不抓。

  

<强> 2.2代码

  

2.2.1GetHTML类   

该类包含两个方法:getH(字符串url), urlControl(字符串baseurl, int页面),分别用于获取网HTML页及控制url。由于此次爬取的网页内容只是京东上某一类商品的搜索结果,所以不需要对页面上所有的url进行遍历,只需要观察翻页时url的变化,推出规律即可。只向外暴露urlControl方法,类中设置一个私人的日志属性:私有静态日志记录器=Logger.getLogger (getHTML.class);用于记录日志。

  

getH(字符串url),对单个url的HTML内容进行获取。

  

  

  

  


  
  

  

        进口java.io.IOException;   进口org.apache.http.HttpEntity;   进口org.apache.http.client.ClientProtocolException;   进口org.apache.http.client.methods.CloseableHttpResponse;   进口org.apache.http.client.methods.HttpGet;   进口org.apache.http.impl.client.CloseableHttpClient;   进口org.apache.http.impl.client.HttpClients;   进口org.apache.http.util.EntityUtils;   进口org.apache.log4j.Logger;      公开课getHTML {//建立日志   私有静态日志记录器=Logger.getLogger (getHTML.class);   私人getH静态字符串(字符串url)抛出ClientProtocolException, IOException {//控制台输出日志,这样每条访问的URL都可以在控制台上看到访问情况   log.info(“正在解析" + url);/*   *以下内容为HttpClient建立连接的一般用法   *使用HttpClient建立客户端   *使用得到方法访问指定URL   *获得应答   * */CloseableHttpClient客户=HttpClients.createDefault ();   HttpGet=new HttpGet (url);   CloseableHttpResponse响应=client.execute(得到);/*   *以下内容为将HTML内容转化为字符串   *获得应答体   *将应答体转为字符串格式,此处使用了EntityUtils中的toString方法,编码格式设置为“utf - 8”   *完成后关闭客户端与应答   * */HttpEntity实体=response.getEntity ();   字符串内容;   如果(实体!=null) {=EntityUtils内容。toString(实体、“utf - 8”);   client.close ();   response.close ();   返回内容;   其他}   返回null;   }   公共静态孔隙urlControl (String baseurl, int页面)抛出ClientProtocolException, IOException {//设置当前页计数   int数=1;//如果当前页小于想要爬取的页数则执行   而(计数& lt;页面){//实际访问的URL为不变的URL值拼接URL上变化的值   字符串u=baseurl +(2 *数- 1)+”,点击=0”;//此处调用ParseHTML类中的方法中对URL的HTML页面进行处理,后面详细介绍该类   字符串内容=ParseHTML.parse (getH (u) .toString ();//此处调用用WriteTo类中的方法对解析出来的内容写入到本地,后面详细介绍该类   WriteTo.writeto(内容);   数+ +;   }   }   }

Java爬虫实现爬取京东上的手机搜索页面HttpCliient + Jsoup