magicmatch java_签名图片一键批量生成 使用Java的Webmagic爬虫实现

使用Webmagic爬虫实现的签名档一键生成

实现原理

这里爬取的网址是http://jiqie.zhenbi.com/c/

然后获取到里面提交数据,提交地址,在对这些数据进行Post提交

解析html标签获得图片地址并输出到控制台

不会使用Webmagic爬虫框架的 自行百度配置

本文主要是学习Post提交

测试结果:

20200111181220967829.png

20200111181221061583.png

下面请看代码实现

import us.codecraft.webmagic.Page;

import us.codecraft.webmagic.Request;

import us.codecraft.webmagic.Site;

import us.codecraft.webmagic.Spider;

import us.codecraft.webmagic.model.HttpRequestBody;

import us.codecraft.webmagic.processor.PageProcessor;

import us.codecraft.webmagic.utils.HttpConstant;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import java.util.Random;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class PostDemo implements PageProcessor {

Site site = Site.me().setRetryTimes(3).setTimeOut(1500);

@Override

public void process(Page page) {

Random r = new Random();

//生成的文字

String text = "快乐的小蜘蛛";

//第一次请求:获取所有类型

if ("http://jiqie.zhenbi.com/c/".equals(page.getUrl().toString())){

//解析a标签

//彩色文字版本墨人动态签名档在线制作

List list = page.getHtml().$("a","href").all();

List listtext = page.getHtml().$("a","text").all();

// 创建 Pattern 对象 匹配数字

Pattern r = Pattern.compile("[0-9]+");

// 现在创建 matcher 对象

Matcher m;

Request req;

for (int i =0;i

m = r.matcher(list.get(i));

if (!m.find())continue;

req = new Request();

req.setUrl("http://jiqie.zhenbi.com/c/"+ m.group()+".htm");

req.putExtra("mindex",m.group());

req.putExtra("name",listtext.get(i));

page.addTargetRequest(req);

}

return;

//第二次请求:获取数据参数以及Post提交地址

}else if(page.getUrl().toString().endsWith(".htm")){

//是否有id :show

if (!page.getHtml().$("#show").match())return;

Request request =page.getRequest();

request.setMethod(HttpConstant.Method.POST);

//zhenbi('re2.php','0');

String index = page.getHtml().$("#up","onclick").regex("\\w+\\.").toString().replace(".","");

System.out.println(index);

request.setUrl("http://jiqie.zhenbi.com/c/"+index+".php");

Map map = new HashMap<>();

/* 提交数据

id 我是ZHT0301 我为自己代言

idi jiqie

id1 20

id2 16

id3 26

id4

id5 #624475

id6

*/

//获取参数

map.put("id",text);

map.put("idi","jiqie");

map.put("id1",page.getHtml()

.$("#id1").xpath("//select/option[@selected='selected']")

.$("option","value"));

map.put("id2",page.getHtml()

.$("#id2").xpath("//select/option[@selected='selected']")

.$("option","value"));

map.put("id3",page.getHtml().$("#id3","value"));

map.put("id4",page.getHtml().$("#id4","value"));

map.put("id5",page.getHtml().$("#id5","value"));

map.put("id6",page.getHtml().$("#id6","value"));

System.out.println(map);

request.setRequestBody(HttpRequestBody.form(map,"utf-8"));

page.addTargetRequest(request);

try {

//随缘冷静,冲动是魔鬼

Thread.sleep(r.nextInt(500)+100);

} catch (InterruptedException e) {

e.printStackTrace();

}

//第三次请求:获取图片的地址

}else{

page.putField("id",page.getRequest().getExtra("mindex"));

page.putField("name",page.getRequest().getExtra("name"));

page.putField("img_src",page.getHtml().$("img","src"));

}

}

@Override

public Site getSite() {

return site;

}

public static void main(String[] args) {

Spider.create(new PostDemo())

.addUrl("http://jiqie.zhenbi.com/c/")

.thread(1)

.run();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值