2011-01-30 12 views
7

मैं कुछ मजबूत, अच्छी तरह से प्रलेखित PHP वेब क्रॉलर स्क्रिप्ट की तलाश में हूं। शायद जावा प्रोजेक्ट का एक PHP पोर्ट - http://wiki.apache.org/nutch/NutchTutorialक्या PHP वेब क्रॉलर पुस्तकालय उपलब्ध हैं?

मैं दोनों मुफ्त और गैर-मुक्त संस्करणों की तलाश में हूं।

+1

कोई क्रॉलर डेटा स्क्रैपिंग करने वाला नहीं है, ऐसा कुछ है जिसे आप स्वयं लिखना चाहते हैं। और यह भी सुनिश्चित करें कि आप जो उठा रहे हैं वह कॉपीराइट नहीं है। –

+0

[एचटीएमएल पार्स करने के लिए सर्वोत्तम तरीके] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/3577641/best-methods-to-parse-html/3577662#3577662) – Gordon

+0

http://stackoverflow.com में अतिरिक्त संभावित डुप्लिकेट/खोज? q = वेब + क्रॉलर + php – Gordon

उत्तर

4

बस Snoopy एक कोशिश करें।

उद्धरण: "स्नूपी एक PHP क्लास है जो एक वेब ब्राउज़र को अनुकरण करती है। यह वेब पेज सामग्री को पुनर्प्राप्त करने और फॉर्म पोस्ट करने का कार्य स्वचालित करता है, उदाहरण के लिए।"

+2

क्षमा करें आदमी, मुझे पता है कि यह एक पुरानी पोस्ट है लेकिन लोग अभी भी इस जवाब को पढ़ते हैं और मैं डाउनवॉटेड क्योंकि स्नूपी रेगेक्स को पार्स करने के लिए उपयोग करता है एचटीएमएल और [यह अच्छा नहीं है] (http://stackoverflow.com/questions/6751105/why-its-not-possible-to-use-regex-to-parse-html-xml-a-formal-explanation-in- ला) ... – fernandosavio

2

आप PHP Simple HTML DOM Parser का उपयोग कर सकते हैं। यह वास्तव में सरल और उपयोगी है।

+1

[SimpleHtmlDom] (http://simplehtmldom.sourceforge.net/) के लिए सुझाए गए तृतीय पक्ष विकल्प जो वास्तव में [DOM] (http://php.net/manual/en/book.dom.php का उपयोग करते हैं)) स्ट्रिंग पार्सिंग के बजाय: [phpQuery] (http://code.google.com/p/phpquery/), [Zend_Dom] (http://framework.zend.com/manual/en/zend.dom.html) , [QueryPath] (http://querypath.org/) और [FluentDom] (http://www.fluentdom.org)। – Gordon

2

मैं phpQuery की खोज से पहले लगभग 3 साल के लिए सरल HTML DOM का उपयोग कर रहा हूं। यह बहुत तेज है, फिर से काम नहीं कर रहा है (आप वास्तव में इसे डंप कर सकते हैं) और jQuery चयनकर्ताओं और विधियों के लिए पूर्ण समर्थन है।

+1

@ गॉर्डन नोप, वे jQuery चयनकर्ता हैं। JQuery.com से: "सीएसएस 1-3 से उधार लेना, और फिर अपना खुद का जोड़ना, jQuery दस्तावेज़ में तत्वों के एक समूह से मेल खाने के लिए उपकरणों का एक शक्तिशाली सेट प्रदान करता है।" – Kemo

+0

हम्म, ठीक है।वे सीएसएस चयनकर्ताओं पर विस्तार करते हैं। मुझे लगता है कि यह एक वैध भेद है। माफ़ कीजिये। मैं शायद ही कभी लोगों को ऐसा कुछ भी उपयोग करता हूं जो सीएसएस चयनकर्ताओं के सेट में नहीं है जब वे * jQuery * चयनकर्ताओं के बारे में बात करते हैं। वे इसे jQuery की तरह ध्वनि बनाते हैं। – Gordon

+1

@ गॉर्डन हाँ, मैं h8 "जैसे हमने उनका आविष्कार किया" भाग भी :) sizzlejs.com पर अधिक जानकारी – Kemo

1

यदि आप एक मजबूत आधार घटक के बारे में सोच रहे हैं की तुलना में http://symfony.com/doc/2.0/components/dom_crawler.html

यह आश्चर्यजनक है करने के लिए एक कोशिश, सीएसएस चयनकर्ता की तरह एक सुविधाओं होने दे।

1

एक greate ट्यूटोरियल here जो guzzlehttp और symfony/dom-crawler

जोड़ती मामले लिंक यहाँ खो दिया है कोड आप उपयोग कर सकते हैं है में नहीं है।

use Guzzle\Http\Client; 
use Symfony\Component\DomCrawler\Crawler; 
use RuntimeException; 

// create http client instance 
$client = new GuzzleHttp\ClientClient('http://download.cloud.com/releases'); 

// create a request 
$response = $client->request('/3.0.6/api_3.0.6/TOC_Domain_Admin.html'); 

// get status code 
$status = $response->getStatusCode(); 

// this is the response body from the requested page (usually html) 
//$result = $response->getBody(); 

// crate crawler instance from body HTML code 
$crawler = new Crawler($response->getBody(true)); 

// apply css selector filter 
$filter = $crawler->filter('div.apismallbullet_box'); 
$result = array(); 

if (iterator_count($filter) > 1) { 

    // iterate over filter results 
    foreach ($filter as $i => $content) { 

     // create crawler instance for result 
     $cralwer = new Crawler($content); 
     // extract the values needed 
     $result[$i] = array(
      'topic' => $crawler->filter('h5')->text(); 
      'className' => trim(str_replace(' ', '', $result[$i]['topic'])) . 'Client' 
     ); 
    } 
} else { 
    throw new RuntimeException('Got empty result processing the dataset!'); 
} 
संबंधित मुद्दे