2012-03-01 7 views
7

का उपयोग करके अपना डेटाबेस सहेजें, क्या कोई मुझे बता सकता है कि किसी वेबसाइट से विशिष्ट डेटा डाउनलोड करने के लिए कर्ल या file_get_contents का उपयोग कैसे करें और फिर उन विशिष्ट डेटा को मेरे mysql डेटाबेस में सहेजें । मैं इस वेबसाइट http://www.traileraddict.com/ से फिल्मों के नवीनतम जोड़ना चाहता हूं और मैं इसे अपने डेटाबेस में सहेजना चाहता हूं (दैनिक आधार पर; यह टेक्स्ट और एचटीएमएल लिंक मेरी वेबसाइट पर दिखाया जाएगा)। मैं सिर्फ पाठ और html लिंक। (तस्वीर में प्रकाश डाला)किसी वेबसाइट से विशिष्ट डेटा लाने के लिए curl का उपयोग कैसे करें और फिर इसे php

enter image description here

जरूरत है मैं हर जगह खोज की है, लेकिन मैं did not किसी भी उपयोगी ट्यूटोरियल पाते हैं। मेरे पास

से पूछने के लिए दो मुख्य प्रश्न हैं 1) मैं curl या file_get_contents का उपयोग करके विशिष्ट डेटा कैसे प्राप्त कर सकता हूं।

2) कैसे मैं अपने mysql डेटाबेस तालिका को विशिष्ट सामग्री को बचा सकता है (एक और स्तंभ में एक स्तंभ में पाठ और लिंक)

+0

मैं कुछ php स्क्रिप्ट (कर्ल और file_get_contents) जो मैं net.but में पाया की कोशिश की है। उन स्क्रिप्ट केवल पूरे वेबपृष्ठ को लाते हैं और विशिष्ट डेटा नहीं। मुझे यह भी नहीं पता कि उन डेटा को मेरे mysql डेटाबेस में कैसे सहेजना है – Eka

+0

google phpquery या htmlsql या simplehtmldom पर खोजें – Sarfraz

उत्तर

13

cURL का उपयोग करना:

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'http://www.something.com'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

$content = curl_exec($ch); 

तो फिर तुम में तत्व लोड कर सकते हैं एक डॉम ऑब्जेक्ट और विशिष्ट डेटा के लिए डोम पार्स। आप खोज स्ट्रिंग का उपयोग करके डेटा को भी कोशिश और पार्स कर सकते हैं, लेकिन एचटीएमएल पर रेगेक्स का उपयोग करना बेहद निराश है।

$dom = new DOMDocument(); 
$dom->loadHTML($content); 

// Parse the dom for your desired content 
+0

कैसे प्राप्त करें वेबसाइट से विशिष्ट डेटा?और पूरे वेबपृष्ठ – Eka

+0

पर आपको पहले पूरे वेबपृष्ठ को प्राप्त करने की आवश्यकता नहीं है, फिर उस जानकारी को पार्स करें जिसे आप इसे DomDocument क्लास में लोड करके और आवश्यक नोड्स पर नेविगेट करके प्राप्त करना चाहते हैं। – SS44

+0

मैं डोम के लिए नया हूं लेकिन आपके उत्तर के लिए धन्यवाद ... मैं अब कोशिश करूँगा – Eka

8

यह काम करना चाहिए, लेकिन यह गंदा है और संभव साइट पर आप स्क्रैप कर रहे हैं यह मार्कअप जो scraping को प्रभावित करेगा है बदलने के लिए होता है अगर यह टूट जाएगा:

$sites[0] = 'http://www.traileraddict.com/'; 

// use this if you want to retrieve more than one page: 
// $sites[1] = 'http://www.traileraddict.com/trailers/2'; 


foreach ($sites as $site) 
{ 
    $ch = curl_init($site); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    $html = curl_exec($ch); 


    // ok, you have the whole page in the $html variable 
    // now you need to find the common div that contains all the review info 
    // and that appears to be <div class="info"> (I think you could use abstract aswell) 
    $title_start = '<div class="info">'; 

    $parts = explode($title_start,$html); 

    // now you have an array of the info divs on the page 

    foreach($parts as $part){ 

    // so now you just need to get your title and link from each part 

    $link = explode('<a href="/trailer/', $part); 

    // this means you now have part of the trailer url, you just need to cut off the end which you don't need: 

    $link = explode('">', $link[1]); 

    // this should give something of the form: 
    // overnight-2012/trailer 
    // so just make an absolute url out of it: 

    $url = 'http://www.traileraddict.com/trailer/'.$link[0]; 

    // now for the title we need to follow a similar process: 

    $title = explode('<h2>', $part); 

    $title = explode('</h2>', $title[1]); 

    $title = strip_tags($title[0]); 

    // INSERT DB CODE HERE e.g. 

    $db_conn = mysql_connect('$host', '$user', '$password') or die('error'); 
    mysql_select_db('$database', $db_conn) or die(mysql_error()); 

$sql = "INSERT INTO trailers(url, title) VALUES ('".$url."', '".$title."')" 

mysql_query($sql) or die(mysql_error()); 

} 

यह होना चाहिए, अब आपके पास लिंक और शीर्षक के लिए एक चर है जिसे आप अपने डेटाबेस में सम्मिलित कर सकते हैं।

अस्वीकरण

मैंने कार्यस्थल पर अपने सिर के ऊपर से लिखा है तो मैं माफी माँगता हूँ अगर यह बल्ला बंद सीधे काम नहीं करता है, लेकिन मुझे पता है कि अगर ऐसा नहीं होता है और मुझे कोशिश करते हैं और करेंगे आगे मदद करें।

ALSO, मुझे पता है कि यह बेहतर हो सकता है और कम चरणों का उपयोग कर सकता है लेकिन इसमें मेरे हिस्से पर और सोच शामिल होगी और ओपी यह कर सकता है अगर वे एक बार कोड लिखने के बाद चाहते हैं, क्योंकि मैं मानता हूं यह बहुत महत्वपूर्ण होगा कि वे समझें कि मैंने क्या किया है और इसे स्वयं संपादित करने में सक्षम हैं।

इसके अलावा, मैं रात को साइट को स्क्रैप करने की सलाह दूंगा ताकि अतिरिक्त ट्रैफ़िक के साथ इसे बोझ न किया जा सके और मैं सुझाव देता हूं कि उस साइट की अनुमति मांगने के साथ ही अगर वे आपको पकड़ लेते हैं तो वे आपके लिए अंत कर पाएंगे स्क्रैप :(

अपने अंतिम बिंदु का उत्तर देने के - किसी नियत समयावधि आप एक क्रॉन जॉब का प्रयोग करेंगे पर इस चलाने के लिए

+0

हे मेरी क्वेरी का जवाब देने के लिए अपना मूल्यवान समय लेने के लिए धन्यवाद और मुझे php स्क्रिप्ट देने के लिए भी धन्यवाद ... – Eka

+0

कोई समस्या नहीं, क्या यह ठीक काम करता है ? – martincarlin87

+0

मैंने इस कोड को आजमाया नहीं है .. मुझे सरल एचटीएमएल डोम मिल गया है ... लेकिन मैं बहुत खुश हूं कि आपने यह स्क्रिप्ट – Eka

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