java爬虫抓取动态网页(《》大文件下载)

优采云 发布时间: 2022-02-11 16:40

  java爬虫抓取动态网页(《》大文件下载)

  一、概览

  大文件的下载方式很多,idm、aria2、迅雷直接链接也可以从idm下载

  但是我发现还是有一些东西需要爬虫+batch(batch注定不小,只好带上多线程),于是开始尝试。

  二、爬虫部分

  /**爬虫实体

* @author LW

* @2021/10/30 19:25

*/

@Data

@NoArgsConstructor

@AllArgsConstructor

public class Parse {

private String title;

private String img;

private String price;

}

  /**爬虫服务

* @author LW

* @2021/10/31 14:35

*/

public class ParseService {

public static void main(String[] args) throws Exception {

//测试数据

new ParseService().parseTo945("https://www.945kmzh.com/pc").forEach(System.out::println);

}

public List parseTo945(String keywords) throws Exception{

String url = keywords;

//解析网页 (Jsoup返回Document 就是页面对象 )

Document document = Jsoup.parse(new URL(url),30000);

Elements elements = document.getElementsByClass("post-item-thumbnail");

ArrayList goodsList = new ArrayList();

for (Element el : elements) {

String img = el.getElementsByTag("img").eq(0).attr("src");

Parse content = new Parse();

content.setImg(img);

goodsList.add(content);

}

return goodsList;

}

}

  三、多线程

<p>/**

* @Author LW

* @2022/2/11 14:16

*/

public class MyMultiThread extends Thread {

private List list;//集合

private int len;//集合长度

private int n;//线程数

private String pre;//路径前缀

private String dir;//目录

private int flag;// 线程号

public MyMultiThread(List list, int len, int n, String pre, String dir, int flag) {

super();

this.list = list;

this.len = len;

this.n = n;

this.pre = pre;

this.dir = dir;

this.flag = flag;

}

@Override

public void run() {

//n线程数

// 每个线程执行一部分 (len/n)*flag--->(len/n)*(flag+1)

for (int j = (len/n)*flag; j

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线