在这个网页中有一个 MediaWiki 特殊页面(即Special:
名称空间的页面)的列表,我希望自动制作所有这些名称的简单文本列表。
我假设匹配该网页中出现的所有名称的匹配模式应该是Special:^[A-Z][a-z]*:
.
您建议如何制作一个包含所有名称的简单文本列表?
答案1
我假设你指的是维基百科上的特殊页面网页,https://en.wikipedia.org/wiki/Help:Special_page,这不完全是您在问题中提到的内容。
它生成有效的 XML,因此可以由 XML 工具(例如xmlstarlet
.由此,您可以通过使用 XPath 路径识别页面并验证它们以以下内容开头来轻松列出页面Special:
:
curl https://en.wikipedia.org/wiki/Help:Special_page |
xmlstarlet sel -t -v '//ul/li/a[starts-with(text(),"Special:")]' -n
输出示例
Special:SpecialPages
Special:AllMessages (System messages)
Special:Statistics
Special:Version
Special:SiteMatrix (Wikimedia wikis)
Special:AllPages
Special:AllPages/T
...
您可以通过稍微更改路径来限制返回的页面名称集。最初我正在使用,/div[@id="mw-content-text"]/div/ul/li/a[starts-with(text(),"Special:")]
但对于您简单的要求“来说,这似乎过于复杂”列出一个清单全部这些名字”。