爬虫是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。现在比较适合写网络爬虫的应该是Python,今天给大家介绍一下java编写网络爬虫的简单案例。
话不多说,直接上代码
public class SpiderService {public final static String REQUEST_URL = "http://news.sohu.com/";public final static String KEYWORD = "^.*疫情.*#34;;public static Integer count = 0;public static void spider(String url) throws Exception {URL requestUrl = new URL(url);URLConnection urlConnection = requestUrl.openConnection();BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));String input = bufferedReader.readLine();while(input !=null && count<1000 ){Pattern p = Pattern.compile(KEYWORD);Matcher m = p.matcher(input);while(m.find()) {count++;String matchContent = m.group();String url1 = getUrl(matchContent);if(!StringUtils.isEmpty(url1)){spider(url1);}else{String value = getValue(matchContent);System.out.println("网址url: "+url+",内容: "+value);}}input = bufferedReader.readLine();}}private static String getUrl(String matchContent) {String regex = "href=\"(http|https://.*?)[\"\\s]";Pattern p = Pattern.compile(regex);Matcher m = p.matcher(matchContent);String content = null;//会存在多个链接,可以用个集合进行存储,这边就简单展示 只取一条if(m.find()){content = m.group(1);}return content;}private static String getValue(String matchContent){String regex = "[\\w,,.。\\f\\t\\v\\u4e00-\\u9fa5]*疫情[\\w,,.。\\f\\t\\v\\u4e00-\\u9fa5]*";Pattern p = Pattern.compile(regex);Matcher m = p.matcher(matchContent);String content = null;//会存在多个内容,可以用个集合进行存储,这边就简单展示 只取一条if (m.find()){content = m.group();}return content;}public static void main(String[] args) throws Exception {spider(REQUEST_URL);}}
1,首先定义一个起始爬取位置即REQUEST_URL,这边我选择从搜狐新闻网开始爬取。
然后是定义的需要爬取的内容,年关将至,疫情防控依旧严峻,所以我这边选择了疫情作为KEYWORD,这边使用正则表达式。
还定义了一个count用来统计爬出的数量。
2,接着通过url请求REQUEST_URL,并通过BufferedReader读取每次处理一行数据。对匹配关键字的内容进行进一步的处理。
3,通过getUrl方法找到匹配内容中的超链接信息(此处代码简化处理,默认一条,实际会出现多条,通过集合存储)。如果存在超链接信息,则递归调用spider方法继续处理。
4,如果不含有超链接信息,则直接通过getValue方法通过正则表达式匹配出相关信息内容(这边也简化处理,一行数据只取一条,实际会多条,集合进行存储)
2,文中正则表达式的方式不一定是最佳的,欢迎各位大佬点评。
3,由于存在html标题设置和content实际内容都包含关键字等情况,爬出来的数据内容可能会出现重复的情况,大家可以先把匹配出来的内容用一个集合保存后再进行去重处理。
4,大概的思路其实就是这样,大家可以在此基础上拓宽,当时面试的时候也有公司问过这种爬虫大概应该怎么写,也希望能帮助到大家。
喜欢的可以收藏加关注,后面会持续更新相关内容
版权声明:我们致力于保护作者版权,注重分享,被刊用文章【爬虫案例(java编写网络爬虫的简单案例分享)】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!;
工作时间:8:00-18:00
客服电话
电子邮件
beimuxi@protonmail.com
扫码二维码
获取最新动态
