我正试图从以下网站获取数据: http://www.boursorama.com/includes/cours/last_transactions.phtml?symbole=1xEURUS
似乎urlopen没有得到html代码,我不明白为什么。 就像是:
html = urllib.request.urlopen("http://www.boursorama.com/includes/cours/last_transactions.phtml?symbole=1xEURUS")
print (html)
我的代码是对的,我得到了其他网页的html源代码,但它似乎无法识别这个地址。
上面印着:b''
也许另一个图书馆更合适?为什么urlopen不返回网页的html代码? 救命谢谢!
我已经用httplib2和curl测试了您的URL。两者都很好:
所以对我来说,要么urllib.request中有一个bug,要么发生了非常奇怪的客户机-服务器交互。
我怀疑发生的是服务器在发送压缩数据时没有告诉您它正在这样做。Python的标准HTTP库不能处理压缩格式。
我建议使用httplib2,它可以处理压缩格式(通常比urllib好得多)。
print(response)
显示服务器的响应:{'status':'200','content length':'7787','x-sid':'26,E','content language':'fr','set cookie':'PHPSESSIONID=ed45f761542752317963ab4762ec604f;path=/;domain=.www.boursorama.com','expires':'Thu,1981年11月19日08:52:00 GMT','vary':'Accept Encoding,User Agent','server':'nginx','connection':'keep alive','-content encoding':'gzip','pragma':'no cache','cache control':'no store,no cache,must revalidate,post check=0,pre check=0','date':'Tue,2011年8月23日10:26:46 GMT','content type':'text/html;charset=ISO-8859-1','content location':'http://www.boursorama.com/includes/cours/last懔transactions.phtml?符号=1xEURUS'}
虽然这不能确认它是压缩的(毕竟,我们现在告诉服务器我们可以处理压缩),但它确实给理论增加了一些分量。
你猜,真正的内容存在于
content
。简单地看一下,就可以看出它在工作(我只需要粘贴一点):b'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"\n\t"http://
Edit:是的,这确实创建了一个名为.cache的文件夹;我发现,当涉及到httplib2时,使用文件夹总是更好的,并且您可以在以后删除该文件夹。
我个人认为:
我想你应该去法国,。。欢迎访问stackoverflow.com!
更新1
实际上,我现在更喜欢使用以下代码,因为它更快:
在这段代码中将
httplib
更改为http.client
应该足以使其适应Python 3。是的。
我确认,通过这两个代码,我获得了我看到您感兴趣的数据的源代码:
更新2
将以下代码片段添加到上述代码将允许您提取所需的数据:
结果(仅结尾)
我希望你不要打算“玩”外汇交易:这是一个最好的方式,以迅速宽松货币。
更新3
对不起!我忘了你和Python3在一起。所以我认为您必须这样定义regex:
也就是说,在字符串前面加上b,否则会出现类似于this question的错误
相关问题 更多 >
编程相关推荐