Какие запросы я должен использовать для извлечения символов из HTML-страницы с помощью Jsoup?
Я пытаюсь извлечь смайлики, перечисленные на этом сайте http://www.i2symbol.com/emoticons/angry с помощью библиотеки JSoup для Java.
В html-источнике страницы я заметил, что каждый смайлик содержится в следующем идентификаторе div:
Код для следующего символа
ヽ(ಠ_ಠ)ノ<div id="symbol_0" data-symbols="ヽ(ಠ_ಠ)ノ" contenteditable="true">ヽ(ಠ_ಠ)ノ</div>
\ (`0 ') /<div id="symbol_9" data-symbols="\(`0´)/" contenteditable="true">\(`0´)/</div>
(╯°□°)╯︵ ┻━┻<div id="symbol_10" data-symbols="(╯°□°)╯︵ ┻━┻" contenteditable="true">(╯°□°)╯︵ ┻━┻</div>
Таким образом, в основном символы являются HTML HEX-кодами. Я посмотрел на синтаксис селектора, приведенный здесь https://jsoup.org/cookbook/extracting-data/selector-syntax Но я не могу создать соответствующий запрос селектора для извлечения этих символов из HTML-страницы.
А также, поскольку существует около 27 символов, которые необходимо извлечь с этой страницы. Как сохранить эти символы во внешний текстовый файл.
С помощью @Dave я смог написать этот код. Но это печатает всю строку кода, как я могу просто использовать его извлечь
(╯°□°)╯︵ ┻━┻от
<div id="symbol_10" data-symbols="(╯°□°)╯︵ ┻━┻" contenteditable="true">(╯°□°)╯︵ ┻━┻</div>
МОЙ Java-код
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class HTMLParserExample3 {
public static void main(String[] args) {
Document doc;
try {
doc = Jsoup.connect("http://www.i2symbol.com/emoticons/angry").get();
Elements symbols= doc.select("div[^data-symbols]");
for(Element symbol : symbols) {
System.out.println("\nSymbol: " + symbol);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
1 ответ
Похоже, что все они используют атрибут данных HTML5 (например, "data-символы"), и в соответствии с документами селектора вы можете использовать следующее для фильтрации элементов по атрибуту данных:
[^ attr]: элементы с префиксом имени атрибута, например, [^data-] находит элементы с атрибутами набора данных HTML5
Имея это в виду, дать этому шанс:
Elements symbols= doc.select("div[^data-symbols]");
Что касается записи в файл, если вы хотите, чтобы этот файл был HTML, вы можете попробовать что-то вроде этого.
Обновить:
У JSoup есть способ сделать то, что вы хотите, перечисленные здесь.
Если мы применим это к вашему делу, мы добавим его к тому, что у нас было ранее, то получим:
Elements symbols= doc.select("div[^data-symbols]");
for (Element s: symbols) {
String symbol= s.attr("data-symbols");
System.out.println(symbol);
}