爬虫相关,如何替换帖内连接,而图片位置不变。。。

兽兽 2020-08-09 10:23:43
比如我取回的内容是

教程说明
巴拉巴拉巴拉
http://baidu.com/?baidu=fandaolian/img1.jpg
呱啦呱啦挂啦挂啦
http://baidu.com/?baidu=fandaolian/img2.jpg
乌拉乌拉乌拉乌拉
http://baidu.com/?baidu=fandaolian/img3.jpg

吧啦吧啦吧啦吧啦吧啦吧啦吧啦吧啦
吧啦吧啦吧啦吧啦吧啦吧啦吧啦吧啦吧啦
吧啦吧啦吧啦吧啦吧啦


因为图片防盗链的,所以取回图片上传到自己的图床
然后我图床返回每张图的新 链接。



如何把这新链接 按照原来的 顺序插入

而不是 插在最顶部 或最底部
//错误例子
//错误例子
http://google.com/my/tupian1.jpg
http://google.com/my/tupian2.jpg
http://google.com/my/tupian3.jpg
教程说明
巴拉巴拉巴拉

呱啦呱啦挂啦挂啦

乌拉乌拉乌拉乌拉


吧啦吧啦吧啦吧啦吧啦吧啦吧啦吧啦
吧啦吧啦吧啦吧啦吧啦吧啦吧啦吧啦吧啦
吧啦吧啦吧啦吧啦吧啦


//错误例子
教程说明//错误例子
巴拉巴拉巴拉

呱啦呱啦挂啦挂啦

乌拉乌拉乌拉乌拉


吧啦吧啦吧啦吧啦吧啦吧啦吧啦吧啦
吧啦吧啦吧啦吧啦吧啦吧啦吧啦吧啦吧啦
吧啦吧啦吧啦吧啦吧啦
http://google.com/my/tupian1.jpg
http://google.com/my/tupian2.jpg
http://google.com/my/tupian3.jpg


//正确例子
教程说明
巴拉巴拉巴拉
http://google.com/my/tupian1.jpg
呱啦呱啦挂啦挂啦
http://google.com/my/tupian2.jpg
乌拉乌拉乌拉乌拉
http://google.com/my/tupian3.jpg

吧啦吧啦吧啦吧啦吧啦吧啦吧啦吧啦
吧啦吧啦吧啦吧啦吧啦吧啦吧啦吧啦吧啦
吧啦吧啦吧啦吧啦吧啦
...全文
2217 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
兽兽 2020-08-09
  • 打赏
  • 举报
回复
好吧 ,返回sb
兽兽 2020-08-09
  • 打赏
  • 举报
回复
引用 1 楼 lkj2016 的回复:
             
大佬,你这个要是封装成函数,怎么返回呢 返回哪个或者打印哪个,
兽兽 2020-08-09
  • 打赏
  • 举报
回复
引用 2 楼 qybao 的回复:
for example
public class Sample {
    public static void main(String[] args) {
        String str = "教程说明\n" +
                "巴拉巴拉巴拉\n" +
                "http://baidu.com/?baidu=fandaolian/img1.jpg\n" +
                "呱啦呱啦挂啦挂啦\n" +
                "http://baidu.com/?baidu=fandaolian/img2.jpg\n" +
                "乌拉乌拉乌拉乌拉\n" +
                "http://baidu.com/?baidu=fandaolian/img3.jpg\n" +
                " \n" +
                "吧啦吧啦吧啦吧啦吧啦吧啦吧啦吧啦\n" +
                "吧啦吧啦吧啦吧啦吧啦吧啦吧啦吧啦吧啦\n" +
                "吧啦吧啦吧啦吧啦吧啦";
        str = str.replaceAll("(.*?/)[?]baidu=fandaolian/img(\\d)([.]jpg)", "$1my/tupian$2$3");
        System.out.println(str);
    }
}
应该不是这样的,和我想象的不一样啊 我是想执行到 http://baidu.com/?baidu=fandaolian/img1.jpg 就执行upload函数, http://baidu.com/?baidu=fandaolian/img2.jpg 也执行upload函数 但凡有图的都触发upload 然后upload里面是上传图床,图床返回来的图片链接 用这个链接替换掉原来帖内的 图片链接 你这纯粹的替换链接,太简单了点吧 正在测试1楼大佬的,
qybao 2020-08-09
  • 打赏
  • 举报
回复
或者这样,直接把中间替换了

str = str.replaceAll("([?].*?img)", "my/tupian");//直接把从?到img部分替换了
qybao 2020-08-09
  • 打赏
  • 举报
回复
for example

public class Sample {
public static void main(String[] args) {
String str = "教程说明\n" +
"巴拉巴拉巴拉\n" +
"http://baidu.com/?baidu=fandaolian/img1.jpg\n" +
"呱啦呱啦挂啦挂啦\n" +
"http://baidu.com/?baidu=fandaolian/img2.jpg\n" +
"乌拉乌拉乌拉乌拉\n" +
"http://baidu.com/?baidu=fandaolian/img3.jpg\n" +
" \n" +
"吧啦吧啦吧啦吧啦吧啦吧啦吧啦吧啦\n" +
"吧啦吧啦吧啦吧啦吧啦吧啦吧啦吧啦吧啦\n" +
"吧啦吧啦吧啦吧啦吧啦";
str = str.replaceAll("(.*?/)[?]baidu=fandaolian/img(\\d)([.]jpg)", "$1my/tupian$2$3");
System.out.println(str);
}
}
lkj2016 2020-08-09
  • 打赏
  • 举报
回复

String str = "<img src=\"http://baidu.com/?baidu=fandaolian/img1.jpg\" />" +
                "<img src=\"http://baidu.com/?baidu=fandaolian/img1.jpg\" />";
        String reg = "src=\\\"([\\S]*?jpg)\\\"";
        Pattern pattern = Pattern.compile(reg);
        Matcher matcher = pattern.matcher(str);
        boolean result1 = matcher.find();
        List<String> stringList = new ArrayList<>();
        stringList.add("http:1");
        stringList.add("http:2");
        int i = 0;
        //string.replaceAll源码的实现
        StringBuffer sb = new StringBuffer();
        while (result1) {
            matcher.appendReplacement(sb, "src=\""+stringList.get(i)+"\"");
            result1 = matcher.find();
            i++;
        }
        matcher.appendTail(sb);

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧