Если Python получает статус 404, это может быть связано с тем, что сервер отказывается предоставить вам страницу.
Почему, что трудно понять, потому что серверы являются черными ящиками. Но ваш браузер дает серверу больше, чем просто URL, он также дает ему набор заголовков HTTP. Скорее всего, сервер изменяет поведение, основанное на содержимом одного или нескольких из этих заголовков.
Необходимо найти в своем браузере инструменты для разработки и просмотреть, что браузер отправил, а затем попытаться выполнить репликацию этих заголовков из Python. Очевидными кандидатами являются заголовок User-Agent
, а затем Accept
и Cookie
заголовки.
Однако в этом конкретном случае сервер отвечает 401 Несанкционированным; вам предоставляется страница входа в систему. Он делает это как для браузера и Python:
>>> import urllib
>>> urllib.urlopen('https://www.fundingcircle.com/my-account/sell-my-loans/')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/mj/Development/Library/buildout.python/parts/opt/lib/python2.7/urllib.py", line 87, in urlopen
return opener.open(url)
File "/Users/mj/Development/Library/buildout.python/parts/opt/lib/python2.7/urllib.py", line 208, in open
return getattr(self, name)(url)
File "/Users/mj/Development/Library/buildout.python/parts/opt/lib/python2.7/urllib.py", line 451, in open_https
return self.http_error(url, fp, errcode, errmsg, headers)
File "/Users/mj/Development/Library/buildout.python/parts/opt/lib/python2.7/urllib.py", line 372, in http_error
result = method(url, fp, errcode, errmsg, headers)
File "/Users/mj/Development/Library/buildout.python/parts/opt/lib/python2.7/urllib.py", line 683, in http_error_401
errcode, errmsg, headers)
File "/Users/mj/Development/Library/buildout.python/parts/opt/lib/python2.7/urllib.py", line 381, in http_error_default
raise IOError, ('http error', errcode, errmsg, headers)
IOError: ('http error', 401, 'Unauthorized', <httplib.HTTPMessage instance at 0x1066f9a28>)
но Питона urllib
не имеет обработчика для кода 401 статуса и превращает это в исключительных случаях.
Тело ответа содержит форму входа; вам придется писать код для входа в систему и, предположительно, отслеживать файлы cookie.
Эта задача будет намного проще с использованием более специализированных инструментов. Вы можете использовать robobrowser, чтобы загрузить страницу, проанализировать форму и предоставить вам инструменты для ее заполнения, а затем отправить форму для вас и отслеживать файлы cookie, необходимые для того, чтобы вы вошли в систему. Он построен поверх отличных requests и BeautifulSoup библиотеки.
У вас есть разрешение от financecircle.com на очистку их сайта? –
Вопрос агента пользователя? – Phix
Puciek, согласно их T & C's, они знают, что люди это делают, но пока у них нет политики. – Ginger