请求函数的功能是什么?
所以我试图发送一个请求到一个网页并阅读它的回应。我做了一个比较请求和页面的代码,我不能得到相同的页面文本。我是否正确使用“请求”? 我真的认为我误解了请求函数的工作原理以及它的作用。有人能帮助我吗?请求函数的功能是什么?
import requests
import urllib
def search():
pr = {'q':'pink'}
r = requests.get('http://*.com/search',params=pr)
returntext = r.text
urllibtest(returntext)
def urllibtest(returntext):
connection = urllib.urlopen("http://*.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()
首先,没有理由期望两个不同的堆栈溢出搜索返回完全相同的响应。
有一个合乎逻辑的区别就在这里过,请求自动为您输出解码:
>>> 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
我打算发布这个答案,但我实际上是看着'urllib.request.urlopen'的解码输出(我在python 3上),这对我来说不同于我从'requests.get '。不知道该怎么做。 –
那么,你可能已经击中了CAPTCHA或其他东西。没有理由期望来自两个'*'搜索的响应在两个不同的时间返回相同的内容。 – wim
确实如此,实际上,我认为这就是发生了什么事:'
'urllib.urlopen'应该是'urllib.request.urlopen' – Barmar
@Barmar没有在Python 2 –
伟大的第一个问题! –