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

Look for text with BeautifulSoup in a web page with multiple html tags?

感谢您的帮助。

我正在尝试使用 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"})

我得到了一个 None 的答案,我可以看到 html 源代码中的信息。

请帮帮我...

谢谢!

使用以下代码:

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>

请注意,使用 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