python下载某些网页返回数据错误
【求助】python下载某些网页返回数据异常
import httplib
def con(url,dic=None):
contorl=0;params="";port=80
if dic!=None:
keylist=[];contorl=1
for i in dic:
keylist.append(i+"="+dic[i])
params="&".join(keylist)
del keylist
url_path=url.split("/",3)
if url_path[2].find(":")!=-1:
url_path[2],port=url_path[2].split(":")
print url_path,port
headers = {'Content-type': 'application/x-www-form-urlencoded','Accept': 'text/plain',"User-Agent": "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1) Gecko/20090624 Firefox/3.5"}
h = httplib.HTTPConnection(url_path[2],port)
h.request(["GET",'POST'][contorl],"/"+url_path[3],params, headers)
data=h.getresponse().read()
h.close()
del h,contorl,params,url_path,url
return data
def write(x,path="test.txt"):
f=open("e:\\project\\python\\files\\"+path,"w")
f.write(x)
f.close()
htm=con("http://180.166.7.150:8880/index.do?province=jx")
write(htm,path="index2.txt")
这是我用的代码,网址是电信wifi认证的获取密码的页面。那个页面有点诡异,我得到的数据总是返回错误 500,而浏览器打开则正常。
另外我用上面的代码打开电信wifi认证首页(https://wlan.ct10000.com/portal4JX/hw)都可以,为什么单单那个页面就不行。
求各位帮帮忙,这是怎么一回事,这问题困扰我一整天了。。。
------解决方案--------------------
前后两个port为何不同?一个80,一个8880
------解决方案--------------------
试了一下,文头得"Accept": "text/html"...
------解决方案--------------------
header增加几项试试
'Accept-Language': 'zh-cn'
'Accept-Encoding':'*'
'Referer':url
另外你应该在浏览器抓包看看是否需要发送cookie,登录一般都少不了这个
还有就是想知道你代码中
h.request(["GET",'POST'][contorl],"/"+url_path[3],params, headers)
红色部分是什么?确定没写错么?
import httplib
def con(url,dic=None):
contorl=0;params="";port=80
if dic!=None:
keylist=[];contorl=1
for i in dic:
keylist.append(i+"="+dic[i])
params="&".join(keylist)
del keylist
url_path=url.split("/",3)
if url_path[2].find(":")!=-1:
url_path[2],port=url_path[2].split(":")
print url_path,port
headers = {'Content-type': 'application/x-www-form-urlencoded','Accept': 'text/plain',"User-Agent": "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1) Gecko/20090624 Firefox/3.5"}
h = httplib.HTTPConnection(url_path[2],port)
h.request(["GET",'POST'][contorl],"/"+url_path[3],params, headers)
data=h.getresponse().read()
h.close()
del h,contorl,params,url_path,url
return data
def write(x,path="test.txt"):
f=open("e:\\project\\python\\files\\"+path,"w")
f.write(x)
f.close()
htm=con("http://180.166.7.150:8880/index.do?province=jx")
write(htm,path="index2.txt")
这是我用的代码,网址是电信wifi认证的获取密码的页面。那个页面有点诡异,我得到的数据总是返回错误 500,而浏览器打开则正常。
另外我用上面的代码打开电信wifi认证首页(https://wlan.ct10000.com/portal4JX/hw)都可以,为什么单单那个页面就不行。
求各位帮帮忙,这是怎么一回事,这问题困扰我一整天了。。。
------解决方案--------------------
前后两个port为何不同?一个80,一个8880
------解决方案--------------------
试了一下,文头得"Accept": "text/html"...
------解决方案--------------------
header增加几项试试
'Accept-Language': 'zh-cn'
'Accept-Encoding':'*'
'Referer':url
另外你应该在浏览器抓包看看是否需要发送cookie,登录一般都少不了这个
还有就是想知道你代码中
h.request(["GET",'POST'][contorl],"/"+url_path[3],params, headers)
红色部分是什么?确定没写错么?