Неожиданное поведение с Urllib в Python - PullRequest
0 голосов
/ 27 ноября 2011

Моя система не защищена ни одним прокси.

params = urllib.urlencode({'search':"August Rush"})
f = urllib.urlopen("http://www.thepiratebay.org/search/query", params)

Это идет по бесконечному циклу (или просто зависает). Очевидно, я могу избавиться от этого и использовать FancyUrlOpener и создавать запрос самостоятельно, а не передавать его параметры. Но я думаю, что делать то, что я делаю сейчас, лучше и чище.

Edit: Это была скорее проблема с сетью, в которой моя рабочая станция Ubuntu была настроена на другой прокси. Пришлось внести определенные изменения, и это сработало. Спасибо!

Ответы [ 2 ]

1 голос
/ 27 ноября 2011

Это работает для меня:

import urllib

params = urllib.urlencode({'q': "August Rush", 'page': '0', 'orderby': '99'})
f = urllib.urlopen("http://www.thepiratebay.org/s/", params)

with open('text.html', 'w') as ff:
    ff.write('\n'.join(f.readlines()))

Я открыл http://www.thepiratebay.org с Google Chrome с включенным инспектором сети.Я поместил «August Rush» в поле поиска и нажал «Поиск».Затем я проанализировал отправленные заголовки и сделал код выше.

1 голос
/ 27 ноября 2011

Размещенный код отлично работает для меня, с Python 2.7.2 для Windows.

Вы пытались использовать инструмент http-отладки, такой как Fiddler2 , чтобы увидеть фактический разговор, происходящий междуваша программа и сайт?

Если вы запустите Fiddler2 через порт 8888 на локальном хосте, вы можете сделать это, чтобы увидеть запрос и ответ:

import urllib
proxies = {"http": "http://localhost:8888"}
params = urllib.urlencode({'search':"August Rush"})
f = urllib.urlopen("http://www.thepiratebay.org/search/query", params, proxies)
print len(f.read())
...