import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.jsoup.nodes.Document;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.processor.PageProcessor;
// 标题和链接获取
//初始化带爬取网页地址
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;
}
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中文章标题即链接的更多相关文章
-
信息领域热词分析系统--python切词
利用python将标题切割成词语 import jieba #读取文件 f=open(r"F:\大数据\大作业\爬取到的数据\data1_xinxi.txt",'r') s=f.r ...
-
信息领域热词分析系统--python过滤
利用python过滤去没用的词语,过滤的词语存储在停用文件中. #创建停用词表 def stopwordlist(): stopwords=[line.strip() for line in open ...
-
信息领域热词分析系统--python统计
统计词语出现的频率,并且按从高到低的顺序报错在文件中 def main(): file=open("F:\大数据\大作业\分词后的文件\data4_xinxi.txt",'r') ...
-
Java爬取先知论坛文章
Java爬取先知论坛文章 0x00 前言 上篇文章写了部分爬虫代码,这里给出一个完整的爬取先知论坛文章代码. 0x01 代码实现 pom.xml加入依赖: <dependencies> & ...
-
【python爬虫和正则表达式】爬取表格中的的二级链接
开始进公司实习的一个任务是整理一个网页页面上二级链接的内容整理到EXCEL中,这项工作把我头都搞大了,整理了好几天,实习生就是端茶送水的.前段时间学了爬虫,于是我想能不能用python写一个爬虫一个个 ...
-
阿里舆情︱舆情热词分析架构简述(Demo学习)
本节来源于阿里云栖社区,同时正在开发一个舆情平台,其中他们发布了一篇他们所做的分析流程,感觉可以作为案例来学习.文章来源:觉民cloud/云栖社区 平台试用链接:https://prophet.dat ...
-
Java爬取B站弹幕 —— Python云图Wordcloud生成弹幕词云
一 . Java爬取B站弹幕 弹幕的存储位置 如何通过B站视频AV号找到弹幕对应的xml文件号 首先爬取视频网页,将对应视频网页源码获得 就可以找到该视频的av号aid=8678034 还有弹幕序号, ...
-
java爬取并下载酷狗TOP500歌曲
是这样的,之前买车送的垃圾记录仪不能用了,这两天狠心买了好点的记录仪,带导航.音乐.蓝牙.4G等功能,寻思,既然有这些功能就利用起来,用4G听歌有点奢侈,就准备去酷狗下点歌听,居然都是需要办会员才能下 ...
-
Java爬取并下载酷狗音乐
本文方法及代码仅供学习,仅供学习. 案例: 下载酷狗TOP500歌曲,代码用到的代码库包含:Jsoup.HttpClient.fastJson等. 正文: 1.分析是否可以获取到TOP500歌单 打开 ...
随机推荐
-
java发展道路
1.
-
关于call和apply的那点事儿
在JavaScript中改变闭包中的this关键字中经常用到的就是call和apply了 首先:call和apply的作用的区别是什么? 答:call和apply 的作用是相同的.都是用来改变函数th ...
-
Python pexpect出现错误‘module have no attribute ";spawn"; 解决办法
今天我遇到了这个错误,现在将错误总结如下: 1.首先查询一下自己的操作系统,pexpect中的spawn()和run()仅仅运行在POSIX系统上,在WINDOWS下是没有这两个东西的,在官网http ...
-
Android 去掉title bar的3个方法
1. Java代码实现 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstance ...
-
联合县城市,采用ajax,而使用ul模拟select下拉
接待处代码 js //采用jquery展示鼠标放到省ul下拉显示 $("#province").hover(function(){ ...
- JVM之GC算法
-
python _init_学习
今天继续学习python,接触了_init_,感觉很好玩照着教程手写了一些代码,感觉编程语言是互通的,只是换个了形式来表达 #coding=utf-8#类似于java的构造器class Person: ...
-
Session 和 Cookie 区别
会话跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.==Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用 ...
-
erlang下lists模块sort(排序)方法源码解析(一)
排序算法一直是各种语言最简单也是最复杂的算法,例如十大经典排序算法(动图演示)里面讲的那样 第一次看lists的sort方法的时候,蒙了,几百行的代码,我心想要这么复杂么(因为C语言的冒泡排序我记得不 ...
-
Spring获取URL相关信息
获取请求的URL:request.getRequestURL().toString(); 获取上下文名称(项目名称):request.getContextPath()