在具有多个 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
感谢您的帮助。
我正在尝试使用 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