2012-07-25 34 views
2

工作,我有這個sript:BeautifulSoup不會爲一些網站

import urrlib2 
from bs4 import BeautifulSoup 
url = "http://www.shoptop.ru/" 
page = urllib2.urlopen(url).read() 
soup = BeautifulSoup(page) 
divs = soup.findAll('a') 
print divs 

對於this網站,它打印空單?有什麼問題?我在Ubuntu 12.04運行

+0

BeautifulSoup僅適用於靜態頁面。如果它的JavaScript/AJAX完整,你需要先運行這些腳本,獲取HTML代碼並閱讀' – Surya 2012-07-25 13:30:04

+0

我運行了代碼,它給我看了一大串'' – Surya 2012-07-25 13:33:38

+0

在我的情況下,問題不在於Javascript/Ajax,因爲它適用於其他機器,我的意思是在我的本地機器上(Ubuntu 12.04 32位),但它不起作用在我的服務器Ubuntu 12.04 64位 – torayeff 2012-07-25 13:34:32

回答

3

其實有BeautifulSoup中相當多的錯誤可能會引發一些未知的錯誤。 Apache的工作使用lxml解析器

所以,只要嘗試使用其他的情侶在documentation

soup = BeautifulSoup(page, "html.parser") 

提到解析器這應該工作的時候我也有類似的問題!

+0

感謝您的回答!你怎麼知道這件事的?爲什麼會發生?爲什麼它會在一些服務器上發生,而不是其他的? – frabcus 2013-07-11 21:18:58

+0

@frabcus我不記得 - 我在'mod_wsgi','apache','django'環境中遇到了這個錯誤..我想,這是由一些cpython實現引起的(因爲lxml,mod_wsgi主要在C中)..所以,我試着用html.parser,它工作!真的不知道確切的原因..(可能這個原因可能不對) – Surya 2013-07-12 16:45:46

-2

它看起來像你必須在你的代碼urrlib2犯了一些錯誤應該是urllib2的,我已經固定的代碼,你和這個作品使用BeautifulSoup 3

import urllib2 
from BeautifulSoup import BeautifulSoup 
url = "http://www.shoptop.ru/" 
page = urllib2.urlopen(url).read() 
soup = BeautifulSoup(page) 
divs = soup.findAll('a') 
print divs 
+0

'urrlib2'只是一個錯字。這個名字上沒有任何模塊。 – Surya 2012-07-25 13:34:43

+0

謝謝@Surya,我發現了這一點。 – Stefan 2012-07-25 13:46:10