所以我试图向网页发送请求并阅读其回复。我做了一个比较请求和页面的代码,我不能得到相同的页面文本。我正确使用“请求”吗? 我真的认为我误解了请求功能如何工作以及它的作用。有人能帮帮我吗?
import requests
import urllib
def search():
pr = {'q':'pink'}
r = requests.get('http://stackoverflow.com/search',params=pr)
returntext = r.text
urllibtest(returntext)
def urllibtest(returntext):
connection = urllib.urlopen("http://stackoverflow.com/search?q=pink")
output = connection.read()
connection.close()
if output == returntext:
print("ITS THE SAME PAGE")
else:
print("ITS NOT THE SAME PAGE")
search()
答案 0 :(得分:1)
首先,没有充分的理由期望两个不同的堆栈溢出搜索无论如何都返回完全相同的响应。
这里也有一个逻辑上的区别,请求会自动解码输出:
>>> type(output)
str
>>> type(r.text)
unicode
如果您不希望它被解码,您可以使用content
,并使用更可预测的来源查看返回的相同内容 - 例如:
>>> r1 = urllib.urlopen('http://httpbin.org').read()
>>> r2 = requests.get('http://httpbin.org').content
>>> r1 == r2
True