WebMagic 一系列问题

本文介绍了如何在使用WebMagic爬虫框架时,解决因连接公司内网导致无法解析网页的问题。通过创建自定义的代理提供器(CustomProxyProvider)和下载器(CustomDownloader),并结合BloomFilterDuplicateRemover进行去重,实现了在内网环境下的网页抓取。此外,还展示了如何配置PageProcessor、Pipeline和Scheduler来处理页面内容和数据持久化。

说一下webMagic我所出现的问题吧, 我是因为连了公司的内网所以导致无法去解析页面, 因为像在webMagic中你去使用它解析页面是必需得要代理的, 我之前就主要是没有考虑这个问题,下面我附上解决代码:

package ai.zerox.proxy;

import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Task;
import us.codecraft.webmagic.proxy.Proxy;
import us.codecraft.webmagic.proxy.ProxyProvider;
/**
 * @description 配置代理去下载页面
 * @author AiShuangPeng
 * @date 2023/7/19 10:38
*/
public class CustomProxyProvider implements ProxyProvider {
  @Override
  public void returnProxy(Proxy proxy, Page page, Task task) {
  }
  @Override
  public Proxy getProxy(Task task) {
    // 在这里从代理IP池中获取代理IP
    String host = "填写公司内网ip";
    int port = 填写端口号;
    return new Proxy(host, port);
  }
}
package ai.zerox.proxy;
import us.codecraft.webmagic.downloader.HttpClientDownloader;

public class CustomDownloader extends HttpClientDownloader {
  public CustomDownloader() {
    this.setProxyProvider(new CustomProxyProvider());
  }
}
package ai.zerox.crawlers;

import ai.zerox.proxy.CustomDownloader;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.pipeline.Pipeline;
import us.codecraft.webmagic.processor.PageProcessor;
import us.codecraft.webmagic.scheduler.Scheduler;

/**
 * @author AiShuangPeng
 * @version 1.0
 * @description 初始化爬虫
 * @date 2023/7/19 20:01
 */
@Component
public class InfoSpider {
  @Autowired
  private PageProcessor processor;
  @Autowired
  private Pipeline pipeline;

  @Autowired
  private Scheduler scheduler;

  //爬取地址
  private final String URL = "http://*****************/index.html"; //填写自己需要爬取的地址即可

  /**
   * @description 该方法调用时将会调用多个组件并启动爬虫进行数据爬取
   * @author AiShuangPeng
   * @date 2023/7/19 8:34
  */
  public void doCrawler() {
    Spider.create(processor)
      //设置自定义得pipeline
      .addPipeline(pipeline)
      //配置scheduler 指定使用布隆过滤器
      .setScheduler(scheduler)
      //设置起始url
      .addUrl(URL)
      //配置代理(当用的是公司内网时需要去配置)
      .setDownloader(new CustomDownloader())
      //启动爬虫
      .start();
  }
}
pac
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值