乐趣区

关于python:手摸手学会使用webmagic爬虫框架

/**

  • jsoup 测试案例
  • @author tuxuchen
  • @date 2021/11/18 18:17
    */

public class JsoupTest {
public static void main(String[] args) {

JsoupTest test = new JsoupTest();
test.findSearch("圣墟");

}
/**

  • 搜寻性能
    *
  • @param name
  • @return
    */

public void findSearch(String name) {

// 获取搜寻页文档树
Document document = getDocument("https://www.bequgexs.com/search.html?name=" + name);
if (Objects.isNull(document)) {System.out.println("文档树获取失败");
  return;
}
// 取出 <ul> 标签内
Element ul = document.select("#main > div.novelslist2 > ul").get(0);
if (ul.isBlock()) { // 如果获取胜利
  // 从 <ul> [PayPal 下载](https://www.gendan5.com/wallet/PayPal.html) 标签 取出 <li> 标签
  Elements li = ul.getElementsByTag("li");
  // 从 1 开始 遍历  为什么从 1 开始 是因为咱们不须要第一个 li 标签 第一个 li 标签内是序号
  for (int i = 1; i < li.size(); i++) {Element e = li.get(i);
    // 取出 li 标签内的 <a> 标签 <a> 内就是咱们须要的内容
    Elements a = e.getElementsByTag("a");
    String book = "";
    // 遍历取出每个 <a> 标签
    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
    */

private Document getDocument(String url) {

// 重试次数
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;

}
}

退出移动版