在具有多个html标签的网页中查找带有BeautifulSoup的文本?

时间:2015-10-16 16:22:37

标签: python html beautifulsoup

感谢您的帮助。

我正在尝试使用BeautifulSoup和Python从网页中提取文本。 我已经用不同的网页做了很多次,总是得到我需要的信息,但这次来自网页的html源代码有很多脚本和其他东西。这是我想从中提取信息的页面之一:

http://www.cofemersimir.gob.mx/mirs/38656

这个网页的问题在于它有很多iframe标签,每个标签都有一个开始标签(html)和一个结束标签(/ html),我可以从主页面提取信息但不提取信息隐藏在第二个选项卡上和隐藏的显示文本区域下。

例如,当我寻找:

soup.find('div',{'name':"Pregunta_452Respuesta_826"})

我可以获得所需的信息,但如果我找到:

soup.find('div',{'name':"Pregunta_459Respuesta_841"})

我得到一个无答案甚至很难我可以在html源代码中看到这些信息。

请帮帮我......

谢谢!

2 个答案:

答案 0 :(得分:1)

使用以下代码:

import urllib2
from bs4 import BeautifulSoup

data = urllib2.urlopen('http://www.cofemersimir.gob.mx/mirs/38656')

data = data.read()

soup = BeautifulSoup(data, 'html.parser')

print soup.find('div',{'name':"Pregunta_459Respuesta_841"})

我回来了:

<div class="RespMir" name="Pregunta_459Respuesta_841"> <p style="text-align: justify">
                    La regulación de mérito tiene como propósito dar a conocer el cambio de domicilio y horarios de atención de la Delegación de la Secretaría de Relaciones Exteriores en Ciudad Juárez, Chihuahua.
                  </p> </div>

答案 1 :(得分:0)

注意,使用BeautifulSoup,您还可以指定一个正则表达式来匹配您的name,然后会自动为您提供所有类似的条目:

import urllib2
from bs4 import BeautifulSoup

url = 'http://www.cofemersimir.gob.mx/mirs/38656'
data = urllib2.urlopen(url)
html = data.read()
soup = BeautifulSoup(html, 'html.parser')
entries = soup.find_all('div',{'name': re.compile("Pregunta_.*?Respuesta_.*?")})

for entry in entries:
    print '{:25}  {}'.format(entry['name'], entry.text.strip().encode('utf-8')[:20])

这将为您提供以下内容,显示每个字符的前20个字符:

Pregunta_452Respuesta_826  No
Pregunta_773Respuesta_1399  
Pregunta_453Respuesta_828  No
Pregunta_459Respuesta_841  La regulaci+-ªn de m
Pregunta_462Respuesta_846  La regulaci+-ªn de m
Pregunta_464Respuesta_848  No
Pregunta_465Respuesta_850  No
Pregunta_466Respuesta_852  No
Pregunta_467Respuesta_854  No