爬取指定静态页面的某个模块下的数据
这里爬取的网页链接是:
http://www.hljkjt.gov.cn/html/zwgk/tztg/list.html
下的通知通告内容,及每个通知通告对应的链接。
爬取的数据初步写入本地文件,效果如下:
创建maven项目,pom.xml文件:
<dependencies>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.9.2</version>
</dependency>
</dependencies>
代码如下:
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import java.io.FileWriter;
import java.io.IOException;
public class Test {
public static void main(String[] args) throws IOException {
String url = "http://www.hljkjt.gov.cn/html/zwgk/tztg/list.html";
String filePath = "C:\\Users\\Administrator\\Desktop\\crawler.txt";
String ua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.90 Safari/537.36";
Test t = new Test();
t.getRes(url,filePath,ua);
}
public void getRes(String url,String filePath,String ua) throws IOException{
//解析html
Document doc = Jsoup.connect(url).timeout(5000).userAgent(ua).get();
Elements listDiv = doc.getElementsByAttributeValue("class", "List_title");
String h4 = "";
String title = "";
String href = "";
String res = "";
for (int i =0;i<listDiv.size();i++) {
Elements listDivs = doc.getElementsByAttributeValue("class", "listn_box");
h4 = listDivs.get(i).getElementsByTag("h4")+"\n";
Elements a = listDiv.get(i).getElementsByTag("a");
for(int j =0;j<a.size();j++){
title = a.get(j).attr("title");
href = a.get(j).attr("href");
if(j == 0) {
res = h4 + "title:" + title + "\thref:http://www.hljkjt.gov.cn" + href + "\n";
}else {
res = "title:" + title + "\thref:http://www.hljkjt.gov.cn" + href + "\n";
}
System.out.print(res);
Test.saveAsFileWriter(res,filePath);
}
}
}
private static void saveAsFileWriter(String content,String filePath) {
FileWriter fwriter = null;
try {
// true表示不覆盖原来的内容,而是加到文件的后面。若要覆盖原来的内容,直接省略这个参数就好
fwriter = new FileWriter(filePath, true);
fwriter.write(content);
} catch (IOException ex) {
ex.printStackTrace();
} finally {
try {
fwriter.flush();
fwriter.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
后面再将爬取的数据写入到mysql
文章浏览阅读4k次。介绍来自百度百科:buildingSMART是一个中立化、国际性、独立的服务于BIM全生命周期的非营利组织,旨在促进在建筑工程全生命周期过程中,各参与方间的信息交流与协同合作。buildingSMART的前身是国际数据互用联盟(IAI-International Alliance ofInteroperability),成立于1994年。自成立以来,buildingSMART国际联合多家..._ifc owl 编写
文章浏览阅读3.8k次。快应用出现 TypeError: The 'compilation' argument must be an instance of Compilation_the 'compilation' argument must be an instance of compilation
文章浏览阅读1.5w次。有些行业应用中,会使用到计算机集群设计,或者两个Node之间协同工作的设计,比如SMP的设计,NUMA的设计等,免不了需要将两个或者多个Node直接的高速总线link到一起。在Intel和AMD的架构设计中引入了 QPI总线和HT总线。这里主要描述一下另外一种形态基于PCIe的NTB技术。Non-Transparent Bridge,非透明桥,这个在intel的某些北桥(处理器)中已经已经_pcie ntb
文章浏览阅读2.4w次,点赞8次,收藏82次。2.1数字频率计功能概述 数字频率计数器的基本功能是测量一个频率稳定度高的频率源的频率。通常情况下计算每秒内待测信号的脉冲个数,此时我们称闸门时间为1秒。闸门时间也可以大于或小于一秒。闸门时间越长,得到的频率值就越准确,但闸门时间越长则没测一次频率的间隔就越长。闸门时间越短,测的频率值刷新就越快,但测得的频率精度就受影响。本数字频率计是用数字显示被测信号频率的仪器,被测信号可以是正弦波,方波或其它周期性变化的信号。2.2 基本工作原理及设计思路根据频率计设计的设计要求,我们可将整个电路系统划分._数字频率计
文章浏览阅读441次。在Spark SQL中,当Job中产生Shuffle时,默认的分区数(spark.sql.shuffle.partions)为200,在实际项目中要合理的设置。在允许spark程序时,查看WEB UI监控页面发现,某个Stage中有200个Task任务,也就是说RDD有200分区Partion。功能:如果数据中包含null通过dropna来进行判断,符合条件就删除这一行数据。功能:对DF的数据进行去重,如果重复数据有多条,取第一条。功能:根据参数的规则,来进行null的替换。_spark dropduplicates 不同分区怎么解决
文章浏览阅读5.4k次,点赞2次,收藏16次。LSTM原理,应用。从循环神经网络(Recurrent Neural Network,RNN)可以通过许多不同的方式建立,但就像几乎所有函数都可以被认为是前馈网络,基本上任何涉及循环的函数可以被认为是一个循环神经网络。它的基本结构以及其展开的理解如下图所示: 同一网络被视为展开的计算图,其中每个节点现在与一个特定的时间实例相关联................_brnn 向量 序列
文章浏览阅读226次。在全世界球迷的瞩目下,2018世界杯在上周激情上演,相信接下来的一个月时间里无数球迷又将守在电视前为自己喜欢的球队摇旗呐喊。当然,在移动互联网发达的今天,即使不在电视前,..._移动咪咕 张云天
文章浏览阅读257次。由于最近在学习pyqt5的相关知识,在网上找了几篇教程看,于是就写了这篇学习笔记。本文只是一些案例的代码以及演示,详细的讲解请看原文。原文链接:https://zetcode.com/gui/pyqt5/中文翻译:http://www.360doc.com/content/19/1022/14/12906439_868371487.shtml文章目录1、QCheckBox2、切换按钮3、滑块4、进度条5、日历6、图片7、行编辑8、QSplitter9、下拉选框1、QCheckBoxQCheck._pyqt5上传控件
文章浏览阅读1.2k次。11月24日-25日,由中国人民公安大学网络空间安全与法治协同创新中心主办、厦门快商通科技股份有限公司承办的全国首届“公安实战声纹和语音应用技术研讨会”在厦门成功召开。会上,与会嘉宾联合宣布成立“公安实战声纹语音案件技术交流联盟”,共同搭建高质量、高水平的系列化交流平台,持续为智慧警务建设注入新动能。厦门市公安局刑事侦查支队技术处处长任松、中国人民公安大学网络空间安全与法治协同创新中心秘书长..._马鲁朋 菏泽
文章浏览阅读5.8k次,点赞2次,收藏11次。相信大家都都时不时的会遇到有关MATLAB中的串口或者网口的通讯,其中都会涉及到fread或者fscanf 的使用,接下,作者将首先参考matlab给出的对fread和fscanf的文档,并且做出相关的理解。1、freadstep 1 文档内容fileID = fopen('nine.bin','w');fwrite(fileID,[1:9],'uint16'); %其中unit16,是指传入的..._matlabfread和fscanf区别
文章浏览阅读1k次。新人…学校比赛,没什么经验,上去见见世面某公司的月赛题 资源就不放了,只是当笔记Ida打开 有点小陷阱 巧妙的堆栈运用导致载入ida分析不了 得不到函数的边界比较幸运win32的程序od打开走一遍流程感受下00AD12E7 . 52 push edx00AD12E8 . 68 C821AD00 push 5ba358a4.00AD21C8 ..._mdawmdawmdawmdawmdawmdawmdawmdawmdawmdawmdawmdawmdawmdawmdawmdawmdawmdawmdaw
文章浏览阅读781次。在内、外部开发者的合力之下,过去一年 Tapdata 新增数据源近20个,实现了60+数据源的接入能力。一个人可以走得很快,一群人可以走得更远,2023年期待与您共创更受欢迎的开源项目。_tapdata