我試圖解析從HTML代碼的結果從搜索查詢返回的數字,但是當我用查找/指數()似乎返回錯誤的位置。我搜索的字符串有重音,所以我嘗試以Unicode形式搜索它。的Python:在HTML索引搜索Unicode字符串/ find返回錯誤的位置
的HTML代碼的片段被解析:
<div id="WPaging_total">
Aproximádamente 37 resultados.
</div>
,我尋找這樣的:
str_start = html.index(u'Aproxim\xe1damente ')
str_end = html.find(' resultados', str_start + 16)#len('Aproxim\xe1damente ')==16
print html[str_start+16:str_end] #works by changing 16 to 24
打印語句返回:
damente 37
當預期結果是:
37
看來str_start沒有啓動在我尋找,而不是8位後面的字符串的開頭。
print html[str_start:str_start+5]
輸出:
l">
的問題是難以複製的,雖然,因爲使用的代碼片段時,只有整個HTML字符串中搜索時它不會發生。我可以簡單地將str_start + 16更改爲str_start + 24,以便按預期工作,但這並不能幫助我理解問題。這是一個Unicode問題嗎?希望有人能夠對這個問題提出一些看法。
謝謝。
LINK: http://guiasamarillas.com.mx/buscador/?actividad=Chedraui&localidad=&id_page=1
樣品編號:
from urllib2 import Request, urlopen
url = 'http://guiasamarillas.com.mx/buscador/?actividad=Chedraui&localidad=&id_page=1'
post = None
headers = {'User-Agent':'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2)'}
req = Request(url, post, headers)
conn = urlopen(req)
html = conn.read()
str_start = html.index(u'Aproxim\xe1damente ')
str_end = html.find(' resultados', str_start + 16)
print html[str_start+16:str_end]
'html'是什麼?一個unicode字符串?一個utf-8編碼的字符串? –
html是str類型,由urllib2使用Request/open返回。我試過unicode(html,'utf-8'),但我得到了完全相同的結果。 – LightOS
你需要提供更多關於''''和'html'的細節。也許提供鏈接等,所以我們可以自己拉。 – jdotjdot