参考:https://blog.csdn.net/baidu_22796075/article/details/83276876
业务需求:我们需要对一个网站进行爬虫,但是该网站可能会有防爬虫机制,当然我们可以用webdriver+jsoup来解决,但是如果这个网站有Rss订阅的话,我们完全可以对Rss进行爬取,因为这个Rss上面有你需要爬取的全部数据,现在的问题就是如何去解析Rss的xml结构内容。
依赖
<!-- jsoup-->
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.11.3</version>
</dependency>
<!--rome-->
<dependency>
<groupId>com.rometools</groupId>
<artifactId>rome</artifactId>
<version>1.8.0</version>
</dependency>
测试
大家自己去找一个Rss订阅就好了,我就不提供了,url换成Rss的地址。
try {
URL url = new URL("");
// 读取Rss源
XmlReader reader = new XmlReader(url);
System.out.println("Rss源的编码格式为:" + reader.getEncoding());
SyndFeedInput input = new SyndFeedInput();
// 得到SyndFeed对象,即得到Rss源里的所有信息
SyndFeed feed = input.build(reader);
//System.out.println(feed);
// 得到Rss新闻中子项列表
List entries = feed.getEntries();
// 循环得到每个子项信息
for (int j = 0; j <entries.size(); j++) {
SyndEntry entry = (SyndEntry) entries.get(j);
//SyndContent description = entry.getDescription();
String title=entry.getLink();
//System.out.println(title);
//System.out.println(entry.getDescription().getValue());
Document document= Jsoup.parse(entry.getDescription().getValue());
Elements elements=document.select("p");
for (Element element:elements){
String text=element.text();
if (!text.contains("<p>")){
System.out.println(text);
}
}
System.out.println("---------------------------");
}
} catch (Exception e) {
e.printStackTrace();
}