我试图从这个网站收集所有的图片文件名:https://www.shipspotting.com/
我已经收集了一个python cat_dict中的所有类别名称和它们的id号。所以我的策略是遍历每个类别页面,调用数据加载API并保存每个页面的响应。
我已经将https://www.shipspotting.com/ssapi/gallery-search标识为请求URL,它加载下一页内容。但是,当我使用请求库请求这个URL时,我会得到一个404。在加载下一页内容时,我需要做什么才能获得正确的响应?
import requests
from bs4 import BeautifulSoup
cat_page = 'https://www.shipspotting.com/photos/gallery?category='
for cat in cat_dict:
cat_link = cat_page + str(cat_dict[cat])
headers = {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:96.0) Gecko/20100101 Firefox/96.0",
"Referer": cat_link
}
response = requests.get('https://www.shipspotting.com/ssapi/gallery-search', headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')https://www.shipspotting.com/photos/gallery?category=169是一个示例页面(cat_link)
发布于 2022-07-11 20:58:58
您的认证url包含通过API作为post方法的数据,无穷滚动使下一页意味着从api的有效负载数据分页。
工作代码和响应200
import requests
api_url= 'https://www.shipspotting.com/ssapi/gallery-search'
headers={'content-type': 'application/json'}
payload= {"category":"","perPage":12,"page":1}
for payload['page'] in range(1,7):
res=requests.post(api_url,headers=headers,json=payload)
for item in res.json()['items']:
title=item['title']
print(title)https://stackoverflow.com/questions/72944242
复制相似问题