2008-08-29 24 views
32

मैं नियमित अभिव्यक्तियों का उपयोग करके PHP में कुछ HTML स्क्रैपिंग कर रहा हूं। यह काम करता है, लेकिन परिणाम परिष्कृत और नाजुक है। क्या किसी ने किसी भी पैकेज का उपयोग किया है जो अधिक मजबूत समाधान प्रदान करता है? एक कॉन्फ़िगर संचालित समाधान आदर्श होगा, लेकिन मैं picky नहीं हूँ।PHP में HTML स्क्रैपिंग

+0

[इस] (http://stackoverflow.com/questions/26947/how-to-implement-a-web-scraper-in-php#27109) धागा पर एक नजर डालें - प्रश्न एक समान दिशा में चला जाता है – crono

उत्तर

28

मैं पृष्ठ से HTML को स्क्रैप करने के बाद PHP Simple HTML DOM Parser की पुनरावृत्ति करूंगा। यह अमान्य HTML का समर्थन करता है, और HTML तत्वों को संभालने का एक बहुत ही आसान तरीका प्रदान करता है।

+8

सुझाए गए तीसरे पक्ष के विकल्प [SimpleHtmlDom] (http://simplehtmldom.sourceforge.net/) है कि वास्तव में उपयोग करने के लिए [डोम] (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), [क्वेरीपैथ] (http://querypath.org/) और [फ्लुएंटडोम] (http://www.fluentdom.org)। – Gordon

+0

क्या आप मुझे किसी दिए गए पृष्ठ पर किसी भी लिंक पर क्लिक करने के लिए उदाहरण दे सकते हैं? –

5

यदि आप जिस पृष्ठ को स्क्रैप कर रहे हैं वह वैध एक्स (एचटी) एमएल है, तो PHP's built-in XML parsers में से कोई भी करेगा।

मुझे स्क्रैपिंग के लिए PHP पुस्तकालयों के साथ बहुत सफलता नहीं मिली है। यदि आप साहसी हैं, तो आप simplehtmldom आज़मा सकते हैं। मैं पाइथन के लिए रूबी या Beautiful Soup के लिए Hpricot की अनुशंसा करता हूं, जो HTML के लिए उत्कृष्ट पार्सर्स दोनों हैं।

+0

यदि आप विशेष रूप से मैला एचटीएमएल पार्सिंग करने जा रहे हैं, तो सुनिश्चित करें कि आप सुंदर सूप 3.1.x का उपयोग नहीं करते हैं (3.0.x का उपयोग करें)। 3.1.x htmllib का उपयोग अपने पार्सर के रूप में करता है, जो 3.0.x के sgmllib के उपयोग से बहुत कम क्षमा कर रहा है। – Tom

2

मैंने उपरोक्त वर्णित Simple Html DOM Parser के साथ परिणामों के साथ बहुत अच्छा प्रदर्शन किया है। और फिर tidy Extension for PHP भी है जो अच्छी तरह से काम करता है।

5

मुझे htmlSQL के साथ काम करने में कुछ मज़ा आया, जो कि बहुत अधिक अंत समाधान नहीं है, लेकिन काम करने के लिए वास्तव में आसान है।

+0

देर से टिप्पणी लेकिन मुझे अभी Google के माध्यम से आपका जवाब मिला .. मुझे यह पसंद है! :) – Ben

+0

क्या यह अभी भी आपके लिए काम करता है? यह मेरे लिए काम नहीं लग रहा है ... – Dinesh

3

एचटीएमएल स्क्रैपिंग के लिए PHP का उपयोग करके, मैं curl + regexp या curl + कुछ डीओएम पार्सर्स की सिफारिश करता हूं हालांकि मैं व्यक्तिगत रूप से curl + regexp का उपयोग करता हूं। यदि आपके पास regexp का गहरा स्वाद है, तो यह वास्तव में कभी-कभी अधिक सटीक होता है।

5

मैं 'सरल HTML डोम पार्सर' की भी सिफारिश करता हूं। यह एक अच्छा विकल्प है, खासकर यदि आप jQuery या जावास्क्रिप्ट चयनकर्ताओं से परिचित हैं तो आप घर पर खुद को पा लेंगे।

I have even blogged about it in the past.

2

मैं अपने मेजबान 1and1 पर कर्ल का उपयोग करने के लिए किया था।

http://www.quickscrape.com/ मैं सरल डॉम कक्षा का उपयोग करने के साथ आया था!

संबंधित मुद्दे