Это - хорошая практика для определения столбцов, которые Вы запрашиваете, запрашиваете ли Вы все столбцы.
, Таким образом, я предложил бы, Вы написали имя каждого столбца в операторе (исключая тот, который Вы не хотите).
SELECT
col1
, col2
, col3
, col..
, col53
FROM table
Content-Type text / html
Действительно, вот так, без двоеточия?
Если да, то это может объяснить: это недопустимый заголовок, поэтому он игнорируется, поэтому urllib вместо этого угадывает тип содержимого, глядя на имя файла. Если в конце URL-адреса окажется '.flv', он предположит, что тип должен быть video / x-flv
.
Это странное несоответствие может быть объяснено разными заголовками (возможно, типа accept), отправляемых двумя запросами - можете ли вы Проверь это...? Или, если Javascript работает в Firefox (который, я полагаю, вы используете, когда запускаете firebug?) - поскольку он определенно НЕ работает в случае Python - «все ставки отключены», как говорится ;-) .
Помните, что веб-сервер может возвращать разные результаты для одного и того же URL-адреса в зависимости от различий в запросе. Например, согласование типа содержимого: отправитель запроса может указать список типов содержимого, которые он будет принимать, и сервер может возвращать разные результаты, чтобы попытаться удовлетворить различные потребности.
Кроме того, вы можете получить страницу с ошибкой для одного ваших запросов, например, из-за того, что он имеет неправильный формат, или у вас нет файлов cookie, которые правильно аутентифицируют вас и т. д. Посмотрите на сам ответ, чтобы узнать, что вы получаете.
Попробуйте запросить, как это делает Firefox. Вы можете увидеть заголовки запроса в Firebug, поэтому добавьте их в свой объект запроса:
import urllib2
request = urllib2.Request('http://your.tld/...')
request.add_header('User-Agent', 'some fake agent string')
request.add_header('Referer', 'fake referrer')
...
response = urllib2.urlopen(request)
# check content type:
print response.info().getheader('Content-Type')
Также есть HTTPCookieProcessor, который может улучшить его, но я не думаю, что он вам понадобится в большинстве случаев. Взгляните на документацию Python: