尝试使用Python抓取数据时发生Http错误405

尝试使用Python抓取数据时发生Http错误405

问题描述:

我想从网站抓取数据;但是我不断收到HTTP:错误405:不允许。我究竟做错了什么?尝试使用Python抓取数据时发生Http错误405

(我已经看过的文件,并试图自己的代码,只有我的网址到位的例子年代,我仍然有同样的错误。)

下面的代码:

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。 谢谢!

不知道究竟原因的问题,但试试这个代码,它是为我工作。

import http.client 

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

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

你所得到的错误是“请原谅我们中断一下你的浏览器让我们觉得你一个机器人“。暗示刮刮是不允许的,他们的网页上有反刮机器人。

尝试使用假冒浏览器。链接到如何使用虚假浏览器发出请求。 (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页面。希望能帮助到你。