琐事:
根据文档:
--ignore-url=正则表达式
与给定正则表达式匹配的 URL 将被忽略且不检查。
该选项可以多次给出。
LinkChecker 接受 Python 正则表达式。有关介绍,请参阅http://docs.python.org/howto/regex.html。一个补充是前导感叹号否定正则表达式。
因此,我们可以轻松地使用 python 检查您的正则表达式,看看它为什么不起作用(实时测试):
import re
our_pattern = re.compile(r'(png|jpg|jpeg|gif|tiff|bmp|svg|js)$')
input_data = '''
www.gov.uk/
www.gov.uk/index.html
www.gov.uk/admin.html
www.gov.uk/somefile.jpeg
www.gov.uk/anotherone.png
'''
input_data = input_data.strip().split('\n')
for address in input_data:
print('Address: %s\t Matched as Image: %s' % (address, bool(our_pattern.match(address))))
# ^ or our_pattern.fullmatch
输出:
Address: www.gov.uk/ Matched as Image: False
Address: www.gov.uk/index.html Matched as Image: False
Address: www.gov.uk/admin.html Matched as Image: False
Address: www.gov.uk/somefile.jpeg Matched as Image: False
Address: www.gov.uk/anotherone.png Matched as Image: False
而且我认为,这里的问题是由于部分匹配,因此让我们尝试完全匹配(模式,实时测试):
...
our_pattern = re.compile(r'.*(?:png|jpg|jpeg|gif|tiff|bmp|svg|js)$')
# ^ Note this (matches any character unlimited times)
...
...输出是:
Address: www.gov.uk/ Matched as Image: False
Address: www.gov.uk/index.html Matched as Image: False
Address: www.gov.uk/admin.html Matched as Image: False
Address: www.gov.uk/somefile.jpeg Matched as Image: True
Address: www.gov.uk/anotherone.png Matched as Image: True
解决方案:
如您所见,在您的尝试中,您的 URL 与给定的正则表达式不匹配,因此不会被忽略。唯一与正则表达式匹配的是列出的扩展名(png,jpg,...)。
为了克服这个问题 - 匹配扩展名之前的所有字符.*
。另一个问题 - 包含引号。
从文档的例子:
不要检查 mailto: URL。所有其他链接都照常检查:
链接检查器 --ignore-url=^mailto: mysite.example.org
所以你最后的选择是:
--ignore-url=.*(?:png|jpg|jpeg|gif|tiff|bmp|svg|js)$
希望能帮助到你!