2011-12-15 5 views
6

私はPythonのMechanizeモジュールを使っています。 Python Mechanizeはこれらのサイトを開けません

  • https://www.google.com/search?num=100&hl=en&site=&q=dog&oq=dog&aq=f&aqi=g10&aql=1&gs_sm=e&gs_upl=618l914l0l1027l3l2l0l0l0l0l173l173l0.1l1l0
  • en.wikipedia.org/wiki/Dog(新しいユーザーは、2つのリンクのTTよりも多くを投稿することはできません)

    1. :私は直接Mechanizeので開くことができない3異なるサイト間で来ています
    2. http://www.cpsc.gov/cpscpub/prerel/prhtml03/03059.html

      import mechanize 
      br = mechanize.Browser() 
      br.set_handle_robots(False) 
      

    次のコードを追加するWikipediaの記事とGoogle検索結果を開いて解析する機械化できS:

    br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')] 
    

    しかし、私の回避策はCPSC.govのウェブサイトのための一致ではない - 私はMechanizeのブラウザでそれを開こうとすると、私のpythonのフリーズ - 私もキーボードそれを中断することはできませんポイントに。

    ここでは何が起こっていますか?

    答えて

    14

    cpsc.govサイトの場合、refreshヘッダーがmechanize HTTPRefreshProcessorで正しく処理されていないように見えます。ただし、次のように問題を回避することができます。

    import mechanize 
    
    url = 'http://www.cpsc.gov/cpscpub/prerel/prhtml03/03059.html' 
    br = mechanize.Browser() 
    br.set_handle_refresh(False) 
    br.open(url) 
    
    +0

    あなたは上司です! 私の質問に対する答えをどのように知っていたでしょうか? –

    +2

    「urllib2.urlopen」と「mechanize.urlopen」でURLを開くことができたことに気付きました。その後、各オープナーのハンドラー( 'urllib2._opener'、' mechanize._opener'と 'mechanize.Browser()')を比較し、[HttpFox](https://addons.mozilla.org)のトレースを調べました/ en-US/firefox/addon/httpfox /)。数回試してみたところ、リフレッシュプロセッサを取り外すことが適切な解決策であることがわかった。 – jcollado

    +0

    敬意。もう一度ありがとう:) –

    関連する問題