工作中需要将课程列表取出来并做成新的网页,从已有网页内可以取到的数据包括:id(包含超链接)、名称,现在需要把超链接取出来加到名称上去,思路有两种,第一种:把超链接作为元数据之一提取出来,然后进行操作;第二种直接利用正则表达式对现有的网页数据进行操作。按照这两种思路,经过百般搜索,发现以下几种方法。最后采用的第二种方法,把原始网页内容直接复制到excel里,利用下述宏将超链接提取出来,另存为csv文件,然后用PHP提取处理成静态页面。

方法一

Q:Excel2010如何批量修改超链接地址?
A:操作步骤如下:
1、将Excel文件的扩展名修改为.zip
2、双击打开zip压缩包,找到xl文件夹下的sharedStrings.xml文件,并双击打开(一般用IE打开),在页面上点击右键->选择“查看源文件”,会弹出源代码窗口(通常是以记事本打开),然后查找需要修改的内容(如:2008年),替换为新的内容(如:2009年),保存关闭记事本,解压包这里还会提示“文件***已经被修改。你希望在压缩文件中更新它吗?”,选择“是”;
3、打开压缩包中worksheets文件夹下的_rels文件夹下的sheet1.xml.rels文件,采用上一步的方法进行查找替换操作;
4、最后把zip文件扩展名再改回原来的扩展名,即.xlsx

原文地址: http://www.exceltip.net/thread-5963-1-1-0.html

方法二

将下述代码贴到新录制的宏里,效果为将含有超链接的单元格中的链接复制到右侧单元格内

word文档插入代码:

Sub 超级链接()
For Each aHyperlink In ActiveDocument.Hyperlinks

With Selection
.InsertAfter aHyperlink.Name
.Collapse Direction:=wdCollapseEnd
.InsertParagraphAfter
End With
Next aHyperlink

End Sub

excel文档插入代码:

Sub ExtractHL()
    Dim HL As Hyperlink
    For Each HL In ActiveSheet.Hyperlinks
        HL.Range.Offset(0, 1).Value = HL.Address
    Next
End Sub

方法三

有这么一段HTML,比较不规则的,如果要提取其中的链接地址和链接名称,怎么弄?

//HTML
$str = ‘<a id="top8" href="http://www.updateweb.cn" class="p14" target="_top">更新网络</a><br><a target="_blank" id="bp" href="http://www.updateweb.cn" class="p14">中文金曲榜</a><br><td nowrap="nowrap">&#8226;&nbsp;<a id="top19" href="qingyinyue.html?top19" class="p14" target="_top">轻音乐</a></td>’;

利用正则表达式是最简单的,其它的办法,偶米去想。。。

$pat = ‘/<a(.*?)href="(.*?)"(.*?)>(.*?)<\/a>/i’;
preg_match_all($pat, $str, $m);

输出方法:

print_r($m[2]);
print_r($m[4]);

或者:
for($i=0;$i<count($m[2]) ;$i++ ){
    echo ‘<li><a href="’.$_SERVER[‘PHP_SELF’].’?url=’.$m[2][$i].’">’.$m[4][$i].'</a>’;
}

显示结果是:

Array ( [0] => http://www.updateweb.cn [1] => http://www.updateweb.cn [2] => qingyinyue.html?top19 ) Array ( [0] => 更新网络 [1] => 中文金曲榜 [2] => 轻音乐 )

于是,我们要采集某个网站的标题及链接地址方法就出来了。。。自己根据需要套用就可以了。。。