Java爬虫初试01--Jsoup and httpClient+正则表达

1 使用JSoup对虎扑新闻进行爬取

 

目标网站:虎扑体育网

爬取内容:链接+标题

工具:idea +Jsoup

效果:

开始:

        引入Jsoup依赖:

   org.jsoupjsoup1.12.1

        编写Jsoup工具类:

package Jsoup;import com.sun.xml.internal.ws.developer.MemberSubmissionEndpointReference;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;import java.io.IOException;public class JsoupTest {public void jsoupList(String url){try {
//拿到网页内容Document document= org.jsoup.Jsoup.connect(url).get();
//获取想拿的值,通过css选择器Elements elements=document.select("div.news-list>ul>li>div.list-hd>h4>a");
//循环输出即可for (Element element:elements) {String d_url=element.attr("href");String title=element.ownText();System.out.println("详情页链接:"+d_url+",详情页标题:"+title);}} catch (IOException e) {e.printStackTrace();}}}

      测试运行:

    public static void main(String[] args){String url="https://voice.hupu.com/nba";JsoupTest jsoupTest=new JsoupTest();jsoupTest.jsoupList(url);}

       成功!!!

原理分析

   目标网站分析:对目标网站进行分析,了解抓取的位置(通过Css选择器)

想要拿到对应的东西  就需要通过css:div.news-list>ul>li>div.list-hd>h4>a

2 使用httpclient+正则表达式爬取虎扑

目标网站:虎扑体育网

爬取内容:链接+标题

工具:idea +HttpClient+正则

效果:

开始:

导入相关的包:


org.apache.httpcomponentshttpclient4.5.10org.apache.httpcomponentshttpcore4.4.10org.apache.httpcomponentshttpmime4.5.10

如下片段   是每一个标题的通用结构:所以结构需要严格把握,因为存在多个a的地方 

	 

代码:

package HttpClient;import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;import java.util.regex.Matcher;
import java.util.regex.Pattern;public class HttpClientPc {public static void main(String[] args){String url="https://voice.hupu.com/nba";HttpClientPc httpClientPc=new HttpClientPc();httpClientPc.httpClientList(url);}/*** httpclient + 正则表达式 获取虎扑新闻列表页* @param url 虎扑新闻列表页url*/public void httpClientList(String url){try {CloseableHttpClient httpclient = HttpClients.createDefault();HttpGet httpGet = new HttpGet(url);CloseableHttpResponse response = httpclient.execute(httpGet);//对返回数据进行处理if (response.getStatusLine().getStatusCode() == 200) {HttpEntity entity = response.getEntity();String body = EntityUtils.toString(entity,"utf-8");if (body!=null) {/** 替换掉换行符、制表符、回车符,去掉这些符号,正则表示写起来更简单一些* 只有空格符号和其他正常字体*/Pattern p = Pattern.compile("\t|\r|\n");Matcher m = p.matcher(body);body = m.replaceAll("");/** 提取列表页的正则表达式* 去除换行符之后的 li*           

与球迷亲切互动!凯尔特人官方晒球队开放训练日照片

*/Pattern pattern = Pattern.compile("\\s*

\\s* (.*?)\\s*

\\s* " );Matcher matcher = pattern.matcher(body);// 匹配出所有符合正则表达式的数据while (matcher.find()){ // String info = matcher.group(0); // System.out.println(info);// 提取出链接和标题System.out.println("详情页链接:"+matcher.group(1)+" ,详情页标题:"+matcher.group(2));}}else {System.out.println("处理失败!!!获取正文内容为空");}} else {System.out.println("处理失败!!!返回状态码:" + response.getStatusLine().getStatusCode());}}catch (Exception e){e.printStackTrace();}}}

参考文章:Java 网络爬虫,就是这么的简单_平头哥的技术博文-CSDN博客_java 爬虫


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部