【Java】URL을 입력하면 그 페이지가 사용하고 있는 WordPress의 테마명을 표시하는 프로그램을 만들어 보았다
소개
28세 업계 미경험, 프로그래밍소의 사람입니다.
Qiita 첫 투고! !
현재 Java의 연수를 받고 있으므로 배운 것의 비망록으로서,
그리고 같은 프로그래밍 초보자 분들의 도움에 조금이라도 세우면(자) Qiita에 투고하기로 했습니다.
보기 흉한 점 많이 있을까 생각합니다만, 따뜻한 눈으로 봐 주세요.
이 기사에 대하여
web페이지 보고 있으면 「이 사이트 wordpress 사용하고 있는 것일까?」 「무슨 테마 사용하고 있는 거야?」라고 생각하는 것이 상당히 있으므로, 공부가 나면 나름대로 Java로 써 보았습니다.
명령에서 실행하는 브라우저에서 URL을 복사하여 실행하면 결과가 표시되는 간단한 사람입니다.
방법을 생각하다
HTML 소스 코드의 내에 wp-content라는 문자열이 포함되어 있는지 WordPress를 사용하고 있는지 확인합니다.
테마명은 wp-content/themes/의 뒤에 쓰여져 있으므로, 소스 코드내의 제일 처음에 나오는 wp-content/themes/의 부분을 취득하면 알 것 같습니다.
html 취득 → List에 대입 → for문으로 한 줄씩 체크
라는 흐름으로 해 보았습니다.
샘플 코드
Sample.java
import java.io.*;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;
public class Sample {
private List<String> contents;
private final String CHARSET = "UTF-8";
public static void main(String[] args) {
String inputUrl = "";
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
Sample sample = new Sample();
try {
inputUrl = reader.readLine();
sample.addContents(inputUrl);
sample.checkWordpress();
} catch (IOException e) {
System.out.println(e);
}
}
// 指定したページがWordpressを使っているか確かめるメソッド
public void checkWordpress() {
boolean WpCheck = false;
for (String content : getContents()) {
// headタグ内に "wp-content/themes/" が含まれているかで判定
if (content.contains("wp-content/themes/") == true) {
int idx = content.indexOf("wp-content/themes/");
String line = content.substring(idx + 18); // "wp-content/themes/"以降の文字列
idx = line.indexOf("/"); // テーマ名直後の "/" のインデックス番号
System.out.println("\nテーマ名 : " + line.substring(0, idx)); // テーマ名を出力
WpCheck = true;
break;
}
}
if (WpCheck == true) {
System.out.println("Wordpressを使っています。\n");
} else {
System.out.println("\nWordpressは使われていません。");
}
}
// 指定されたURLのソースコードを取得するメソッド
public List<String> download(String url, String charset) throws Exception {
URLConnection conn = new URL(url).openConnection();
InputStream is = conn.getInputStream();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(is, charset))) {
ArrayList<String> lineList = new ArrayList<String>();
String line = null;
while ((line = reader.readLine()) != null) {
lineList.add(line);
}
return lineList;
}
}
// ダウンロードしたソースコードをListに代入するメソッド
public void addContents(String url) {
try {
this.contents = download(url, getCharset());
} catch (Exception e) {
e.printStackTrace();
System.out.println("無効なURLです。");
System.exit(0);
}
}
public List<String> getContents() {
return this.contents;
}
public String getCharset() {
return this.CHARSET;
}
}
【실행 결과】
시험에 'lightning'의 공식 페이지 URL을 지정했습니다.
테마 이름을 얻을 수 있었습니다.
해설
표준 입력에서 URL을 지정하여 http 통신으로 얻은 html 소스 코드를 List에 할당합니다.
checkWordpress 메서드에서 List에 할당된 html 소스 코드를 한 줄씩 for 문으로 확인합니다.
if문에서 "wp-content/themes/"가 소스 코드에 포함되어 있는지 판정.
"wp-content/themes/"의 인덱스 번호를 취득.
테마명을 취득하고 싶기 때문에, "wp-content/themes/"의 문자수(18문자)를 더한 인덱스 번호 이후의 문자열을 취득.
테마명 직후의 "/"의 인덱스 번호를 취득해, 0번째부터 "/"까지의 캐릭터 라인을 빼내면 테마명을 알 수 있습니다.
마지막으로
더 효율적인 방법이 있다고 생각하지만, 지금 자신에게는 이것이 가득했습니다.
애초에 브라우저에서 페이지의 소스를 표시하자마자 알겠지만, 공부를 위해 해 보았습니다.
자신이 원하는 기능을 만드는 것은, 즐겁고 달성감 있는 엄청 조사하기 때문에 공부가 됩니다.
끝
Reference
이 문제에 관하여(【Java】URL을 입력하면 그 페이지가 사용하고 있는 WordPress의 테마명을 표시하는 프로그램을 만들어 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/J_yusuke/items/2c183e7809cdb158e663텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)