मुझे एक पार्सर में दिलचस्पी है जो एक विकृत HTML पृष्ठ ले सकता है, और इसे कुछ XPath क्वेरी करने से पहले इसे अच्छी तरह से बनाए गए HTML में बदल सकता है। किसी के बारे में पता है?आप पर्ल में विकृत HTML कैसे संभालते हैं?
उत्तर
आपको एचटीएमएल पार्सर का उपयोग HTML का विश्लेषण करने के लिए नहीं करना चाहिए। एक HTML पार्सर का प्रयोग करें।
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Is this valid?</title>
</head>
<body>
<p>This is a paragraph
<table>
<tr> <td>cell 1 <td>cell 2
<tr> <td>cell 3 <td>cell 4
</table>
</body>
</html>
कई कार्य विशिष्ट (सामान्य प्रयोजन के अतिरिक्त) कर रहे हैं CPAN पर HTML पारसर्स:
ध्यान दें कि निम्नलिखित पूरी तरह से वैध एचटीएमएल (और एक XML पार्सर उस पर गला घोंटना होगा) है। उन्होंने बेहद गन्दा (और अधिकांश समय अमान्य) HTML की एक विशाल विविधता पर मेरे लिए पूरी तरह से काम किया है।
यदि आप हल करने का प्रयास कर रहे समस्या को निर्दिष्ट कर सकते हैं तो विशिष्ट अनुशंसाएं देना संभव होगा।
HTML::TreeBuilder::XPath भी है जो दस्तावेज़ को पेड़ में पार्स करने के लिए HTML::Parser का उपयोग करता है और फिर आपको XPath का उपयोग करके क्वेरी करने की अनुमति देता है। मैंने कभी इसका इस्तेमाल नहीं किया है लेकिन रैंडल श्वार्टज़ के HTML Scraping with XPath देखें।
को देखते हुए HTML फ़ाइल से ऊपर, निम्नलिखित कम स्क्रिप्ट:
#!/usr/bin/perl
use strict; use warnings;
use HTML::TreeBuilder::XPath;
my $tree= HTML::TreeBuilder::XPath->new;
$tree->parse_file("valid.html");
my @td = $tree->findnodes_as_strings('//td');
print $_, "\n" for @td;
आउटपुट:
C:\Temp> z cell 1 cell 2 cell 3 cell 4
यहां प्रमुख मुद्दा है कि दस्तावेज़ एक HTML दस्तावेज के रूप में एक HTML पार्सर (द्वारा पार्स किया गया है इस तथ्य के बावजूद कि हम XPath का उपयोग करके इसे क्वेरी करने में सक्षम थे)।
जब तक आप learn more about wheels पर नज़र डाल रहे हैं, तो HTML Tidy कोड का उपयोग करें।
पर्ल प्रोग्रामर के लिए उपलब्ध कार्य-विशिष्ट पार्सर की पर्याप्तता के साथ, यह शायद ही कभी आवश्यक है। –
पिछले 5 वर्षों से मैंने पर्ल के साथ काम किया था ... इसका अनुमान लगाएं। – AnonJr
आप इस तरह सवाल अलग तरीके से व्यक्त कर सकते हैं:
में अच्छी तरह से प्रदर्शन से पहले का गठन
एचटीएमएलसी स्रोत मैं एक पार्सर कि एक विकृतHTML पृष्ठसी स्रोत ले सकता है, और उसे चालू में दिलचस्पी रखता हूँ कुछXPath क्वेरीसंकलन और उस पर लिंकिंग। किसी के बारे में पता है?
अब सवाल थोड़ा और स्पष्ट हो सकता है: यह आसान नहीं होगा। यदि यह वास्तव में विकृत HTML है, तो आपको हाथ से काम करने की आवश्यकता हो सकती है जब तक कि इसे HTML पार्सर में खिलाया जा सके। फिर, आप काम करने के लिए यहां प्रस्तुत किसी भी अन्य मॉड्यूल का उपयोग कर सकते हैं। यह असंभव है कि आप कभी भी कच्चे HTML को सख्ती से वैध xhtml में प्रोग्रामेटिक रूप से अनुवाद कर सकते हैं।
- 1. आप एएसपी.नेट एमवीसी में बहु-भाग फ़ॉर्म कैसे संभालते हैं?
- 2. आप पैकेज में आर डेटा आंतरिक कैसे संभालते हैं?
- 3. आप डेटा के छोटे सेट कैसे संभालते हैं?
- 4. कैसे टुकड़े छेद संभालते हैं?
- 5. आप पर्ल में ऑब्जेक्ट्स कैसे बनाते हैं?
- 6. आप वेब एप्लिकेशन पर वर्जनिंग कैसे संभालते हैं?
- 7. आप AJAX कॉल से त्रुटियों को कैसे संभालते हैं?
- 8. आप aspnet_compiler के साथ बहिष्कृत फ़ाइलों को कैसे संभालते हैं?
- 9. Django फिक्स्चर कईToManyFields कैसे संभालते हैं?
- 10. ब्राउज़र जावास्क्रिप्ट को कैसे संभालते हैं?
- 11. वेब क्रॉलर जावास्क्रिप्ट को कैसे संभालते हैं
- 12. स्क्रिप्ट से विकृत हेडर। बुरा हैडर = <! DOCTYPE html>
- 13. आप एक jQuery प्लगइन के अंदर क्लिक घटनाओं को कैसे संभालते हैं?
- 14. आप परीक्षण अनुप्रयोगों को कैसे संभालते हैं जो डेटाबेस पर भारी निर्भर हैं?
- 15. आप पनडुब्बियों के साथ रेल अनुप्रयोगों को तैनात करने में कैसे संभालते हैं?
- 16. ब्राउज़र एक्सएपी पैकेजों के कैशिंग को कैसे संभालते हैं?
- 17. क्या आप अजाक्स JSON या HTML हैं?
- 18. मार्कअप के साथ टेक्स्ट का अनुवाद कैसे संभालते हैं?
- 19. मैं थोड़ा विकृत HTML के साथ PQuery काम कैसे कर सकता हूं?
- 20. विकृत HTML पृष्ठों से पाठ निकालने के लिए पायथन रणनीति
- 21. आप एकाधिक वातावरण के लिए एकाधिक web.config फ़ाइलों को कैसे संभालते हैं?
- 22. आप बहुत मेमोरी बाधित, एम्बेडेड सिस्टम पर बड़े डेटा स्थानान्तरण कैसे संभालते हैं?
- 23. आप पर्ल नियमित अभिव्यक्ति पर कैसे टिप्पणी करते हैं?
- 24. आईनेमरेबल कैसे करता है। न्यूलबल प्रकारों को संभालते हैं?
- 25. वसंत + हाइबरनेट अपवादों को कहां और कैसे संभालते हैं?
- 26. फाइल सिस्टम समवर्ती पढ़ने/लिखने को कैसे संभालते हैं?
- 27. क्या आप पीएल/पर्ल
- 28. सिस्टम ट्रे आइकन विकृत
- 29. कैसे आप एक HTML पाठ क्षेत्र
- 30. आप मूस में उपप्रकार कैसे बनाते हैं?
आप जो करने की कोशिश कर रहे हैं उस पर निर्भर करता है। मैं नियमित रूप से किसी भी के बारे में चिंता किए बिना गड़बड़ वाले HTML स्रोत के गीगाबाइट्स का विश्लेषण करता हूं। –
आप यह कैसे कर रहे हैं? मैंने एलडब्लूपी :: उपयोगकर्ता एजेन्ट के साथ संयोजन में एक्सएमएल :: XPath का उपयोग करने की कोशिश की, और एक्सएमएल :: XPath एक विकृत त्रुटि के साथ विफल रहा। हो सकता है कि आप अपनी रणनीति को उत्तर के रूप में पोस्ट करना चाहें। – Geo
उत्तर हाथ पर विशिष्ट कार्य पर निर्भर करता है। आपका प्रश्न एक विशिष्ट उत्तर देने के लिए बहुत अस्पष्ट है। सबसे पहले, हालांकि, HTML को XML के रूप में पार्स करने का प्रयास न करें। एक HTML पार्सर का प्रयोग करें। –