我试图解析从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