如何使用BeautifulSoup和/或Selenium抓取需点击加载更多的网页全量链接
目标网页车型链接抓取方案
直接在浏览器控制台运行JavaScript脚本即可实现自动加载全部内容、批量抓取链接,无需安装额外爬虫工具,操作步骤如下:
操作步骤
- 打开目标网页 https://www.quattroruote.it/listino/audi,等待页面首次加载完成
- 按
F12打开开发者工具,切换到「控制台(Console)」标签页,如有风险提示输入allow pasting按回车允许粘贴代码 - 粘贴下方脚本后按回车执行,等待脚本运行结束即可
执行脚本
// 存储所有车型链接的变量 const allModelLinks = new Set(); // 自动加载全部内容的函数 async function loadAllModels() { while (true) { // 抓取当前页面已加载的所有车型链接 document.querySelectorAll('.card a[href^="/listino/audi/"]').forEach(link => { allModelLinks.add(link.getAttribute('href')); }); // 查找加载更多按钮 const loadMoreBtn = Array.from(document.querySelectorAll('button')).find(btn => btn.textContent.trim() === 'Carica altri modelli'); // 没有可用的加载按钮就终止循环 if (!loadMoreBtn || loadMoreBtn.disabled) break; // 点击加载更多 loadMoreBtn.click(); // 等待2秒给页面加载新内容,可根据自身网络情况调整时长 await new Promise(resolve => setTimeout(resolve, 2000)); // 自动滚动到底部触发懒加载逻辑 window.scrollTo(0, document.body.scrollHeight); } // 最后再抓取一次最后一批加载的链接避免遗漏 document.querySelectorAll('.card a[href^="/listino/audi/"]').forEach(link => { allModelLinks.add(link.getAttribute('href')); }); console.log(`全部链接抓取完成,共${allModelLinks.size}条,可通过allModelLinks变量查看所有内容`); } loadAllModels();
结果使用说明
脚本运行完成后,所有链接会存储在allModelLinks集合中,你可以根据需求直接使用:
- 输入
Array.from(allModelLinks)即可得到存储所有链接的标准数组 - 输入
copy(Array.from(allModelLinks))可直接将所有链接复制到剪贴板使用
内容的提问来源于stack exchange,提问作者Luigi Modica
相关产品推荐
相关产品推荐

