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

2024-09-27 07:32:16 发布

您现在位置:Python中文网/ 问答频道 /正文

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

Resultado de Busca:Foram encontrados264casais公司

我需要得到“encontrados”和“casais”之间的号码

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

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")])

这给了我下面的错误

类型错误:类型str不支持缓冲区API


Tags: brimportcomhttprequesturllib号码urlopen
3条回答

你肯定那个字符串的格式吗?如果您有这样一个字符串(并且将始终如此),您可以使用:

s = "Resultado de Busca: Foram encontrados 264 casais"
items = s.split()

你的号码将在5个项目中被编入索引。

如果不能用正则表达式解析html,那么如果将文件视为一包文本,则必须使用正则表达式或类似的语句:

a = 'Resultado de Busca: Foram encontrados 264 casais' #your page text
num = int(a[a.index("encontrados")+len("encontrados"):a.index("casais")])

如果您要解析的是HTML,我建议使用诸如Beautiful Soup之类的库。不需要正则表达式。

编辑

使用刚才添加的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

这将在包含类txt_resultad_busca_casamento的页面上找到HTML span元素,我相信这是您试图提取的数据。在那里,您可以解析.text属性以获得您感兴趣的确切数据。

编辑2

哦,刚刚意识到使用正则表达式。。。貌似美女组的班级搭配并不完美!这一行应该可以工作,至少在站点更改其HTML之前:

element = soup.find('div', attrs={'id': 'ctl00_body_uppBusca'}).find('span')

相关问题 更多 >

    热门问题