이 페이지에서MediaWiki 특수 페이지(예: 네임스페이스 페이지) 목록이 있으며 Special:
이러한 모든 이름의 간단한 텍스트 목록을 자동으로 만들고 싶습니다.
해당 웹 페이지에 나타나는 모든 이름과 일치하는 일치 패턴은 Special:^[A-Z][a-z]*:
.
모든 이름이 포함된 간단한 텍스트 목록을 만드는 방법은 무엇입니까?
답변1
Wikipedia의 특별 페이지 웹 페이지를 참조하고 있다고 가정합니다.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:")]
귀하의 간단한 요구 사항에 비해 너무 복잡해 보였습니다."목록을 작성하다모두이 이름들".