2

我正在尝试使用 urllib2 读取以下 url:http: //frcwest.com/,然后搜索元重定向的数据。

它读取以下数据:

   <!--?xml version="1.0" encoding="UTF-8"?--><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   <html xmlns="http://www.w3.org/1999/xhtml"><head><title></title><meta content="0;url= Home.html" http-equiv="refresh"/></head><body></body></html>

将其读入 Beautifulsoup 效果很好。但是由于某种原因,没有一个功能适用于这个特定的 senarious,我不明白为什么。Beautifulsoup 在所有其他情况下都对我很有效。但是,当简单地尝试时:

    soup.findAll('meta')

不产生任何结果。

我的最终目标是运行:

    soup.find("meta",attrs={"http-equiv":"refresh"})

但如果:

    soup.findAll('meta')

甚至不工作然后我被卡住了。任何煽动这个谜团的人将不胜感激,谢谢!

4

1 回答 1

2

是注释和文档类型将解析器抛到这里,然后是 BeautifulSoup。

甚至 HTML 标签也似乎“消失”了:

>>> soup.find('html') is None
True

然而它仍然存在于.contents可迭代对象中。您可以通过以下方式再次找到内容:

for elem in soup:
    if getattr(elem, 'name', None) == u'html':
        soup = elem
        break

soup.find_all('meta')

演示:

>>> for elem in soup:
...     if getattr(elem, 'name', None) == u'html':
...         soup = elem
...         break
... 
>>> soup.find_all('meta')
[<meta content="0;url= Home.html" http-equiv="refresh"/>]
于 2013-04-21T18:25:08.913 回答