2014-02-22 68 views
0

我想學習在python中使用美麗的湯刮網的基礎知識。我在文檔中遇到過代碼。當我執行它時出現錯誤。該代碼是:蟒蛇網站刮碼錯誤

import urllib2 
from BeautifulSoup import BeautifulSoup 

soup = BeautifulSoup(urllib2.urlopen('http://www.bcsfootball.org’).read()) 

for row in soup('table', {'class': 'mod-data’})[0].tbody('tr'): 
    tds = row('td') 
    print tds[0].string, tds[1].string 

和錯誤是:

SyntaxError: Non-ASCII character '\xe2' in file ex.py on line 4, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details 

請幫我解決這個問題,並解釋

for row in soup('table', {'class': 'mod-data’})[0].tbody('tr'):

大部分的網站都給予樣本行代碼,而不是解釋它是如何發生的以及它的意義。這是一個有點混亂,像classtbody等方面這將是非常有益的,如果你可以提出任何網站或電子書或任何

+1

你看了[PEP指出(http://legacy.python.org/dev/peps/pep-0263/)在錯誤信息中? – hd1

回答

1

嘗試從改變你的第四行:

soup = BeautifulSoup(urllib2.urlopen('http://www.bcsfootball.org’).read()) 

要:

soup = BeautifulSoup(urllib2.urlopen("http://www.bcsfootball.org").read()) 

看起來你的第二個單引號與第一個單引號不同,所以改爲雙引號應該可以減輕這個錯誤。

您詢問的代碼是從表中讀取。在HTML中,表格的每一行都用標籤表示,程序正在搜索並從中讀取。然後,您將打印您找到的表格的第一列和第二列。

3

你在這一行一個錯字:

soup = BeautifulSoup(urllib2.urlopen('http://www.bcsfootball.org’).read()) 

,而不是一個單引號後.ORG你有一個撇號

它應該是這樣的:

soup = BeautifulSoup(urllib2.urlopen("http://www.bcsfootball.org").read()) 

還:

您在以下行中有相同的問題。之後MOD數據撇號更改爲報價

而不是僅僅soup('table', {'class': 'mod-data'})[0].tbody('tr')# syntax error

嘗試soup.find_all('table', {'class': 'mod-data'})[0].tbody('tr')

OR.findAll舊版本的BeautifulSoup的..

您應該使用這裏的湯的方法之一,如.find_all()它返回一個列表

閱讀BeautifulSoup docs並獲得最新的版本(4)BeautifulSoup

的下面的代碼對我的作品:

import urllib2 
from bs4 import BeautifulSoup # latest version bs4 

soup = BeautifulSoup(urllib2.urlopen("http://www.bcsfootball.org").read()) 

for row in soup.find_all("table", {"class": "mod-data"})[0].tbody("tr"): 
    tds = row("td") 
    print tds[0].string, tds[1].string 

輸出:

1 Florida State 
2 Auburn 
3 Alabama 
4 Michigan State 
5 Stanford 
6 Baylor 
7 Ohio State 
8 Missouri 
9 South Carolina 
10 Oregon 
11 Oklahoma 
12 Clemson 
13 Oklahoma State 
14 Arizona State 
15 UCF 
16 LSU 
17 UCLA 
18 Louisville 
19 Wisconsin 
20 Fresno State 
21 Texas A&M; 
22 Georgia 
23 Northern Illinois 
24 Duke 
25 USC 

如果在這些行上使用單引號時遇到問題,請使用雙引號。

+0

錯誤仍然存​​在 – FathimaBeevi

+0

已更新的帖子... – Totem

+0

這現在適用於我..請讓我知道它是否適合你 – Totem

0

試着改變你的第二行:

從BS4進口BeautifulSoup

+2

這並不能解決海報的問題。 – icedtrees