Java爬虫怎么实现Jsoup利用dom方法遍历Document对象
先给出网页地址:https://wall.alphacoders.com/featured.php?lang=Chinese主要步骤:利用Jsoup的connect方法获取Document对象Stringhtml="https://wall.alphacoders.com/featured.php?lang=Chinese";Documentdoc=Jsoup.connect(html).get();内容过长,就不再显示。我们以这部分为例:AboutUsFAQPrivacyPolicyTermsOfSer
先给出网页地址:
https://wall.alphacoders.com/featured.php?lang=Chinese
主要步骤:
利用Jsoup的connect方法获取Document对象
String html = "https://wall.alphacoders.com/featured.php?lang=Chinese"; Document doc = Jsoup.connect(html).get();
内容过长,就不再显示。
我们以这部分为例:
- About Us
- FAQ
- Privacy Policy
- Terms Of Service
- Acceptable Use
- Etiquette
- Advertise With Us
- Change Consent
我们先找到所有的ul:
Elements elements = doc.getElementsByTag("ul");输出如下:
- About Us
- FAQ
- Privacy Policy
- Terms Of Service
- Acceptable Use
- Etiquette
- Advertise With Us
- Change Consent
可以发现class为"nav nav-pills"的只有一个,我们找到它:
Elements elements = doc.getElementsByTag("ul");
//System.out.println(elements);
Element tempElement = null;
for(Element element : elements) {
if (element.className().equals("nav nav-pills")) {
tempElement = element;
//System.out.println(element.className());
break;
}
}循环遍历这个ul,输出其中每一个li里每一个a的href和rel属性:
Elements li = tempElement.getElementsByTag("li");
for(Element element : li) {
Elements element2 = element.getElementsByTag("a");
for(Element element3 : element2) {
String hrefString = element3.attr("href");
String relString = element3.attr("rel");
if(hrefString != "" && relString != "") {
System.out.println("href=" + hrefString + " rel="external nofollow" rel="external nofollow" " + "rel=" + relString);
}
}
}最终结果:
href=https://alphacoders.com/site/about-us rel=nofollow
href=https://alphacoders.com/site/faq rel=nofollow
href=https://alphacoders.com/site/privacy rel=nofollow
href=https://alphacoders.com/site/tos rel=nofollow
href=https://alphacoders.com/site/acceptable_use rel=nofollow
href=https://alphacoders.com/site/etiquette rel=nofollow
href=https://alphacoders.com/site/advertising rel=nofollow
完整代码:
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
import org.jsoup.Jsoup;
/**
* @ClassName: Jsoup_Test
* @description:
* @author: KI
* @Date: 2020年8月17日 下午8:15:14
*/
public class Jsoup_Test {
public static void main(String[] args) throws IOException {
// TODO 自动生成的方法存根
String html = "https://wall.alphacoders.com/featured.php?lang=Chinese";
Document doc = Jsoup.connect(html).get();
System.out.println(doc);
Elements elements = doc.getElementsByTag("ul");
//System.out.println(elements);
Element tempElement = null;
for(Element element : elements) {
if (element.className().equals("nav nav-pills")) {
tempElement = element;
//System.out.println(element.className());
break;
}
}
System.out.println(tempElement);
Elements li = tempElement.getElementsByTag("li");
for(Element element : li) {
Elements element2 = element.getElementsByTag("a");
for(Element element3 : element2) {
String hrefString = element3.attr("href");
String relString = element3.attr("rel");
if(hrefString != "" && relString != "") {
System.out.println("href=" + hrefString + " rel="external nofollow" rel="external nofollow" " + "rel=" + relString);
}
}
}
}
}
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















