java爬虫抓取动态网页(目标网络爬虫的是做什么的?手动写一个简单的)

优采云 发布时间: 2021-09-21 23:15

  java爬虫抓取动态网页(目标网络爬虫的是做什么的?手动写一个简单的)

  目标网络爬虫做什么?手动编写一个简单的网络爬虫1.webcrawler1.1.name1.2.short description@2.process

  

  通过上面的流程图,我们可以大致了解网络爬虫的功能,并根据这些功能设计一个简单的网络爬虫

  简单爬虫程序所需的功能:

  发送请求和获取响应的功能;解析响应的功能;存储过滤后的数据的功能;处理解析后的URL路径@2.1.的函数涉及

  3.分类

  4.思维分析

  

  首先,观察爬虫的起始页:

  

  所有好消息信息的URL都用XPath表达式表示,即//div[@class='main_l']/UL/Li

  

  相关数据

  我们已经在上面的代码中找到了需要获得的关键信息的XPath表达式,然后我们可以正式编写代码来实现它

  5.代码实现

  代码实现部分采用webmagic框架,因为它比使用基本Java网络编程简单得多。注意:您可以看到以下关于webmagic框架的讲义

  5.1.代码结构

  

  5.@2.程序条目

  Demo.java

  /**

* 程序入口

*/

public class Demo {

public static void main(String[] args) {

// 爬取开始

Spider

// 爬取过程

.create(new WanhoPageProcessor())

// 爬取结果保存

.addPipeline(new WanhoPipeline())

// 爬取的第一个页面

.addUrl("http://www.wanho.net/a/jyxb/")

// 启用的线程数

.thread(5).run();

}

}

  5.3.爬行过程

<p>package net.wanho.wanhosite;

import java.util.ArrayList;

import java.util.List;

import java.util.Vector;

import us.codecraft.webmagic.Page;

import us.codecraft.webmagic.Site;

import us.codecraft.webmagic.processor.PageProcessor;

import us.codecraft.webmagic.selector.Html;

public class WanhoPageProcessor implements PageProcessor {

// 部分一:抓取网站的相关配置,包括编码、抓取间隔、重试次数等

private Site site = Site

.me()

.setTimeOut(10000)

.setRetryTimes(3)

.setSleepTime(1000)

.setCharset("UTF-8");

// 獲得站點

@Override

public Site getSite() {

return site;

}

//爬取過程

@Override

public void process(Page page) {

//获取当前页的所有喜报

List list = page.getHtml().xpath("//div[@class=&#39;main_l&#39;]/ul/li").all();

//要保存喜报的集合

Vector voLst = new Vector();

//遍历喜报

String title;

String content;

String img;

for (String item : list) {

Html tmp = Html.create(item);

//标题

title = tmp.xpath("//div[@class=&#39;content&#39;]/h4/a/text()").toString();

//内容

content = tmp.xpath("//div[@class=&#39;content&#39;]/p/text()").toString();

//图片路径

img = tmp.xpath("//a/img/@src").toString();

//加入集合

ArticleVo vo = new ArticleVo(title, content, img);

voLst.add(vo);

}

//保存数据至page中,后续进行持久化

page.putField("e_list", voLst);

//加载其它页

page.addTargetRequests( getOtherUrls());

}

//其它页

public List getOtherUrls(){

List urlLsts = new ArrayList();

for(int i=2;i

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线