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");
 
 }
}

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

  1. 信息领域热词分析系统--python切词

    利用python将标题切割成词语 import jieba #读取文件 f=open(r"F:\大数据\大作业\爬取到的数据\data1_xinxi.txt",'r') s=f.r ...

  2. 信息领域热词分析系统--python过滤

    利用python过滤去没用的词语,过滤的词语存储在停用文件中. #创建停用词表 def stopwordlist(): stopwords=[line.strip() for line in open ...

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

    统计词语出现的频率,并且按从高到低的顺序报错在文件中 def main(): file=open("F:\大数据\大作业\分词后的文件\data4_xinxi.txt",'r') ...

  4. Java爬取先知论坛文章

    Java爬取先知论坛文章 0x00 前言 上篇文章写了部分爬虫代码,这里给出一个完整的爬取先知论坛文章代码. 0x01 代码实现 pom.xml加入依赖: <dependencies> & ...

  5. 【python爬虫和正则表达式】爬取表格中的的二级链接

    开始进公司实习的一个任务是整理一个网页页面上二级链接的内容整理到EXCEL中,这项工作把我头都搞大了,整理了好几天,实习生就是端茶送水的.前段时间学了爬虫,于是我想能不能用python写一个爬虫一个个 ...

  6. 阿里舆情︱舆情热词分析架构简述(Demo学习)

    本节来源于阿里云栖社区,同时正在开发一个舆情平台,其中他们发布了一篇他们所做的分析流程,感觉可以作为案例来学习.文章来源:觉民cloud/云栖社区 平台试用链接:https://prophet.dat ...

  7. Java爬取B站弹幕 —— Python云图Wordcloud生成弹幕词云

    一 . Java爬取B站弹幕 弹幕的存储位置 如何通过B站视频AV号找到弹幕对应的xml文件号 首先爬取视频网页,将对应视频网页源码获得 就可以找到该视频的av号aid=8678034 还有弹幕序号, ...

  8. java爬取并下载酷狗TOP500歌曲

    是这样的,之前买车送的垃圾记录仪不能用了,这两天狠心买了好点的记录仪,带导航.音乐.蓝牙.4G等功能,寻思,既然有这些功能就利用起来,用4G听歌有点奢侈,就准备去酷狗下点歌听,居然都是需要办会员才能下 ...

  9. Java爬取并下载酷狗音乐

    本文方法及代码仅供学习,仅供学习. 案例: 下载酷狗TOP500歌曲,代码用到的代码库包含:Jsoup.HttpClient.fastJson等. 正文: 1.分析是否可以获取到TOP500歌单 打开 ...

随机推荐

  1. ZBar在Windows上的使用 -- ImageMagick and OpenCV

    博客转载自:https://blog.csdn.net/sunflower_boy/article/details/49095265 1. 下载ZBar v0.10 http://zbar.sourc ...

  2. enumerate()函数

    for index,value in enumerate(list):       print index,value 等于for i in range(0,len(list)): print i,l ...

  3. 解决.jsp及静态资源文件访问404的问题

    我们在做Web项目时,经常将.jsp文件放到webapp\WEB-INF下,这时,我们访问jsp等文件的时候,就会报404. 如果是纯前后端分离的项目,后端只返回数据,不处理页面,也没问题.但,有时我 ...

  4. win7搭建TensorFlow环境

    官网安装指南地址:https://www.tensorflow.org/install/pip 安装过程碰到的问题: 1.创建虚拟环境 virtualenv --system-site-package ...

  5. LINQ to SQL连接数据库及语句

    http://www.cnblogs.com/fengzheng126/archive/2012/04/20/2460620.html

  6. [C# 线程处理系列]专题四:线程同步

    目录: 一.线程同步概述 二.线程同步的使用 三 .总结 一.线程同步概述 前面的文章都是讲创建多线程来实现让我们能够更好的响应应用程序,然而当我们创建了多个线程时,就存在多个线程同时访问一个共享的资 ...

  7. WebStorm设置Themes

    1.首先去 http://www.phpstorm-themes.com/  选择你喜欢的主题,保存对应主题的xml文件到你本地 2.打开C:\Users\Administrator\.WebStor ...

  8. Win7共享问题 映射网盘时出现的错误 the specified server cannot perform the requested operation

    Win7共享问题 映射网盘时出现的错误:the specified server cannot perform the requested operation 解决方案: 1.重启电脑: 2.修改注册 ...

  9. java泛型与object的比较

    在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下 ...

  10. tomcat - 认识

    tomcat - web应用服务器 环境:ubuntu测试 @shell命令(cd到tomcat目录下) 启动: ./bin  startup.sh 关闭:./bin  shutdown.sh @部署 ...