2017-01-15 2 views
1
import requests ,bs4 

headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:39.0) Gecko/20100101 Firefox/39.0'} 

#Load mainPage 
_requestResult = requests.get("http://www.geometriancona.it/categoria_albo/albo/",headers = headers, timeout = 20) 
_requestResult.raise_for_status() 
_htmlPage = bs4.BeautifulSoup(_requestResult.text, "lxml") 
print(_htmlPage) 

#search for stuff in html code 

Этот код должен загрузить html-страницу и просто распечатать ее на экране, но вместо этого я получаю исключение ошибки HTTP 500, с которым я не могу понять, как управлять. Любые идеи?Python - модуль запроса - HTTP 500 error

ответ

1

Вы можете использовать модуль urllib для загрузки отдельных URL-адресов, но это просто вернет данные. Он не будет анализировать HTML и автоматически загружать такие вещи, как файлы CSS и изображения. Если вы хотите загрузить «целую» страницу, вы будете писать текст, чтобы разобрать HTML-код и найти другие вещи, которые вам нужно скачать. Вы можете использовать что-то вроде Beautiful Soup для анализа HTML-кода, который вы извлекаете. This question имеет пример кода, который делает именно это.

+0

I не нужно CSS или файл изображения, просто необработанный HTML. Код должен работать, но с некоторыми веб-сайтами он возвращает 500 ошибок. – Steve

1

Попробуйте посетить: http://www.geometriancona.it/categoria_albo/albo/ с анонимного браузера, это дает HTTP 500 Error

because you need to log in, don't you?

Может быть, вы должны попробовать this sintaxt:

r = requests.get('https://api.github.com/user', auth=('user', 'pass')) 

ваш код работает, но вы должны

print(_htmlPage) 

попробуйте его с

_requestResult = requests.get("http://www.google.com",headers = headers, timeout = 20) 

UPDATE

Проблема заключалась в том, что печенье, после анализа пакетов я нашел четыре печенья, так что код, который работает для меня

import requests ,bs4 

headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:39.0) Gecko/20100101 Firefox/39.0'} 
jar = requests.cookies.RequestsCookieJar() 
jar.set('PHPSESSID', '1bj8opfs9nb41l9dgtdlt5cl63', domain='geometriancona.it') 
jar.set('wfvt', '587b6fcd2d87b', domain='geometriancona.it') 
jar.set('_iub_cs-7987130', '%7B%22consent%22%3Atrue%2C%22timestamp%22%3A%222017-01-15T12%3A17%3A09.702Z%22%2C%22version%22%3A%220.13.9%22%2C%22id%22%3A7987130%7D', domain='geometriancona.it') 
jar.set('wordfence_verifiedHuman', 'e8220859a74b2ee9689aada9fd7349bd', domain='geometriancona.it') 
#Load mainPage 
_requestResult = requests.get("http://www.geometriancona.it/categoria_albo/albo/",headers = headers,cookies=jar) 
_requestResult.raise_for_status() 
_htmlPage = bs4.BeautifulSoup(_requestResult.text, "lxml") 
print(_htmlPage) 

Это мой выход: http://prnt.sc/dvw2ec

+0

Это не дает мне никакой ошибки, когда я открываю URL-адрес с моим браузером. – Steve

+1

@Steve, если на www.google.com это работает, проблема заключается в том, что вы посещаете сайт, потому что вам нужно ** войти в систему ** –

+0

Теперь он выглядит так, но все же дает ошибку: _requestResult = запросы.get ("http : //www.geometriancona.it/categoria_albo/albo/ ", auth = ('user', 'pass'), headers = headers) – Steve