python:urllib2.HTTPError:HTTP错误405:方法不允许

时间:2016-04-29 17:31:16

标签: python python-2.7

我真的是一个试图学习Python的ETL人,请帮忙

import urllib2
urls =urllib2.urlopen("url1","url2")
i=0
while i< len(urls):
  htmlfile = urllib2.urlopen(urls[i])
  htmltext = htmlfile.read()
  print htmltext
  i+=1

我收到错误

  

追踪(最近一次通话):   文件&#34;。\ test.py&#34;,第2行,in   urls = urllib2.urlopen(&#34; url1&#34;,&#34; url2&#34;)   文件&#34; c:\ python27 \ Lib \ urllib2.py&#34;,第154行,在urlopen中   return opener.open(url,data,timeout)   文件&#34; c:\ python27 \ Lib \ urllib2.py&#34;,第437行,处于打开状态   response = meth(req,response)   文件&#34; c:\ python27 \ Lib \ urllib2.py&#34;,第550行,在http_response中   &#39; http&#39;,请求,响应,代码,消息,hdrs)   文件&#34; c:\ python27 \ Lib \ urllib2.py&#34;,第475行,出错   return self._call_chain(* args)   文件&#34; c:\ python27 \ Lib \ urllib2.py&#34;,第409行,在_call_chain中   result = func(* args)   文件&#34; c:\ python27 \ Lib \ urllib2.py&#34;,第558行,http_error_default   提出HTTPError(req.get_full_url(),code,msg,hdrs,fp)   urllib2.HTTPError:HTTP错误405:不允许的方法

1 个答案:

答案 0 :(得分:1)

您的错误来自第2行:

package me.Pixel; import org.bukkit.entity.Arrow; import org.bukkit.scheduler.BukkitRunnable; public class LightningShot extends BukkitRunnable { private Arrow arrow; private int tick = 1; public LightningShot(Arrow arrow) { this.arrow = arrow; } @Override public void run() { if (arrow == null || arrow.isOnGround() || tick++ > 20 * 10) { this.cancel(); } else { arrow.getWorld().strikeLightning(arrow.getLocation()); } } }

您尝试访问的网址是否返回http错误代码

urls =urllib2.urlopen("url1","url2")

查看urllib2文档,您应该只使用1个url作为参数

  

https://docs.python.org/2/library/urllib2.html

     

打开URL网址,可以是字符串或请求对象。

     

数据可以是指定要发送到服务器的其他数据的字符串,如果不需要这样的数据,则为None。目前,HTTP请求是唯一使用数据的请求;提供数据参数时,HTTP请求将是POST而不是GET。

您输入的第二个参数可能是将请求转换为POST,这将解释方法不允许的代码。