我正在做一个从网页上获取信息的项目。在html源代码中,我有以下内容:
Resultado de Busca: Foram En禁忌de 264 casais
我要知道"encontrados“和"casais”之间的号码
Python中也有这样的功能吗?我应该使用什么字符串函数?在这种情况下,我希望o避免使用正则表达式。
import urllib.request
f = urllib.request.urlopen("http://listadecasamento.fastshop.com.br/ListaCasamento/ListaCasamentoBusca.aspx?Data=2013-06-07")
s = f.read()
print(s.split())
到目前为止,我已经知道了,但现在我很难找到我需要的号码。
import urllib.request
f = urllib.request.urlopen("http://listadecasamento.fastshop.com.br/ListaCasamento/ListaCasamentoBusca.aspx?Data=2013-06-07")
s = f.read()
num = int(s[s.index("encontrados")+len("encontrados"):s.index("casais")])
这给了我错误的答案
TypeError: str类型不支持缓冲区API
发布于 2013-07-06 11:38:39
如果美汤是您要解析的HTML,我建议您使用它这样的库。不需要regex
编辑
使用您刚才添加的URL,这是获取HTML对象的示例代码:
import BeautifulSoup
import re
import urllib
data = urllib.urlopen('http://listadecasamento.fastshop.com.br/ListaCasamento/ListaCasamentoBusca.aspx?Data=2013-06-07').read()
soup = BeautifulSoup.BeautifulSoup(data)
element = soup.find('span', attrs={'class': re.compile(r".*\btxt_resultad_busca_casamento\b.*")})
print element.text
这将在具有类span
的页面上找到HTML元素,我相信这是您试图提取的数据。在这里,您可以解析.text
属性以获得您感兴趣的确切数据。
编辑2
噢,刚刚意识到使用正则表达式..。BeautifulSoup中的类匹配似乎并不完美!这一行应该可以工作,至少在站点更改HTML之前是这样的:
element = soup.find('div', attrs={'id': 'ctl00_body_uppBusca'}).find('span')
发布于 2013-07-06 11:33:45
考虑到不能使用正则表达式解析html,如果将文件视为一袋文本,则必须使用regex或类似的方法:
a = 'Resultado de Busca: Foram encontrados 264 casais' #your page text
num = int(a[a.index("encontrados")+len("encontrados"):a.index("casais")])
发布于 2013-07-06 11:32:28
你肯定那个字符串的格式吗?如果您有这样的字符串(而且总是这样),您可以使用:
s = "Resultado de Busca: Foram encontrados 264 casais"
items = s.split()
您的号码将按项目5编制索引。
https://stackoverflow.com/questions/17506355
复制