无法修改字典内的页码

我在 python 中编写了一个脚本,使用 post 请求从网页中获取 json 内容。如果我只坚持它的默认页面,脚本就可以正常工作。但是,我的目的是创建一个循环来从几个不同的页面收集内容。我正在努力解决的唯一问题是使用page关键字内payload来循环三个不同的页面。将我的错误方法视为占位符。


如何在 dict 中使用格式来更改页码?


工作脚本(如果我摆脱了分页循环):


import requests


link = 'https://nsv3auess7-3.algolianet.com/1/indexes/idealist7-production/query?x-algolia-agent=Algolia%20for%20vanilla%20JavaScript%203.30.0&x-algolia-application-id=NSV3AUESS7&x-algolia-api-key=c2730ea10ab82787f2f3cc961e8c1e06'


for page in range(0,3):

    payload = {"params":"getRankingInfo=true&clickAnalytics=true&facets=*&hitsPerPage=20&page={}&attributesToSnippet=%5B%22description%3A20%22%5D&attributesToRetrieve=objectID%2Ctype%2Cpublished%2Cname%2Ccity%2Cstate%2Ccountry%2Curl%2CorgID%2CorgUrl%2CorgName%2CorgType%2CgroupID%2CgroupUrl%2CgroupName%2CisFullTime%2CremoteOk%2Cpaid%2ClocalizedStarts%2ClocalizedEnds%2C_geoloc&filters=(orgType%3A'NONPROFIT')%20AND%20type%3A'JOB'&aroundLatLng=40.7127837%2C%20-74.0059413&aroundPrecision=15000&minimumAroundRadius=16000&query="}

    res = requests.post(link,json=payload.format(page)).json()

    for item in res['hits']:

        print(item['name'])

按原样运行脚本时出现错误:


res = requests.post(link,json=payload.format(page)).json()

AttributeError: 'dict' object has no attribute 'format'


ibeautiful
浏览 183回答 1
1回答

波斯汪

format是一个字符串方法。您应该将其应用于您的字符串值payload:payload = {"params":"getRankingInfo=true&clickAnalytics=true&facets=*&hitsPerPage=20&page={}&attributesToSnippet=%5B%22description%3A20%22%5D&attributesToRetrieve=objectID%2Ctype%2Cpublished%2Cname%2Ccity%2Cstate%2Ccountry%2Curl%2CorgID%2CorgUrl%2CorgName%2CorgType%2CgroupID%2CgroupUrl%2CgroupName%2CisFullTime%2CremoteOk%2Cpaid%2ClocalizedStarts%2ClocalizedEnds%2C_geoloc&filters=(orgType%3A'NONPROFIT')%20AND%20type%3A'JOB'&aroundLatLng=40.7127837%2C%20-74.0059413&aroundPrecision=15000&minimumAroundRadius=16000&query=".format(page)}res = requests.post(link,json=payload).json()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python