免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4567 | 回复: 15
打印 上一主题 下一主题

[文章采集] 请问如何补全url? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-08-25 17:00 |只看该作者 |倒序浏览
请问一下我在做采集的时候有些图片或者文章地址是相对路径,怎么办呢?

当然,我可以取新闻列表页URL加相对地址..
但是更多时候比如:
新闻列表页URL为:http://www.aaa.com/aaa/bb/news.html
然后图片相对地址为
../../images/tt.jpg

这时候我该怎么办呢?

而且更多的时候可能情况更复杂,不知道大家在遇到这样的问题的时候有什么好的解决方法?

论坛徽章:
0
2 [报告]
发表于 2005-08-25 18:43 |只看该作者

[文章采集] 请问如何补全url?

这个问题好,,顶。。

关系到页面里的地址如何处理。。

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
3 [报告]
发表于 2005-08-25 19:54 |只看该作者

[文章采集] 请问如何补全url?

原帖由 "diychen" 发表:
请问一下我在做采集的时候有些图片或者文章地址是相对路径,怎么办呢?

当然,我可以取新闻列表页URL加相对地址..
但是更多时候比如:
新闻列表页URL为:http://www.aaa.com/aaa/bb/news.html
然后图片相对地址为
..........


更多得时候,难道相对路径就不起作用了?
还是可以再基础路径上多次../../../../的。

论坛徽章:
0
4 [报告]
发表于 2005-08-25 21:54 |只看该作者

[文章采集] 请问如何补全url?

版主, LZ的意思应该是把页面抓下来以后, 碰到图片无法显示时想寻找解决办法.

这个我觉得可以在读取网页内容时用正则表达式进行匹配判断,然后替换...

论坛徽章:
0
5 [报告]
发表于 2005-08-26 09:01 |只看该作者

[文章采集] 请问如何补全url?

这个问题不好办,我以前用 outlook 发送网页时,发现网页中的图片是相对路径的,就无法显示。

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
6 [报告]
发表于 2005-08-26 09:27 |只看该作者

[文章采集] 请问如何补全url?


  1. $strBaseUrl = "[当前页面的网页地址的路径部分(去掉最后的文件名成)]";
  2. $strDist = preg_replace('/([src|href])=([\'"])(?!http:\/\/)(.+?)(.+?)([\'"])/', '$1=$2'.$strBaseUrl.'$3$4', $strSource);
复制代码


以上针对:
src='xxxxx'
src="xxxxx"
href='xxxxx'
href="xxxxx"
且其中的网址,不以http://开头

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
7 [报告]
发表于 2005-08-26 09:34 |只看该作者

[文章采集] 请问如何补全url?


  1. <?php
  2. $strSource = "src='../../../images/test.gif'";
  3. $strBaseUrl = "http://www.test.com/";
  4. $strDist = preg_replace('/([src|href])=([\'"])(?!http:\/\/)(.+?)(.+?)([\'"])/', '$1=$2'.$strBaseUrl.'$3$4', $strSource);
  5. echo $strDist;

  6. print "\n";

  7. $strSource = "src='http://www.test.com/images/test.gif'";
  8. $strBaseUrl = "http://www.test.com/";
  9. $strDist = preg_replace('/([src|href])=([\'"])(?!http:\/\/)(.+?)(.+?)([\'"])/', '$1=$2'.$strBaseUrl.'$3$4', $strSource);
  10. echo $strDist;
  11. ?>;
复制代码

----------php Complier ----------
Content-type: text/html
X-Powered-By: PHP/4.4.0

src='http://www.test.com/../../../images/test.gif
src='http://www.test.com/images/test.gif'
输出完成 (耗时 0 秒) - 正常终止

论坛徽章:
0
8 [报告]
发表于 2005-08-26 09:50 |只看该作者

[文章采集] 请问如何补全url?

相对路径有什么关系,比如现在http://www.a.com/b/c/index.html文件中有图片链接为<img src="../../imgs/a.gif">;,你要取图片是吗,你可能想方设法用绝对路径来表示:http://www.a.com/imgs/a.gif,其实可以直接在后面加,http://www.a.com/b/c/../../imgs/a.gif。这样有什么问题吗?

论坛徽章:
0
9 [报告]
发表于 2005-08-26 12:44 |只看该作者

[文章采集] 请问如何补全url?

还个应该试试用preg_replace 里 /x 修正符, 针对 ".../.../" 和当前的 URL 判断层次数, 然后再返回应有的URL

论坛徽章:
0
10 [报告]
发表于 2005-09-11 22:29 |只看该作者

[文章采集] 请问如何补全url?

版主:
如果它没有引号如何处理?

如:
<img src=a.gif>;
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP