今天C++老师非要让我们爬重庆二月份新型冠装病毒的数据。
Jsoup爬取的数据,直接上代码
package chongqing_guanxinbingdu;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
public class paqu1 {
public static void main(String[] args) {
int sum = 1;
List<String> url_list=new ArrayList<>();
for(int j = 6;j<=14;j++){
try {
//j为网页页数,即6到14页,这里的url可根据需求进行修改
String url ="http://wsjkw.cq.gov.cn/ztzl_242/qlzhxxgzbdfyyqfkgz/yqtb/index_"+j+".html";
Document doc = Jsoup.connect(url).get();
//获取网页所有的A标签,Elements类似一个arraylist数组
Elements elements2=doc.getElementsByTag("a");
//遍历所有的标签
for(int i=0;i<elements2.size();i++){
//获取A标签的文本
String p_href = elements2.get(i).text();
//判断获取的内容是否包含下列字符
if(p_href.contains("重庆市新冠肺炎疫情情况") | p_href.contains("截至") ){
if(!(p_href.contains("12时") |p_href.contains("1月") |(p_href.contains("3月") & ! (p_href.contains("1日") )))){
String yiqing_url = elements2.get(i).attr("abs:href");
Document open_doc = Jsoup.connect(yiqing_url).get();
Elements elements =open_doc.getElementsByTag("p");
for(int k=0;k<elements.size();k++){
String p_text = elements.get(k).text();
if(p_text.contains("累计报告")){
//System.out.println(elements.get(k).text());
String text =elements.get(k).text();
List<String> result = Arrays.asList(text.split("[。]"));
for(String text_one:result){
if(!(text_one.contains("密切接触者") |text_one.contains("具体情况如下"))){
System.out.println(text_one);
}
}
sum++;
}
}
}
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println(sum);
}
}
没啥需求,对特殊数据进行清洗了一下,草草搞定。
祝愿祖国早日康复。