Python Mechanize не будет открывать эти сайты - PullRequest
6 голосов
/ 16 декабря 2011

Я работаю с модулем Python для механизации.Я встречал 3 разных сайта, которые не могут быть открыты с помощью механизации напрямую:

  1. ru.wikipedia.org / wiki / Dog (новый пользователь, не может публиковать более 2 ссылок TT)
  2. 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
  3. http://www.cpsc.gov/cpscpub/prerel/prhtml03/03059.html

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

Добавление следующего кода позволяет механизму открывать и анализировать статью в Википедии и Googleрезультаты поиска:

    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, мой питон зависает - до такой степени, что я даже не могуКлавиатура Прервите его.

Что здесь происходит?

1 Ответ

14 голосов
/ 16 декабря 2011

В случае с сайтом cpsc.gov, похоже, что есть заголовок refresh , который неправильно обрабатывается механизмом HTTPRefreshProcessor.Однако вы можете обойти эту проблему следующим образом:

import mechanize

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