import requests import json def baidu(): base_url='https://image.baidu.com/search/acjson?tn=resulttagjson&logid=7759140707428693110&ie=utf-8&fr=ala&word=%E5%9B%BE%E7%89%87+%E5%A3%81%E7%BA%B8%E4%BD%A0%E7%9A%84%E5%90%8D%E5%AD%97&ipn=r&fm=index&pos=history&queryWord=%E5%9B%BE%E7%89%87+%E5%A3%81%E7%BA%B8%E4%BD%A0%E7%9A%84%E5%90%8D%E5%AD%97&cl=2&lm=-1&oe=utf-8&adpicid=&st=-1&z=&ic=0&hd=&latest=©right=&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&expermode=&nojc=&isAsync=true&pn=270&rn=30&itg=1&gsm=10e&1686381274362=' headers={ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" } res=requests.get(headers=headers,url=base_url) res=res.json()['data'][0]['hoverURL'] print(res) if __name__ == '__main__': baidu() 我想要优化此代码,实现在请求此页面一次的情况下,获取该json数据里的30条图片链接
时间: 2023-07-23 18:50:02 浏览: 75
可以将 pn 和 rn 参数分别设置为 0 和 30,这样就可以获取到前 30 张图片的链接了。同时,可以将代码中的 res.json()['data'][0]['hoverURL'] 修改为一个循环,遍历 res.json()['data'] 列表中的每一项,从中获取到 hoverURL 字段的值,即可得到所有图片的链接。下面是优化后的代码示例:
```python
import requests
import json
def baidu():
base_url = 'https://image.baidu.com/search/acjson?tn=resulttagjson&logid=7759140707428693110&ie=utf-8&fr=ala&word=%E5%9B%BE%E7%89%87+%E5%A3%81%E7%BA%B8%E4%BD%A0%E7%9A%84%E5%90%8D%E5%AD%97&ipn=r&fm=index&pos=history&queryWord=%E5%9B%BE%E7%89%87+%E5%A3%81%E7%BA%B8%E4%BD%A0%E7%9A%84%E5%90%8D%E5%AD%97&cl=2&lm=-1&oe=utf-8&adpicid=&st=-1&z=&ic=0&hd=&latest=©right=&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&expermode=&nojc=&isAsync=true'
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
}
res = requests.get(headers=headers, url=base_url + '&pn=0&rn=30')
data_list = res.json()['data']
for data in data_list:
print(data['hoverURL'])
if __name__ == '__main__':
baidu()
```