2015-12-24 6 views
5

मैं php के लिए नया हूं और मैंने एक scraper.php पृष्ठ बनाया है जहां आप किसी दिए गए शहर के लिए "http://www.weather-forecast.com" से मौसम जानकारी पुनर्प्राप्त कर सकते हैं।
मैं प्रशिक्षक पीछा कर रहा था और मैं नहीं देख सकते हैं क्यों मेरे कोड एक रिक्त पृष्ठ जब इसकी सिर्फ एक संक्षिप्त 3 दिन forcastस्क्रैपर PHP एक रिक्त पृष्ठ लौटा रहा है

वैसे भी वापस जाने के लिए माना जाता लौटा रहा है ... यहाँ मेरी कोड है

<?php 
$city=$_GET['city']; 
$city=str_replace(" ","",$city); 
$contents=file_get_contents("http://www.weather-forecast.com/locations/".$city."/forecasts/latest"); 
preg_match('/3 Day Weather Forest Summary:<\/b> 
<span class="phrase">(.*?)</span>',$contents, $matches); 
echo $matches[1]; 
?> 
+0

क्या आपने इसे डीबग करने का प्रयास किया है? $ शहर क्या है? आपको $ सामग्री में क्या मिलता है? आदि – pvg

+0

खाली वाक्य वाक्यविन्यास त्रुटियों का मतलब हो सकता है http://php.net/manual/en/function.error-reporting.php –

उत्तर

-1

कोशिश

how-can-i-emulate-a-get-request-exactly-like-a-web-browser,

आप जो खोज रहे हैं पाने के लिए: इस प्रश्न का अनुसरण।

स्पष्टीकरण:

file_get_contents() आप स्थैतिक पृष्ठ सामग्री दे देंगे।

सामग्री जो आप वास्तव में अपने ब्राउज़र में देखते हैं वह HTML/CSS/JS, द्वारा उत्पन्न होती है और file_get_contents() फ़ंक्शन के साथ नहीं देखी जाएगी। , स्रोत के रूप में

और खोला पृष्ठ के लिए खोज: "3 दिन मौसम वन सारांश:":

जब मैं सीधे अपने ब्राउज़र से कि यूआरएल

(new york उदाहरण के लिए) के लिए, ब्राउज़ करने की कोशिश की।

मुझे कोई परिणाम नहीं मिला, इसलिए मुझे लगता है कि आपकी समस्या थी।

0

यह खाली नहीं है, लेकिन आपकी स्क्रिप्ट में त्रुटि है। यह संभवतः खाली है क्योंकि आप त्रुटि रिपोर्टिंग बंद कर देते हैं।

इस लाइन से:

preg_match('/3 Day Weather Forest Summary:<\/b><span class="phrase">(.*?)</span>',$contents, $matches); 

आप </span> (यह <\/span> होना चाहिए) पर / से बचने के लिए भूल गया; और preg_match के लिए कोई अंतिम delimiter / नहीं है। (वहां एक टाइपो है, यह वन का पूर्वानुमान नहीं होना चाहिए।)

लेकिन यहां तक ​​कि आप उन त्रुटियों को भी ठीक करते हैं, आप जो खोज रहे हैं उसे प्राप्त नहीं करेंगे क्योंकि मौसम-पूर्वानुमान से एचटीएमएल स्रोत कोड को देखते हुए, <\/b> के बाद आप <span class="read-more-small"><span class="read-more-content"> छोड़ दें।

इसलिए, यह इस तरह से होना चाहिए:

<?php 
$city=$_GET['city']; 
$city=str_replace(" ","",$city); 
$contents=file_get_contents("http://www.weather-forecast.com/locations/".$city."/forecasts/latest"); 
preg_match('/3 Day Weather Forecast Summary:<\/b><span class="read-more-small"><span class="read-more-content"> <span class="phrase">(.*?)<\/span>/',$contents, $matches); 
echo $matches[1]; 
?> 


या

आप preg_match_all का उपयोग तीनों मौसम का पूर्वानुमान सारांश (1 पाने के लिए कर सकते हैं - 3 दिन, 4 - 7 दिन, और 7 - 10 दिन), preg_match लाइन को

preg_match_all('/<span class="phrase">(.*?)<\/span>/',$contents, $matches); 

1-3 दिन के लिए $matches[0][0],
4-7 दिन के लिए $matches[0][1],
7-10 दिन के लिए $matches[0][2]:और अपने डेटा गूंज।

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