2010-05-18 2 views
5

किसी के पास जावास्क्रिप्ट से उत्पन्न सामग्री (इस मामले में, HTML टेबल) वाले किसी पृष्ठ के HTML स्रोत को स्क्रैप करने का कोई अच्छा समाधान है?किसी के पास जावास्क्रिप्ट से उत्पन्न सामग्री (इस मामले में, HTML टेबल) वाले किसी पृष्ठ के HTML स्रोत को स्क्रैप करने का कोई अच्छा समाधान है?

एक शर्मनाक सरल है, हालांकि समस्या का समाधान Crowbar का उपयोग कर:

<?php 
function get_html($url) // $url must be urlencode(d) 
{ 
$context = stream_context_create(array(
    'http' => array('timeout' => 120) // HTTP timeout in seconds 
    )); 
    $html = substr(file_get_contents('http://127.0.0.1:10000/?url=' . $url . '&delay=3000&view=browser', 0, $context), 730, -32); // substr removes HTML from the Crowbar web service, returning only the $url HTML 
return $html; 
} 
?> 

लाभ लोहदंड का उपयोग करने कि टेबल नेतृत्वहीन मोज़िला आधारित ब्राउज़र को प्रदान की गई हो जाएगा (और सुलभ) धन्यवाद है। संपादित करें: पता चला है कि क्रॉबर के साथ समस्या एक विरोधाभासी ऐप थी, सर्वर डाउनटाइम नहीं, जो सिर्फ एक संयोग था।

उत्तर

2

यह एक और अधिक मजबूत cURL/लोहदंड का उपयोग कर ओपी में उदाहरण का संस्करण है:

<?php 
function get_html($url) 
{ 
$curl = curl_init(); 
curl_setopt ($curl, CURLOPT_URL, 'http://127.0.0.1:10000/?url=' . $url . '&delay=3000&view=as-is'); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
$html = curl_exec ($curl); 
return $html; 
} 
?> 

लगातार हो रही थी "धारा खोलने में विफल: HTTP अनुरोध विफल" एकाधिक यूआरएल के साथ f_g_c का उपयोग कर त्रुटियां।

इसके अलावा, $ url urlencode को याद रखें (उदा। 'Http% 3A% 2F% 2Fwww.google.com'> 'http://www.google.com')।

2

खैर, जावा कुछ सुविधाजनक समाधान प्रदान करता है, जैसे HtmlUint, जो सही ढंग से जावास्क्रिप्ट का अर्थ देता है, और इसके परिणामस्वरूप जेनरेट किए गए एचटीएमएल को दिखाना चाहिए।

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

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