从网页中批量提取URL

题目:

根据指定URL,提取网页中所有锚链接,即href=""中引号之间的部分。


 

解法:

使用Text.FromBinaryWeb.Contents的组合获取目标网页的HTML源码当作文本处理,然后使用Text.PositionOf获取共有多少个分隔符,List.Transform+Text.BetweenDelimiters从索引0即第1个开始提取,依次提取到最后。

let
    get_link = (x,start,end)=>[a=Text.FromBinary(Web.Contents(x)),b=List.Transform({0..List.Count(Text.PositionOf(a,"href=""",2))-1},each Text.BetweenDelimiters(a,start,end,_))][b],
    result = get_link("pqfans.com","href=""","""")
in
    result

3 Replies to “从网页中批量提取URL”

  1. 我获取了一个网站的连接,但连接是拼合的,由A+B组成,采用上述代码获取后只能获取到B,如何能在获取后自动添加前缀www.###.com

  2. 老大,这里的Text.BetweenDelimiters(a,"href=""","""",_)) 最后这个_ 是啥意思呢?

    我看函数说明:

    Text.BetweenDelimiters(text as nullable text, startDelimiter as text, endDelimiter as text, optional startIndex as any, optional endIndex as any) as any

    我理解是指startIndex,但是用_,和省略掉,好像很不一样,如果省略掉就只是第一个url了。

    以及,

    get_link = (x,start,end)=>[a=Text.FromBinary(Web.Contents(x)),b=List.Transform({0..List.Count(Text.PositionOf(a,"href=""",2))-1},each Text.BetweenDelimiters(a,start,end,_))][b]

    这最后的[b]又是怎么理解呢?感觉是构造了一个函数,然后是 fx=(x,start,end)=>[a,b][b]
    [a,b][b]这个是什么语法,表示啥意思呢?

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注