2015-11-07 139 views
0

我正在使用BeautifulSoup提取從Krasnodar krai elections到不同選舉子區域結果的鏈接。來自html的鏈接可以使用單詞'option'來檢測。 HTML片段:Python BeautifulSoup find_all'ascii'編解碼器無法解碼字節

<form name="go_reg">Нижестоящие избирательные комиссии: <select name="gs"><option val="">---</option> 
<option value="http://www.krasnodar.vybory.izbirkom.ru/region/krasnodar?action=show&amp;root=123400103&amp;tvd=2232000821616&amp;vrn=2232000821581&amp;prver=2&amp;pronetvd=1&amp;region=23&amp;sub_region=23&amp;type=381&amp;vibid=2232000821616">1 Абинская</option> 
<option value="http://www.krasnodar.vybory.izbirkom.ru/region/krasnodar?action=show&amp;root=123402603&amp;tvd=2232000821591&amp;vrn=2232000821581&amp;prver=2&amp;pronetvd=1&amp;region=23&amp;sub_region=23&amp;type=381&amp;vibid=2232000821591">2 Анапская</option> 

這裏是我的代碼:

import urllib2 
from bs4 import BeautifulSoup 
contenturl = "http://www.krasnodar.vybory.izbirkom.ru/region/region/krasnodar?action=show&root=1&tvd=2232000821586&vrn=2232000821581&region=23&global=&sub_region=23&prver=2&pronetvd=1&vibid=2232000821586&type=381" 
soup = BeautifulSoup(urllib2.urlopen(contenturl).read(), 'html.parser', from_encoding = 'windows-1252') 
soup.find_all('option') 

但是,我得到了以下錯誤:

UnicodeDecodeError:'ascii' codec can't decode byte 0xc3 in position 283: ordinal not in range(128) 

我試圖找到答案,並建議之一是設置使用「from_encoding」選項手動編碼,但這並未解決問題

回答

0

如果更改你美麗的湯打開,你可以避免錯誤。

from bs4 import BeautifulSoup 
from urllib.request import urlopen 

url = "http://www.krasnodar.vybory.izbirkom.ru/region/region/krasnodar?action=show&root=1&tvd=2232000821586&vrn=2232000821581&region=23&global=&sub_region=23&prver=2&pronetvd=1&vibid=2232000821586&type=381" #/air-jordan-1-retro-high-og-unc-white-dk-powder-blue-" 
page=urllib.request.urlopen(url) 
soup = BeautifulSoup(page.read()) 
for myValue in soup.find_all('option'): 
    try: 
     print(myValue.get_text() + " : " + myValue.get("value")) 
    except: 
     print("") 

它生成

1 Àáèíñêàÿ : http://www.krasnodar.vybory.izbirkom.ru/region/krasnodar?action=show&root=123400103&tvd=2232000821616&vrn=2232000821581&prver=2&pronetvd=1&region=23&sub_region=23&type=381&vibid=2232000821616 
2 Àíàïñêàÿ : http://www.krasnodar.vybory.izbirkom.ru/region/krasnodar?action=show&root=123402603&tvd=2232000821591&vrn=2232000821581&prver=2&pronetvd=1&region=23&sub_region=23&type=381&vibid=2232000821591 
3 Àïøåðîíñêàÿ : http://www.krasnodar.vybory.izbirkom.ru/region/krasnodar?action=show&root=123400203&tvd=2232000821617&vrn=2232000821581&prver=2&pronetvd=1&region=23&sub_region=23&type=381&vibid=2232000821617 
....etc 
相關問題