2015-12-24 17 views
5

Ben php için yeni ve herhangi bir şehir için "http://www.weather-forecast.com" hava durumu bilgilerini alabilirsiniz bir scraper.php sayfası yaptık.
Ben eğitmen takip ediyordu ve onun sadece kısa bir 3 günlükkazıyıcı php boş bir sayfa döndürüyor

neyse

forcast dönmek gerekiyordu benim kod boş sayfası döndürüyor neden göremiyorum ... Burada

<?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

Hata ayıklamayı denediniz mi? $ şehir nedir? $ içeriği ne alırsın? – pvg

+0

blank, sözdizimi hataları anlamına gelebilir http://php.net/manual/en/function.error-reporting.php –

cevap

-1

deneyin benim kodudur

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

aradığınız elde etmek için: Bu soruyu şu.

Açıklama:

file_get_contents() size statik sayfa içeriğini verecektir.

Tarayıcınızda gerçekten gördüğünüz içerikler HTML/CSS/JS, tarafından üretilmiştir ve file_get_contents() işlevinde görülmeyecektir. , Kaynak olarak

ve açılan sayfayı aramak: "3 Günlük Hava Orman Özeti:":

O url ( new york örneğin)

, benim doğrudan tarayıcıdan taramak çalışınca.

Hiç sonuç almadım, bu yüzden senin problemin olduğunu farz ediyorum.

0

Bu boş değil, ancak komut dosyasında hata var. Muhtemelen boştur, çünkü hata raporlamasını kapatmış olursunuz. Bu hattan

:

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

Sen </span> (o <\/span> olmalıdır) üzerine / kaçmaya unuttum; ve preg_match için / sonu sınırlayıcısı yok. (Orada bir yazım hatası var, 'Orman' değil 'Tahmin' olmalıdır.)

Ancak bu hatayı düzeltirseniz bile, hava durumu tahmininden html kaynak koduna bakarak aradığınız şeyi alamazsınız. <\/b>'dan sonra <span class="read-more-small"><span class="read-more-content">'u atlarsınız.

Yani, böyle olmalı:

<?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]; 
?> 


Ya

Sen her üç durumu Özeti (1 almak için preg_match_all kullanabilirsiniz-3 Gün, 4-7 gün, ve 7 - 10 Gün)

ile tüm preg_match satırını değiştirerek 1-3 gün için

$matches[0][0], 4-7 gün için
$matches[0][1], 7-10 gün için
$matches[0][2]:ve verilerinizi yankı.

İlgili konular