2016-12-14 6 views
0

Я хочу скопировать данные с веб-сайта; однако я продолжаю получать HTTP: Ошибка 405: Не разрешено. Что я делаю не так?Ошибка Http 405 при попытке скопировать данные с помощью Python 3.3

(Я посмотрел на документацию, и пытались их код, только мой URL вместо пример-х, у меня еще есть та же ошибка.)

Вот код:

import requests, urllib 
from urllib.request import Request, urlopen 

list_url= ["http://www.glassdoor.com/Reviews/WhiteWave-Reviews-E9768.htm"] 

for url in list_url: 
    req = urllib.request.Request(url, headers={'User-Agent': 'Mozilla/5.0'}) 
    response=urllib.request.urlopen(req).read() 

Если я пропущу термин пользовательского агента, я получаю HTTP-ошибку 403: Запрещено.

В прошлом я успешно Царапины данных (с другого сайта) с помощью следующей:

for url in list_url: 
    raw_html = urllib.request.urlopen(url).read() 
    soup=None 
    soup = BeautifulSoup(raw_html,"lxml") 

В идеале, я хотел бы сохранить подобную структуру, то есть передать содержание извлеченной URL к BeautifulSoup. Спасибо!

ответ

0

Не уверен, что именно причина этой проблемы, но попробуйте этот код он работает для меня:.

import http.client 

connection = http.client.HTTPSConnection("www.glassdoor.com") 
connection.request("GET", "/Reviews/WhiteWave-Reviews-E9768.htm") 

res = connection.getresponse() 
data = res.read() 
1

Ошибка вы получаете это «Pardon наш Приостановка что-то о вашем браузере заставил нас думать, что вы бот ". Подразумевается, что выскабливание не разрешено, и на своих веб-страницах у них есть анти-очищающие боты.

Попробуйте использовать поддельный браузер. Ссылка на то, как делать запросы с помощью фальшивого браузера. (How to use Python requests to fake a browser visit?)

headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'} 
url = 'http://www.glassdoor.com/Reviews/WhiteWave-Reviews-E9768.htm' 
web_page = requests.get(url,headers=headers) 

Я попытался это и то, что я нашел их страница становится загружается с помощью JS. Поэтому я думаю, что вы можете использовать безгласный браузер (Selenium/PhantomJS) и очистить отображаемые html-страницы. Надеюсь, поможет.