2015-10-26 49 views
0

我希望有人能够帮助我与urllib发布。我的这个计划的目标是发布一个IP地址并获得它的相对位置。我知道有很多API等等,但是我的学校并不太热衷于以任何方式对他们的计算机进行任何修改(这是用于comp sci课程的)。因此,现在下面的代码让我知道我的位置,因为我的计算机IP已经被网站感知了(我在猜测头部?),但是我想要做的只是输入IP并返回位置。 ipStr只是IP字符串(在这种情况下,它是纽约时代华纳有线电视的IP)。我尝试设置值并提交数据,但无论我将值设置为什么,它只是返回我自己的计算机位置。有任何想法吗?Python 3 Urllib发布问题

ipStr = "72.229.28.185" 


url = "https://www.iplocation.net/" 

values = {'value': ipStr} 

headers = {} 

headers ['User-Agent'] = 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1' 

data = urllib.parse.urlencode(values) 

data = data.encode('utf-8') 

req = urllib.request.Request(url,data=data, headers = headers) 

resp = urllib.request.urlopen(req) 

page = str(resp.read()) 

npattern = "Google Map for" 

nfound = re.search(npattern,page) 

ns = nfound.start() 
ne = nfound.end() 

location = "" 

while page[ne:ne +1] != "(": 

    location += page[ne:ne+1] 

    ne += 1 

回答

0

你只需要参数名称更改从valuequery,例如:

values = {'query': ipStr} 

如果你看看输入字段的名称的页面(https://www.iplocation.net/)上,你会看到该字段的名称是query

+0

哦,这是有道理的!谢谢! – Benji