gpt4 book ai didi

python - urllib2.urlopen() 返回不同的结果

转载 作者:行者123 更新时间:2023-11-30 23:47:15 28 4
gpt4 key购买 nike

我正在尝试使用 python 程序填写表格,它对于某些网站效果很好,但对于这个特定的网站则不然,我不知道为什么。

这是代码片段

query = {
'adults':'1',
'children':'0',
'infants':'0',
'trip':'RT',
'deptCode':'LOS',
'arrvCode':'ABV',
'searchType':'D',
'deptYear':'2011',
'deptMonth':'12',
'deptDay':'10',
'retYear':'2011',
'retMonth':'12',
'retDay':'11',
'cabin':'E',
'currency':'NGN',
'deptTime':'',
'arrvTime':'',
'airlinePref':''}

encoded = urllib.urlencode(query)



url = 'http://www.wakanow.com/ng/flights/SearchProcess.aspx?' + encoded
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
headers = { 'User-Agent' : user_agent }
req = urllib2.Request(url, encoded, headers)

response = urllib2.urlopen(req)

print 'RESPONSE:', response
print 'URL :', response.geturl()

headers = response.info()
print 'DATE :', headers['date']
print 'HEADERS :'
print '---------'
print headers

data = response.read()
print 'LENGTH :', len(data)
print 'DATA :'
print '---------'
print data

一切正常,但我得到的结果并不是我直接在网络浏览器中输入整个网址时出现的结果,这给了我正确的结果。

我不确定问题是什么,有人可以帮助我吗?

最佳答案

您可能会在浏览器中执行 GET,但在您的代码中,您实际上是在使用查询数据和您的 URL 对 URL 执行 POST查询数据作为 POST 数据。您可能只想执行GET。来自 this page ,

urllib2.Request(url[, data][, headers][, origin_req_host][, 无法验证])

data may be a string specifying additional data to send to the server, or None if no such data is needed. Currently HTTP requests are the only ones that use data; the HTTP request will be a POST instead of a GET when the data parameter is provided. data should be a buffer in the standard application/x-www-form-urlencoded format. The urllib.urlencode() function takes a mapping or sequence of 2-tuples and returns a string in this format.

所以,你真正想要的是:

req = urllib2.Request(url, headers=headers)

关于python - urllib2.urlopen() 返回不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8450780/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com