信息领域热词分析系统--java爬取CSDN中文章标题即链接

package zuoye1;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.processor.PageProcessor;

public class CSDNPageProcessor implements PageProcessor {

private static Connection conn = null;

private static PreparedStatement ps = null;
 // 标题和链接获取

private static String TITLEQUERY = "div.list_con div.title h2 a";

// 作者

private static String AUTHORQUERY = "dl.list_userbar  dd.name  a";

//初始化带爬取网页地址
     private static List<String> urls() {
     
      List<String> listUrl=new ArrayList<String>();
      String[] type=new String[]{"nav/newarticles","nav/news","nav/ai","nav/cloud","nav/db","nav/career","nav/game","nav/engineering","nav/other"};
      for(int i=0;i<type.length;i++) {
       String url2="https://blog.csdn.net/"+type[i];
      
       listUrl.add(url2); 
      }
      return listUrl;
     }

//jsoup根据html字符串和语法来获取内容
     private static String selectDocumentText(String htmlText,String Query) {
      Document doc=Jsoup.parse(htmlText);
      String select=doc.select(Query).text();
      return select;
     }
    
     //jsoup根据html字符串和语法获取链接地址
     private static String selectDocumentLink(String htmlText,String Query) {
      Document doc=Jsoup.parse(htmlText);
      String select=doc.select(Query).attr("href");
      return select;
     }
    
 @Override
 public Site getSite() {
  return Site.me().setSleepTime(1000).setRetryTimes(10);
 }

//编写抽取逻辑
 @Override
 public void process(Page page) {
  
  page.addTargetRequests(urls());
  
  //定义如何抽取页面信息
  List<String> htmls=page.getHtml().xpath("//li[@class=‘clearfix‘]/html()").all();
  
  List<JavaBokeModel> javaBokes=new ArrayList<JavaBokeModel>();
  for(String html:htmls) {
   JavaBokeModel javaBoke=new JavaBokeModel();
  //标题和链接
   String title=selectDocumentText(html,TITLEQUERY);
   
   String linke=selectDocumentLink(html,TITLEQUERY);
     //作者和作者主页
   String author=selectDocumentText(html,AUTHORQUERY);
   
  //简介
   
   System.out.println(title+"   "+linke+"  "+author);
   javaBoke.setTitle(title);
   javaBoke.setAuthor(author);
   
   javaBoke.setLinke(linke);
  
   javaBokes.add(javaBoke);
     
  }
  
  File.WriteStringToFile2(javaBokes);

}
 
 public static void main(String[] args) {
  long startTime,endTime;
  DBUtil.getConnection();
  startTime=new Date().getTime();
  Spider create=Spider.create(new CSDNPageProcessor());
     create.addUrl("https://blog.csdn.net/").thread(5).run();
  try {
   ps.close();
   conn.close();
  }catch(Exception e) {
   
  }
  endTime=new Date().getTime();
  System.out.println("用时为:"+(endTime-startTime)/1000+"s");
 
 }

}

原文地址:https://www.cnblogs.com/wl2017/p/10294410.html

时间: 2024-10-03 08:54:21

信息领域热词分析系统--java爬取CSDN中文章标题即链接的相关文章

信息领域热词分析系统--python统计

统计词语出现的频率,并且按从高到低的顺序报错在文件中 def main(): file=open("F:\大数据\大作业\分词后的文件\data4_xinxi.txt",'r') wordCounts={} #先建立一个空的字典,用来存储单词 和相应出现的频次 count=50 #显示前多少条(按照单词出现频次从高到低) for line in file: lineprocess(line.lower(),wordCounts) #对于每一行都进行处理,调用lineprocess()函

《信息领域热词分析》系统安全性战术分析

安全性战术是为了保护系统安全方面,安全性是衡量系统在向合法用户正常提供服务的情况下,阻止非授权使用的能力.安全性战术主要包括抵抗攻击的战术.检测攻击的战术和从攻击从恢复的战术.对于这方面的技术,当前的我们知道的知识不多,因此可以参考了一下网上的资料. 一.抵抗攻击: 最简单的就是用户的信息保护,如注册登陆,用户注册的密码可以采用MD5加密,这是一种安全性非常高的加密算法,由于这种加密的不可逆性,在使用10位以上字母加数字组成的随机密码时,几乎没有破解的可能性.下面是实例: 1 //用户登录信息查

13 信息领域热词分析部分功能展示

主界面: 查看新闻 点击相关链接跳转 词云图: 原文地址:https://www.cnblogs.com/xcl666/p/12319730.html

信息领域热词分析的-质量属性战术-可用性战术

可用性战术 一.错误检测 1.命令/响应:这个在ajax中有所应用,ajax有专门的success方法和error方法来对发出的请求做出响应. $.ajax({ type: "POST", url: "/SentAlink", contentType: "application/json; charset=utf-8", data: JSON, /*传给后端的数据格式json*/ dataType: "json", /*后端返

Java爬取博客文章

前言 近期本人在某云上购买了个人域名,本想着以后购买与服务器搭建自己的个人网站,由于需要筹备的太多,暂时先搁置了,想着先借用GitHub Pages搭建一个静态的站,搭建的过程其实也曲折,主要是域名地址配置把人搞废了,不过总的来说还算顺利,网站地址  https://chenchangyuan.cn(空博客,样式还挺漂亮的,后期会添砖加瓦) 利用git+npm+hexo,再在github中进行相应配置,网上教程很多,如果有疑问欢迎评论告知. 本人以前也是搞过几年java,由于公司的岗位职责,后面

六大质量属性之可测试性层面描述-以信息领域热词系统为例

首先可测试性指的是可测试性战术的目标是允许在完成软件开发的一个增量后,轻松的对软件进行测试.测试的目标是发现错误. 1.首先对系统新加一个增量,正确的显示是系统没有此选项,但是系统显示null为空. 经过检查发现是相关的代码未加内容提示, private void Select(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncod

信息领域热词查询统计(成果展示)

开场: 搜索:   主页: 分类搜索 词云图:  联系图: 文档下载: 文档: 原文地址:https://www.cnblogs.com/smartisn/p/12293582.html

11 信息化领域热词分类分析及解释 第五步按目录爬取热词

功能要求为:1,数据采集,定期从网络中爬取信息领域的相关热词 2,数据清洗:对热词信息进行数据清洗,并采用自动分类技术生成自动分类计数生成信息领域热词目录. 3,热词解释:针对每个热词名词自动添加中文解释(参照百度百科或维基百科) 4,热词引用:并对近期引用热词的文章或新闻进行标记,生成超链接目录,用户可以点击访问: 5,数据可视化展示:① 用字符云或热词图进行可视化展示:② 用关系图标识热词之间的紧密程度. 6,数据报告:可将所有热词目录和名词解释生成 WORD 版报告形式导出. 这次完成了按

09 信息化领域热词分类分析及解释 第三步 将清洗完毕的热词添加百度百科解释

功能要求为:1,数据采集,定期从网络中爬取信息领域的相关热词 2,数据清洗:对热词信息进行数据清洗,并采用自动分类技术生成自动分类计数生成信息领域热词目录. 3,热词解释:针对每个热词名词自动添加中文解释(参照百度百科或维基百科) 4,热词引用:并对近期引用热词的文章或新闻进行标记,生成超链接目录,用户可以点击访问: 5,数据可视化展示:① 用字符云或热词图进行可视化展示:② 用关系图标识热词之间的紧密程度. 6,数据报告:可将所有热词目录和名词解释生成 WORD 版报告形式导出. 本次完成第三