如何在html页面中找到文件用作链接的位置?

时间:2016-07-06 10:08:30

标签: python html regex

我有一个静态网站,其中旧页面的版本仍存储在根目录中。我想找到这些页面,并查看它们是否在根文件中的某个链接中使用。
所以我使用powershell' s命令ls -R -Name列出了root中的所有文件,并将其存储在文件' filelist.txt'现在我有类似的东西:

directory1
directory2
5s.htm
5s.html
5s_introduction.htm
...
images\icons
images\icons\linkedin.png
images\icons\project-slider-arrow-left.png
images\icons\project-slider-arrow-right.png

我现在想看看这些文件的使用位置,所以我想我可以在python中使用一个简单的脚本(因为我不知道windows' powershell),它从列表中取一行然后在根内的每个html页面中查找出现的内容 为了只提取文件名,我在notepad ++上尝试了这个正则表达式:

[^\\^\n]+\.[a-z]{0,4}

似乎工作......(^ \ n是排除代表目录的所有行)
第二步,我尝试调整我在stackoverflow上找到的Python行:

import re
with open('filelist.txt') as f:
    for l in f:
        m = re.match('([^\\^\n]+\.[a-z]{0,4})', l)
        if m:
            print(m.group(1))

但是它给我的字符串完全错误,充满空格或单个字母,就像正则表达式错误一样。 然后我想我可以使用正则表达式结果作为变量并在我的根目录上的每个html页面上以某种方式检查它,但我被困在这里。

2 个答案:

答案 0 :(得分:0)

试试这个:

([\d+\w+\.\\\-])+

答案 1 :(得分:0)

由于您确定文件名包含'.',因此可以在'\'上拆分每个路径,并检查其是否包含'.'。此外,剥离每一行将删除换行符。

with open('filelist.txt') as f:
    for l in f:
      l= l.strip()
      if '.' in l.split('\\')[-1]:
          print l.split('\\')[-1]

<强>输出:

5s.htm
5s.html
5s_introduction.htm
linkedin.png
project-slider-arrow-left.png
project-slider-arrow-right.png