java爬虫抓取动态网页(一下爬虫博客给出完整的代码完整程序介绍)

优采云 发布时间: 2021-10-02 16:02

  java爬虫抓取动态网页(一下爬虫博客给出完整的代码完整程序介绍)

  为了完成作业,我了解了爬虫Gecco。这个爬虫结合了之前所有爬虫的特点,但是官方教程中关于Gecco的教程太简单了。本博客根据原博客地址进行修改。只有程序的截图,没有完整的程序。这个博客给出了完整的代码。第一:爬取数据的目标是:(关于豆豆社)

  创建一个 Maven 项目并导入依赖项:

  

com.geccocrawler

gecco

1.3.0

  爬取第一页的数据,包括每页每个详细主题的链接和下一页的链接地址,

  代码如下:DoutuSheIndex.java

  package com.chry.GeccoCSDN;

import java.util.List;

import com.geccocrawler.gecco.GeccoEngine;

import com.geccocrawler.gecco.annotation.Gecco;

import com.geccocrawler.gecco.annotation.Href;

import com.geccocrawler.gecco.annotation.HtmlField;

import com.geccocrawler.gecco.annotation.Request;

import com.geccocrawler.gecco.request.HttpRequest;

import com.geccocrawler.gecco.spider.HtmlBean;

@Gecco(matchUrl="https://doutushe.com/portal/index/index/p/{page}", pipelines="doutusheIndex")

public class DoutuSheIndex implements HtmlBean{

/**

*

*/

private static final long serialVersionUID = 1L;

@Request

private HttpRequest request;

@Href(click=true)

@HtmlField(cssPath="a.link-2")

private List nameList; //得到的是地址

public HttpRequest getRequest() {

return request;

}

public void setRequest(HttpRequest request) {

this.request = request;

}

@Href(value="href")

@HtmlField(cssPath="a.link-2")

private ListidList; //得到的名称

@HtmlField(cssPath="ul.pagination li")

private List pageList;

public List getPageList() {

return pageList;

}

public void setPageList(List pageList) {

this.pageList = pageList;

}

public List getNameList() {

return nameList;

}

public List getIdList() {

return idList;

}

public void setNameList(List nameList) {

this.nameList = nameList;

}

public void setIdList(List idList) {

this.idList = idList;

}

}

  注意:创建的类中必须有请求私有成员,并添加他的get和set方法,以便以后在proess中获取数据。

  现在详细介绍页面的每个不同部分

  

  里面的每个成员变量都有一个对应的css路径,对应网页中的元素。当对应的css类型相同时,可以使用一个List对象来存储页面中所有相同的css元素

  完成DoutusheIndex.java

<p>package com.chry.GeccoCSDN;

import org.apache.http.util.TextUtils;

import com.geccocrawler.gecco.annotation.PipelineName;

import com.geccocrawler.gecco.pipeline.Pipeline;

import com.geccocrawler.gecco.request.HttpRequest;

import com.geccocrawler.gecco.scheduler.SchedulerContext;

@PipelineName(value="doutusheIndex")

public class FinishDoutusheIndex implements Pipeline{

public void process(DoutuSheIndex doutusheIndex) {

//首先遍历帖子的详情

for(int i=0;i

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线