मुझे किसी वेबसाइट में संग्रहीत कुछ मान प्रदर्शित करने की आवश्यकता है, जिसके लिए मुझे वेबसाइट को स्क्रैप करने और तालिका से सामग्री लाने की आवश्यकता है। कोई विचार?मैं पर्ल के साथ स्क्रैप कैसे स्क्रीन कर सकता हूं?
उत्तर
आप jQuery से परिचित हैं आप pQuery है, जो यह बहुत आसान बना देता है की जाँच करने के लिए चाहते हो सकता है:
## print every <h2> tag in page
use pQuery;
pQuery("http://google.com/search?q=pquery")
->find("h2")
->each(sub {
my $i = shift;
print $i + 1, ") ", pQuery($_)->text, "\n";
});
वहाँ भी HTML::DOM है।
जो भी आप करते हैं, हालांकि, इसके लिए नियमित अभिव्यक्तियों का उपयोग न करें।
मैंने अतीत में HTML Table Extract का उपयोग किया है। मुझे व्यक्तिगत रूप से इसका उपयोग करने के लिए थोड़ा बेवकूफ़ लगता है, लेकिन हो सकता है कि मैं ऑब्जेक्ट मॉडल को अच्छी तरह समझ नहीं पाया। मैं आमतौर पर डेटा की जांच करने के लिए मैन्युअल के इस भाग का उपयोग करें:
use HTML::TableExtract;
$te = HTML::TableExtract->new();
$te->parse($html_string);
# Examine all matching tables
foreach $ts ($te->tables) {
print "Table (", join(',', $ts->coords), "):\n";
foreach $row ($ts->rows) {
print join(',', @$row), "\n";
}
}`
मैं अपनी स्क्रीन के सबसे जरूरतों scraping के लिए LWP::UserAgent का उपयोग करें। यदि आपको कुकीज़ समर्थन की आवश्यकता है तो आप HTTP::Cookies के साथ भी जोड़ सकते हैं।
स्रोत प्राप्त करने के तरीके पर एक सरल उदाहरण यहां दिया गया है।
use LWP;
use HTTP::Cookies;
my $cookie_jar = HTTP::Cookies->new;
my $browser = LWP::UserAgent->new;
$browser->cookie_jar($cookie_jar);
$resp = $browser->get("https://www.stackoverflow.com");
if($resp->is_success) {
# Play with your source here
$source = $resp->content;
$source =~ s/^.*<table>/<table>/i; # this is just an example
print $source; # not a solution to your problem.
}
हालांकि मैं आम तौर पर LWP/LWP::Simple के साथ इस किया है, पर्ल में स्क्रैप वेबपेज के किसी भी प्रकार के लिए मौजूदा 'पसंदीदा' मॉड्यूल WWW::Mechanize है।
डेविड: क्या आप इस पर विस्तार कर सकते हैं। मैंने हमेशा सोचा था कि WWW :: मशीनीकरण स्वचालित परीक्षण के लिए अधिक था। क्या यह ऊपर कटौती करता है? –
डब्ल्यूडब्ल्यूडब्ल्यू :: मैकेनाइजेशन किसी वेबसाइट के साथ किसी प्रकार की बातचीत के लिए है। इसे स्वचालित परीक्षण पर कभी लक्षित नहीं किया गया था। –
हालांकि, टेस्ट :: डब्ल्यूडब्ल्यूडब्ल्यू :: मैकेनाइज * * स्वचालित परीक्षण पर लक्षित है। यह WWW :: मैकेनाइजेशन के चारों ओर एक रैपर है। –
यदि आप XPath से परिचित हैं, तो आप HTML::TreeBuilder::XPath का भी उपयोग कर सकते हैं। और अगर आप नहीं कर रहे हैं ... अच्छी तरह से आप होना चाहिए; -)
समान Stackoverflow सवालों पर एक नजर है के लिए ....
- How can I extract URLs from a web page in Perl
- How can I extract XML of a website and save in a file using Perl’s LWP?
मुझे इस तरह की चीजों के लिए pQuery का उपयोग करना पसंद है, हालांकि Web::Scraper दिलचस्प दिखता है।
मैं एक मरे हुए धागा लेकिन इस सूत्र भर googling किसी को खींचें करने के लिए भी WWW::Scripter चेकआउट चाहिए मतलब यह नहीं है -
खुश दूरदराज के डेटा एकत्र करना 'पटकथा वेब साइटों कि स्क्रिप्ट के लिए';)
लें जादुई Web::Scraper पर एक नज़र डालें, यह वेब स्क्रैपिंग के लिए उपकरण है।
चेक बाहर पर्ल के साथ scraping वेब का यह छोटा उदाहरण: link text
आप भी इस सरल पर्ल मॉड्यूल वेब इस्तेमाल कर सकते हैं :: स्क्रैपर, इस बात को समझ और मेरे लिए जीवन आसान बनाने के लिए सरल है। अधिक जानकारी के लिए इस उदाहरण का पालन करें।
http://teusje.wordpress.com/2010/05/02/web-scraping-with-perl/
जीवन इतना आसान हो सकता है :-) – juFo
- 1. क्या मैं फ़्लैश स्क्रैप कर सकता हूं?
- 2. मैं पर्ल 6 के साथ कैसे शुरू कर सकता हूं?
- 3. मैं थोक खोज कैसे कर सकता हूं और पर्ल के साथ प्रतिस्थापित कैसे कर सकता हूं?
- 4. कैसे मोज़ेडा स्क्रीन स्क्रैप कोडित?
- 5. मैं स्ट्रॉबेरी पर्ल के साथ प्रोग्राम कैसे चला सकता हूं?
- 6. मैं अपनी एएसपीनेट साइट को स्क्रीन स्क्रैप होने से कैसे रोक सकता हूं?
- 7. मैं स्क्रीन पर प्रिंट करने वाले पर्ल फ़ंक्शंस का परीक्षण कैसे कर सकता हूं?
- 8. मैं पर्ल में सेट का प्रतिनिधित्व कैसे कर सकता हूं?
- 9. मैं पर्ल से फ़ाइल अनुमतियां कैसे सेट कर सकता हूं?
- 10. मैं पर्ल में एक सशर्त प्रतिस्थापन कैसे कर सकता हूं?
- 11. मैं पर्ल से यूटीएफ -8 कैसे आउटपुट कर सकता हूं?
- 12. मैं सक्रिय स्क्रीन आयाम कैसे प्राप्त कर सकता हूं?
- 13. मैं स्क्रीन सेंटर में छवि कैसे प्रदर्शित कर सकता हूं?
- 14. मैं वर्तमान स्क्रीन अभिविन्यास कैसे प्राप्त कर सकता हूं?
- 15. मैं पर्ल मॉड्यूल निर्भरताओं का प्रबंधन कैसे कर सकता हूं?
- 16. मैं पर्ल में बाइनरी खोज कैसे कार्यान्वित कर सकता हूं?
- 17. मैं पर्ल में ट्रेसबैक कैसे प्राप्त कर सकता हूं?
- 18. मैं पर्ल सबराउटिन कैसे रेखांकित कर सकता हूं?
- 19. मैं पर्ल में यूनिक्स grep कैसे कार्यान्वित कर सकता हूं?
- 20. मैं पर्ल में 64-बिट अंकगणित कैसे कर सकता हूं?
- 21. मैं पर्ल में टाइमस्टैम्प कैसे प्रारूपित कर सकता हूं?
- 22. मैं पर्ल में एक सरणी कैसे छोटा कर सकता हूं?
- 23. मैं पर्ल में सरणी की तुलना कैसे कर सकता हूं?
- 24. मैं पर्ल में यूनिट परीक्षण कैसे कर सकता हूं?
- 25. मैं विंडोज 8 पर पर्ल कैसे स्थापित कर सकता हूं?
- 26. मैं पर्ल मॉड्यूल को अनलोड कैसे कर सकता हूं?
- 27. मैं एक पर्ल स्क्रिप्ट कैसे डिबग कर सकता हूं?
- 28. मैं पर्ल में तिथियों को कैसे सत्यापित कर सकता हूं?
- 29. मैं पर्ल से सी कैसे परिवर्तित कर सकता हूं?
- 30. मैं पर्ल में तिथियों को कैसे क्रमबद्ध कर सकता हूं?
एचटीएमएल :: TableExtract काफी जादुई है।एक शानदार विशेषता हेडर कोशिकाओं की सामग्री निर्दिष्ट करके तालिकाओं का चयन करने में सक्षम है और केवल उन स्तंभों को रखने में सक्षम है जो आप रुचि रखते हैं। –