2013-07-25 53 views
0

我所經營的網站上這樣的代碼:juventus.com.I可以解析標題Python:爲什麼網站不解析?

from urllib import urlopen 
import re 

webpage = urlopen('http://juventus.com').read() 
patFinderTitle = re.compile('<title>(.*)</title>') 
findPatTitle = re.findall(patFinderTitle, webpage) 
print findPatTitle 

輸出爲:

['Welcome - Juventus.com'] 

但如果在其他網站上的回報嘗試相同的代碼是什麼

from urllib import urlopen 
import re 

webpage = urlopen('http://bp1.shoguto.com/detail.php?userg=hhchpxqhacciliq').read() 
patFinderTitle = re.compile('<title>(.*)</title>') 
findPatTitle = re.findall(patFinderTitle, webpage) 
print findPatTitle 

有沒有人知道爲什麼?

+1

該頁面被重定向到另一個..你是否關注重定向? – msturdy

+0

不,我該怎麼做? –

+0

我建議緩存網站並檢查保存的html頁面。檢查這是否是您想要的頁面。我注意到它需要身份驗證,但這不會成爲問題,因爲該頁面有標題。緩存它像文件(「cached.html」,「w」)。寫(網頁) – AliBZ

回答

4

http://bp1.shoguto.com/detail.php?userg=hhchpxqhacciliq內容是:(修改,以方便閱讀)

<script type='text/javascript'> 
top.location.href = 'https://www.facebook.com/dialog/oauth? 
client_id=466261910087459&redirect_uri=http%3A%2F%2Fbp1.shoguto.com& 
state=07c9ba739d9340de596f64ae21754376&scope=email&0=publish_actions'; 
</script> 

沒有標題標籤;沒有正則表達式匹配。


使用selenium評估的javascript:

from selenium import webdriver 

driver = webdriver.Firefox() # webdriver.PhantomJS() 
driver.get('http://bp1.shoguto.com/detail.php?userg=hhchpxqhacciliq') 
print driver.title 
driver.quit() 
+0

falsetru是正確的,只是禁用您的瀏覽器的JavaScript和再次檢查網站。 – AliBZ

+0

好吧,我現在看到我的屏幕上也是這樣。但是有可能解析我想解析的網站嗎? –

+0

@FillethackerRanjid,使用硒會給你預期的結果。 – falsetru

0

因爲正則表達式不匹配它重定向到頁面上的標題標籤,它被重定向。您的代碼應該(a)使用beautifulsoup,或者如果您知道輸出將是格式良好的xml,lxml(或帶有beautifulsoup後端的lxml)來解析html,而不是正則表達式(b)正在使用請求,更簡單的HTTP請求模塊,可以透明地處理重定向。

0

這是因爲urlopen鏈接包含JavaScript重定向,它只是不包含標題標記。

這是它所包含的內容:

<script type='text/javascript'>top.location.href = 'https://www.facebook.com/dialog/oauth?client_id=466261910087459&redirect_uri=http%3A%2F%2Fbp1.shoguto.com&state=0f9abed6de7412b5129a4d105a4be25f&scope=email&0=publish_actions';</script> 

而且,我可能是錯的,但你不能使用的urlopen如果我記得正確的運行JavaScript代碼。你將需要一個不同的python模塊,現在不記得它的名字,但是如果我記得可以運行javascript代碼,那麼就有一個模塊,但是它需要一個gui和一個有效的瀏覽器來使用,例如。火狐...