小Q的博客

  • 首页
  • net编程
    • 产品和框架
    • 开发实例
    • 经验技巧
    • 开源组件
  • wp独立站
  • 自媒体
  • 日记本
  • 工具箱
每个程序员,都应该有一个自己的博客站
  1. 首页
  2. 自媒体
  3. 正文

自媒体工具 如何批量提取a标签和img标签?

2022年12月25日 153点热度 0人点赞 0条评论

如果你是做自媒体行业的,肯定要找素材,包括文字、图片和视频等。今天就介绍一个快速获取图片的方法,可以说是通用的,但需要一点编程技巧。

随便打开一个你要获取图片的页面,我们以这篇为例,在浏览器里打开,按F12键,出现源码面板。

获取img源码

找到上面这个像光标的按钮,点一下,再把鼠标移动图片上,下面的代码就能看到图片的src地址,这个地址就是图片的下载路径。如果想批量下载这篇博客里的所有图片,就把往上找,找到能包含所有科片的那个html结点。右键:Copy->Copy outerHTML,这样我们就拿到了包含所有图片的html源码。

复制html源码

批量获取图片,我们使用HtmlAgilityPack组件,完整代码如下

//解析新浪微博视频
paramText = this.fmParamText.Text.Trim();
if (string.IsNullOrEmpty(paramText)) return;

List<string> listP = new List<string>();

string eleType = null;
ExtractAParamModel modelParamA = null;
ExtractImgParamModel modelParamImg = null;

if (this.moduleCode == DevToolModuleCode.ExtractA.ToString())
{
    eleType = "a";

    modelParamA = this.pgParamObj.SelectedObject as ExtractAParamModel;
}
else if (this.moduleCode == DevToolModuleCode.ExtractImg.ToString())
{
    eleType = "img";

    modelParamImg = this.pgParamObj.SelectedObject as ExtractImgParamModel;
}

HtmlAgilityPack.HtmlDocument hDoc = NS.Utility.HtmlParse.HtmlParseUtil.LoadHtmlData(paramText);
HtmlAgilityPack.HtmlNodeCollection hnc = hDoc.DocumentNode.SelectNodes(".//" + eleType);
foreach (HtmlAgilityPack.HtmlNode hn in hnc)
{
    if (this.moduleCode == DevToolModuleCode.ExtractA.ToString())
    {
        //string href = hn.Attributes["href"].Value;
        var attriHerf = hn.Attributes["href"];
        if (attriHerf == null)
            continue;

        string href = hn.Attributes["href"].Value;
        string innerText = hn.InnerText.Trim();

        if (modelParamA.ExtractHref)
        {
            string hrefValue = null;

            string urlPrefix = modelParamA.UrlPrefix;
            if (!string.IsNullOrEmpty(urlPrefix))
            {
                hrefValue = innerText + "," + urlPrefix + href;
            }
            else
            {
                hrefValue = innerText + "," + href;
            }

            if (!string.IsNullOrEmpty(modelParamA.OldReplace))
            {
                hrefValue = hrefValue.Replace(modelParamA.OldReplace, modelParamA.NewReplace);
            }

            listP.Add(hrefValue);
        }
        else
        {
            listP.Add(hn.OuterHtml);
        }
    }
    else if (this.moduleCode == DevToolModuleCode.ExtractImg.ToString())
    {
        string url = hn.Attributes["src"].Value;

        if (!string.IsNullOrEmpty(modelParamImg.ImgUrlPrefix))
        {
            url = modelParamImg.ImgUrlPrefix + url;
        }
        if (!string.IsNullOrEmpty(modelParamImg.OldReplace) && !string.IsNullOrEmpty(modelParamImg.NewReplace))
        {
            url = url.Replace(modelParamImg.OldReplace, modelParamImg.NewReplace);
        }

        listP.Add(url);
    }
}

resultText = string.Join(Environment.NewLine, listP.ToArray());

 

另外,如果图片需要添加前缀,或者替换地址,都可以批量完成

一些参数设置

 

看下工具的最终效果图

效果图

标签: HtmlAgilityPack 自媒体工具 获取A标签 获取Img标签
最后更新:2022年12月25日

小Q

80后中年不油腻大叔,喜欢编写代码、打羽毛球、做木制玩具。目前定居浙江杭州

打赏 点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

COPYRIGHT © 2022 小Q的博客. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

浙ICP备2022019157号-2