手摸手学会使用webmagic爬虫框架
/**
- jsoup测试案例
- @author tuxuchen
- @date 2021/11/18 18:17
*/
public static void main(String[] args) {
JsoupTest test = new JsoupTest();
test.findSearch("圣墟");
}
/**
- 搜索功能
* - @param name
- @return
*/
// 获取搜索页文档树
Document document = getDocument("https://www.bequgexs.com/search.html?name=" + name);
if (Objects.isNull(document)) {
System.out.println("文档树获取失败");
return;
}
// 取出 标签内
Element ul = document.select("#main > div.novelslist2 > ul").get(0);
if (ul.isBlock()) { // 如果获取成功
// 从 [PayPal下载](https://www.gendan5.com/wallet/PayPal.html)标签 取出 - 标签
Elements li = ul.getElementsByTag("li");
// 从1开始 遍历为什么从1开始 是因为我们不需要第一个li标签 第一个li标签内是序号
for (int i = 1;
i < li.size();
i++) {
Element e = li.get(i);
// 取出 li 标签内的标签 内就是我们需要的内容
Elements a = e.getElementsByTag("a");
String book = "";
// 遍历取出每个标签
for (int r = 0;
r < a.size();
r++){
String text = a.get(r).text();
book = book + text + ":";
}
System.out.println(book);
}
}
}
/**
- document 是浏览器对象 是文档树 这跟前端document是一样的
* - 从url上获取文档数,为了防止反爬虫,这是一些头字段
- 如果失败,会重试10次
* - @param url 爬取地址
- @return document
*/
// 重试次数
int count = 10;
boolean flag = true;
Document document = null;
while (flag) {
try {
document = Jsoup.connect(url)
.userAgent("Mozilla/5.0 (Windows NT 10.0;
Win64;
x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36")
.get();
flag = false;
} catch (IOException e) {
if (count-- != 0) {
System.out.println(("网页获取失败,原因:" + e.getMessage()));
System.out.println("开始第" + (10 - count) + "次重试");
} else {
System.out.println("获取文档未知异常:" + e.getMessage());
}
}
}
return document;
}
}
推荐阅读
- 由浅入深理解AOP
- 【译】20个更有效地使用谷歌搜索的技巧
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- MybatisPlus使用queryWrapper如何实现复杂查询
- iOS中的Block
- Linux下面如何查看tomcat已经使用多少线程
- 使用composer自动加载类文件
- android|android studio中ndk的使用
- 为什么孩子一定要学会可视化思维!