今天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);
}
}
沒啥需求,對特殊數據進行清洗了一下,草草搞定。
祝願祖國早日康復。