您现在的位置是:时尚 >>正文

易语言获取网页内全部链接源码

时尚45人已围观

简介 写易语言爬网页链接,核心就一句话:用正则匹配href属性。别想复杂了,易语言自带的“正则表达式”库足够用。我见过有人非要去调XMLHTTP组件解析DOM,结果卡在编码转换上折腾半天,纯属自己找罪受。 ...

写易语言爬网页链接,易语言获页内源码核心就一句话:用正则匹配href属性。取网全部别想复杂了,链接易语言自带的易语言获页内源码“正则表达式”库足够用。我见过有人非要去调XMLHTTP组件解析DOM,取网全部结果卡在编码转换上折腾半天,链接纯属自己找罪受。易语言获页内源码

先看最直接的取网全部代码骨架:
网页源码 = 到文本 (HTTP读文件 (“https://example.com”))
这行搞定抓取。但有个坑——很多网站返回的链接是GBK编码,直接到文本会乱码。易语言获页内源码你得先判断编码,取网全部用编码转换 (源码,链接 #编码_GBK, #编码_UTF_8)绕一下。具体判断方法?易语言获页内源码看网页head里有charset=gb2312还是utf-8,懒得判断就两种都试一遍,取网全部哪个不乱码用哪个。链接

拿到源码后,正则表达式这样写:
正则.创建 (“href=[“”'](.*?)[“”']”, 网页源码)
这里有个细节,单双引号都匹配,别漏了。有些链接是相对路径,比如/article/123.html,你得手动补全域名前缀。我习惯先取出所有匹配项,再循环拼接:
如果真 (取文本左边 (链接, 4) ≠ “http”)
链接 = 主域名 + 链接

主域名从哪来?用取域名 (网址)这个API,或者干脆写死。

实际测试时你会发现,页面里总混着乱七八糟的东西——javascript跳转、锚点#、mailto:邮箱。我一般加个过滤条件:
如果真 (寻找文本 (链接, “javascript”, , 真) ≠ -1 或 寻找文本 (链接, “#”, , 真) ≠ -1)
跳过 ()

别小看这一步,不过滤的话,你抓下来一百个链接里能有三十个是废的。

编码问题处理完,还有个隐形杀手——网页源码里的转义字符。比如&会被正则误判成&,导致链接不完整。解决办法是在正则匹配前先替换:
网页源码 = 子文本替换 (网页源码, “&”, “&”, , , 真)
这步不做,你拿到的链接点开全是404。

最后说下性能。如果你要抓的页面很大,比如几MB的HTML,正则循环会卡。我习惯先取文本中间,把<body>到</body>之间的内容截出来再匹配,能省一半时间。要是页面里有iframe嵌套,那得递归处理,但一般用不上——静态站就够玩了。

写完了跑一遍,你会发现问题永远出在你想不到的地方。比如某个网站的链接用了单引号包裹但正则没匹配到,或者CSS里也有href属性被误抓。这时候别急,调试输出每个匹配项,看看到底抓了啥。易语言的调试器虽然简陋,但胜在直观。

这套代码我用了三年,从抓博客友情链接到采集行业目录,改改正则就能用。核心逻辑永远不变:抓源码→转编码→正则取href→过滤无效→拼接完整URL。记住这个流程,剩下的都是细节打磨。

Tags:

相关文章

  • 网站CMS系统

    时尚

    2003年,我帮一家地方报社做网站。技术总监拍板用当时最流行的PHPCMS,理由是“后台能发文章就行”。三个月后报社编辑打电话骂我:“你们做的什么破系统?我想在首页放个滚动图片,找遍后台都没找到入口! ...

    【时尚】

    阅读更多
  • webapi服务器部署

    时尚

    把 WebAPI 部署到服务器上,最常见的翻车点不是代码写错了,而是服务器根本“听不见”你的请求。本机调试一切正常,一上服务器就 404 或 502,十有八九是绑定地址、端口映射或者反向代理这三件事没 ...

    【时尚】

    阅读更多
  • 光电传感器 qs18vp6db banner

    时尚

    拆开QS18VP6DB的包装,第一反应是这玩意儿比想象中小一圈。18毫米的圆柱形塑料壳,拿在手里轻飘飘的,跟一颗大号胶囊差不多。Banner把这系列叫"世界光束",名字起得挺大,但东西确实皮实——IP ...

    【时尚】

    阅读更多


友情链接