爬虫案例----从https://www.csdn.net/网站中获得与“企业博客”相关的数据

爬虫案例----从https://www.csdn.net/网站中获得“企业博客”相关的数据


import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class PaChong {

	public static void main(String[] args) throws Exception {
		// 封装地址
		URL url = new URL("https://www.csdn.net/");
		// 获得连接对象,向下转型为HttpURLConnection对象
		HttpURLConnection huc = (HttpURLConnection) url.openConnection();
		// 打开链接
		huc.connect();
		// 创建装链接数据的StringBuilder对象
		StringBuilder stb = new StringBuilder();
		// 如果打开链接的响应状态码是200,说明请求响应成功
		if (huc.getResponseCode() == 200) {
			// 从连接上获得数据输入流
			InputStream is = huc.getInputStream();
			// 将数据输入流包装成缓冲字符输入流
			BufferedReader br = new BufferedReader(new InputStreamReader(is));
			// 从流中读取字符数据,一次读一行,并将读到的数据放到装连接数据的StringBuilder对象stb里面去
			String str = br.readLine();
			while (str != null) {
				stb.append(str + "\r\n");
				str = br.readLine();
			}
		}
		// 将读到的数据转换成字符串
		String s = stb.toString();
//		System.out.println(s);
		// 获得“企业博客”的数据
		String qiYeBoKe = getQiYeBoKe(s);
//		System.out.println(qiYeBoKe);
		System.out.println("企业博客数据读取完毕");

		// 获得企业博客的log图片地址
		ArrayList<String> imgUrlList = getAllImageUrl(qiYeBoKe);
		for (String str : imgUrlList) {
			System.out.println(str);
		}
		System.out.println("--------企业博客的图片地址读取完毕--------");

		// 获得各企业博客的标题
		ArrayList<String> titleList = getAllTitle(qiYeBoKe);
		for (String str : titleList) {
			System.out.println(str);
		}
		System.out.println("--------企业博客的标题读取完毕--------");

	}

	// 获得企业博客的数据的方法
	public static String getQiYeBoKe(String s) {
		// 正则表达式:<div class="enterprise_blog">(.*\s)+(?=<div class="fixed24">)
		// 根据正则表达式创建一个字符串匹配器
		Matcher m = Pattern.compile("<div class=\"enterprise_blog\">(.*\\s)+(?=<div class=\"fixed24\">)").matcher(s);
		if (m.find()) {
			s = m.group();
			return s;
		}
		return null;
	}

	// 获得企业博客中企业的log图片地址的方法
	public static ArrayList<String> getAllImageUrl(String s) {
		ArrayList<String> imgUrlList = new ArrayList<>();
		// 正则表达式:(?<=<img\s+src=").+?(?=" alt=")
		Matcher matcher = Pattern.compile("(?<=<img\\s+src=\").+?(?=\" alt=\")").matcher(s);
		while (matcher.find()) {
			String imgUrl = matcher.group();
//			System.out.println("地址为" + imgUrl);
			imgUrlList.add(imgUrl);
		}
		return imgUrlList;
	}

	// 获得各企业博客的标题的方法
	public static ArrayList<String> getAllTitle(String html) {
		ArrayList<String> titleList = new ArrayList<>();
		// 正则表达式为:(?<=target="_blank">).+?(?=</a>)
		Pattern pattern = Pattern.compile("(?<=target=\"_blank\">).+?(?=</a>)");
		Matcher matcher = pattern.matcher(html);
		while (matcher.find()) {
			String title = matcher.group();
			titleList.add(title);
		}
		return titleList;
	}

}

运行结果为:

企业博客数据读取完毕
https://profile.csdnimg.cn/2/D/6/1_devcloud
https://profile.csdnimg.cn/0/F/A/1_alitech2017
https://profile.csdnimg.cn/3/5/E/1_meituantech
https://profile.csdnimg.cn/C/0/8/1_sequoiadb_official
https://profile.csdnimg.cn/E/D/D/1_guduzhongliang
https://profile.csdnimg.cn/E/1/9/1_weixin_45449540
--------企业博客的图片地址读取完毕--------
华为云官方博客
阿里技术
美团技术团队
巨杉数据库技术社区
千锋教育
百度大脑
--------企业博客的标题读取完毕--------
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值