كل شخص يشعر بالإحباط عند مواجهة صفحات HTML المعقدة والمرهقة. لأنه من الصعب الحصول على البيانات المقابلة.
أقدم طريقة هي محاولة استخدام التعبيرات العادية.
الطريقة الثانية هي استخدام حزمة HTMLPARSER مفتوحة المصدر.
لديّ رمز المصدر لـ HTMLParser هنا ، والذي يمكن أن يحصل على جميع الارتباطات التشعبية
نسخة الكود كما يلي:
/*
* لتغيير هذا القالب ، اختر الأدوات |
* وفتح القالب في المحرر.
*/
اختبار الحزمة
استيراد java.util.hashmap ؛
استيراد java.util.map ؛
استيراد org.htmlparser.node ؛
استيراد org.htmlparser.nodefilter ؛
استيراد org.htmlparser.parser ؛
استيراد org.htmlparser.tags.linktag ؛
استيراد org.htmlparser.util.nodelist ؛
الفئة العامة getLinkTest {
الفراغ الثابت العام الرئيسي (سلسلة [] args) {
يحاول {
// تصفية العلامة <a> من خلال المرشح
parser parser = new parser ("// www.vevb.com") ؛
nodelist nodeList = parser.extractallnodesthatmatch (NewFilter () {
// تنفيذ هذه الطريقة لتصفية العلامات
قبول منطقي العام (عقدة العقدة) {
if (node eastivateof linktag) // tag
{
العودة صحيح.
}
العودة كاذبة
}
}) ؛
// مطبعة
لـ (int i = 0 ؛ i <nodelist.size () ؛ i ++) {
linktag n = (linktag) nodeList.elementat (i) ؛
//system.out.print (n.getStringText () + "== >>") ؛
//system.out.println (n.extractLink ()) ؛
يحاول {
if (n.extractLink (). يساوي ("// www.vevb.com")) {
system.out.println (n.extractLink ()) ؛
}
} catch (استثناء e) {
}
}
} catch (استثناء e) {
E.PrintStackTrace () ؛
}
}
}
الطريقة الثالثة هي الطريقة التي استخدمتها الآن.
نسخة الكود كما يلي:
/*
* لتغيير هذا القالب ، اختر الأدوات |
* وفتح القالب في المحرر.
*/
حزمة exec ؛
استيراد java.io.file ؛
استيراد java.io.ioException ؛
استيراد org.htmlcleaner.cleanerProperties ؛
استيراد org.htmlcleaner.htmlcleaner ؛
استيراد org.htmlcleaner.prettyxmlserializer ؛
استيراد org.htmlcleaner.tagnode ؛
/**
*
*/
الطبقة العامة htmlclean {
public void cleanhtml (سلسلة htmlurl ، سلسلة xmlurl) {
يحاول {
بدء طويل = system.currentTimeMillis () ؛
HTMLCLEANER CLEANER = جديد HTMLCLEANER () ؛
Propsproperties Props = cleaner.getProperties () ؛
props.setuseCdataForScriptAndStyle (صواب) ؛
props.setRecognizeUnicoDechars (True) ؛
props.setUseEmpTyelementTags (صواب) ؛
props.setadvancedxmlescape (صواب) ؛
props.setTransLatesPecialentities (صواب) ؛
props.setBooleAnattributeValues ("فارغة") ؛
node tagnode = cleaner.clean (ملف جديد (htmlurl)) ؛
System.out.println ("Vreme:" + (System.CurrentTimeMillis () - start)) ؛
NewxMlSerializer (ProPs) .writexmltofile (Node ، Xmlurl) ؛
System.out.println ("Vreme:" + (System.CurrentTimeMillis () - start)) ؛
} catch (ioException e) {
E.PrintStackTrace () ؛
}
}
}