在网站中链接多个ajax请求以显示更多页面并在单页中获取完整列表

问题描述 投票:0回答:1

我想在单击 Show More 按钮时向下滚动时获得完整页面

https://icomarks.ai/icos/
。它应该显示大约 8000 个元素。

Show More
按钮激活 POST 请求
'https://icomarks.ai/icos/ajax_more'

我都尝试过

import requests
from bs4 import BeautifulSoup

with requests.Session() as session:

    req = session.get('https://icomarks.ai/icos/')
    req = session.post('https://icomarks.ai/icos/ajax_more')
    req = session.post('https://icomarks.ai/icos/ajax_more')    # just for a couple
    soup = BeautifulSoup(req.content, "html.parser")

import requests
from bs4 import BeautifulSoup

s = requests.Session()
t=s.post('https://icomarks.ai/icos/')
r=s.get('https://icomarks.ai/icos/ajax_more')
r=s.get('https://icomarks.ai/icos/ajax_more')    # just for a couple
soup = BeautifulSoup(r.content, "html.parser")

没有成功。

我希望

soup.find_all('a', class_="icoListItem__title")
应该找到列表中必须加载的元素:

[<a class="icoListItem__title" href="/ico/5th-scape">5th Scape <sup class="sup_is_premium">★ Promoted</sup> <sup class="sup_views">128 Views</sup>
 </a>,
 <a class="icoListItem__title" href="/ico/pood-inu">Pood INU <sup class="sup_is_premium">★ Promoted</sup> <sup class="sup_views">330 Views</sup>
 </a>,
 <a class="icoListItem__title" href="/ico/etuktuk">eTukTuk <sup class="sup_is_premium">★ Promoted</sup> <sup class="sup_views">794 Views</sup>
...
python beautifulsoup python-requests
1个回答
0
投票

两者都不起作用,因为每次覆盖变量时,您都会将结果分别存储在:

req
r
中,所以最多保留最后的回复。您需要在每次请求后处理返回或存储它们以供以后处理。

基本上现在,你正在做类似的事情:

a = 1
a = 2
a = 3

当然,a 将是 3,没有任何其他整数的痕迹。

构建代码的简单示例可能如下所示:

all_them_links = []
found_links = []

while True:
    with requests.Session() as session:
        req = session.post('https://icomarks.ai/icos/ajax_more')
        soup = BeautifulSoup(req.content, "html.parser")
        found_links = soup.find_all('a', class_="icoListItem__title")
        if not found_links:
            break
        all_them_links.extend(found_links)
        found_links = []
© www.soinside.com 2019 - 2024. All rights reserved.