Python 3 个 Urllib 发布问题

Python 3 Urllib Posting Issues

我希望有人可以帮助我使用 urllib posting。我这个程序的目标是 post 一个 IP 地址并获得它的相对位置。我知道那里有很多 API 等,但我的学校不太热衷于以任何方式修改他们的任何计算机(这是针对 comp sci class)。所以现在下面的代码让我知道我的位置,因为我的电脑 IP 已经被网站感知到(我猜是 header?),但我想做的只是输入一个 IP并有一个返回的位置。 ipStr 只是 IP 字符串(在本例中是时代华纳有线在纽约的 IP)。我尝试设置值并提交数据,但无论我将值设置为什么,它都只是 returns 我自己的计算机位置。有什么想法吗?

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

只需要将参数名称由value改为query即可,例如:

values = {'query': ipStr}

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