当前位置: 首页 > 面试题库 >

Python HTTP错误505:不支持HTTP版本

何昆
2023-03-14
问题内容

我有以下代码:

import re
from re import sub

import cookielib
from cookielib import CookieJar
import urllib2
from urllib2 import urlopen

cj = CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
opener.addheaders=[('user-agent' , 'Safari/7.0.2')]

def check(word):
    try:
        query = "select * from geo.places where text ='"+word+"'"
        sourceCode=opener.open('http://query.yahooapis.com/v1/public/yql?q='+query+'&diagnostics=true').read()
        print sourceCode
    except Exception, e:
        print str(e)
        print 'ERROR IN MAIN TRY'

myStr = ['I','went','to','Boston']
for item in myStr:
        check(item)

我正在尝试查询select * from geo.places where text = 'Boston'(例如)。

我不断收到此错误:

    HTTP Error 505: HTTP Version Not Supported
    ERROR IN MAIN TRY

什么会导致此错误,我该如何解决?


问题答案:

不知道出了什么问题,但是当我尝试使用requests库执行相同的操作时,它会起作用:

>>> import requests
>>> word = "Boston"
>>> query = "select * from geo.places where text ='"+word+"'"
>>> query
"select * from geo.places where text ='Boston'"
>>> baseurl = 'http://query.yahooapis.com/v1/public/yql?q='
>>> url = baseurl + query
>>> url
"http://query.yahooapis.com/v1/public/yql?q=select * from geo.places where text ='Boston'"
>>> req = requests.get(url)
>>> req
<Response [200]>
>>> req.text
u'<?xml version="1.0" encoding="UTF-8"?>\n<query xmlns:yahoo="http://www.yahooapis.com/v1/base.rng" yahoo:count="10" yahoo:created="2014-05-17T21:12:52Z" yahoo:lang="en-US"><results><place xmlns="http://where.yahooapis.com/v1/schema.rng" xml:lang="en-US" yahoo:uri="http://where.yahooapis.com/v1/place/2367105"><woeid>2367105</woeid><placeTypeName code="7">Town</placeTypeName><name>Boston</name><country code="US" type="Country" woeid="23424977">United States</country><admin1 code="US-MA" type="State" woeid="2347580">Massachusetts</admin1><admin2 code="" type="County" woei....

请注意,两者之间存在差异,我的代码简单得多,它不适用于Cookie,并且不会伪装Safari浏览器。

如果您需要将Cookie与一起使用requests,则可以在其中找到很好的支持。



 类似资料:
  • 问题内容: 在IntelliJ中,当我尝试从构建菜单进行构建时,我收到此奇怪的错误消息:错误:java:不支持版本10 我不明白,因为在“项目结构”中设置了以下设置:项目SDK:9.0项目语言级别:SDK默认模块语言级别:项目默认(两个模块) 在我的pom.xml文件中,两个模块中都设置了这些属性: 我不知道为什么要尝试将JDK 10用于任何东西,但我仍然收到该消息。我很高兴使用JDK10,但是我

  • 当我试图用proguard混淆某个应用程序时,我总是会遇到这种错误 我已经更新了Proguard并检查了项目配置文件,但总是出现相同的错误。我正在使用Intellij IDEA的最新版本

  • 我试图在所有节点都安装了Java1.7的集群上使用spark-submit运行java spark作业。 作业失败,返回java.lang.UnsupportedClassVersionError:com/WindLogics/DMF/Wether/MyClass:Unsupported Major.Minor版本51.0。 此外,当主机设置为Local时,作业也可以正常工作。如何进行调试和修复此

  • 我开始遇到这种错误的几天,在这里输入图像描述 我找到了那个链接 我的ndk:android-ndk-r13b 我的SDK有Android5.1.1(API 22)+Android4.4W.2(API 20)+Android4.4.2(API 19)+所有额外功能

  • 我在做 但是我已经看到了java的版本是否相等,这是正确的。 如: 哪个javac->/usr/lib/jvm/java-1.7.0-openjdk-amd64/bin/javac 哪个java->/usr/lib/jvm/java-1.7.0-openjdk-amd64/bin/java java->-version java版本“1.7.0_79”OpenJDK运行时环境(IcedTea 2.

  • 我正在尝试运行一个颤振应用程序,在尝试时出现了这个错误,我所做的是我想在没有android studio的情况下运行颤振应用程序,所以我下载了android SDK和JDK 17,在我运行颤振医生后,它告诉我一切都很好,我尝试运行,它给了我这个错误: 所以我尝试了一个旧版本的JDK,它给了我另一个错误,所以我看到了使用JDK 17运行的第三个解决方案,那就是降级gradle中的gradle。属性,