首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用python在html源代码中搜索字符串(3.3.1)

用python在html源代码中搜索字符串(3.3.1)
EN

Stack Overflow用户
提问于 2013-07-06 19:30:13
回答 3查看 18.1K关注 0票数 4

我正在做一个从网页上获取信息的项目。在html源代码中,我有以下内容:

Resultado de Busca: Foram En禁忌de 264 casais

我要知道"encontrados“和"casais”之间的号码

Python中也有这样的功能吗?我应该使用什么字符串函数?在这种情况下,我希望o避免使用正则表达式。

代码语言:javascript
代码运行次数:0
运行
复制
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())

到目前为止,我已经知道了,但现在我很难找到我需要的号码。

代码语言:javascript
代码运行次数:0
运行
复制
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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-06 19:38:39

如果美汤是您要解析的HTML,我建议您使用它这样的库。不需要regex

编辑

使用您刚才添加的URL,这是获取HTML对象的示例代码:

代码语言:javascript
代码运行次数:0
运行
复制
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之前是这样的:

代码语言:javascript
代码运行次数:0
运行
复制
element = soup.find('div', attrs={'id': 'ctl00_body_uppBusca'}).find('span')
票数 5
EN

Stack Overflow用户

发布于 2013-07-06 19:33:45

考虑到不能使用正则表达式解析html,如果将文件视为一袋文本,则必须使用regex或类似的方法:

代码语言:javascript
代码运行次数:0
运行
复制
a = 'Resultado de Busca: Foram encontrados 264 casais' #your page text
num = int(a[a.index("encontrados")+len("encontrados"):a.index("casais")])
票数 1
EN

Stack Overflow用户

发布于 2013-07-06 19:32:28

你肯定那个字符串的格式吗?如果您有这样的字符串(而且总是这样),您可以使用:

代码语言:javascript
代码运行次数:0
运行
复制
s = "Resultado de Busca: Foram encontrados 264 casais"
items = s.split()

您的号码将按项目5编制索引。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17506355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档