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 に読み込むと問題なく動作します。ただし、何らかの理由で、この特定のシナリオでは機能が機能せず、その理由がわかりません。Beautifulsoup は、他のすべてのシナリオでうまく機能しました。ただし、単に試してみると:

    soup.findAll('meta')

結果を生成しません。

私の最終的な目標は実行することです:

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

ただし、次の場合:

    soup.findAll('meta')

動作していない場合、私は立ち往生しています。このミステリーへの扇動は大歓迎です、ありがとう!

4

1 に答える 1

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"/>]
于 2013-04-21T18:25:08.913 に答える