我正在尝试使用urllib2: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工作正常。但是由于某些原因,这些功能都没有适用于这个特定的狡猾,我不明白为什么。在所有其他场景中,Beautifulsoup对我很有用。但是,当简单地尝试:
soup.findAll('meta')
没有结果。
我的最终目标是运行:
soup.find("meta",attrs={"http-equiv":"refresh"})
但是如果:
soup.findAll('meta')
甚至没有工作然后我被卡住了。任何煽动这个谜的人都将不胜感激,谢谢!
答案 0 :(得分:2)
这是将解析器抛出此处的注释和doctype,以及随后的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"/>]