网页抓取遇「加载按钮」问题:无法获取全部通讯稿URL
解决仅能抓取第一页通讯稿URL的问题
你的代码仅请求了网站首页,未处理分页逻辑,因此只能获取第一页内容。以下是修改后的代码,可自动遍历所有分页并抓取全部通讯稿URL:
修改后代码
from bs4 import BeautifulSoup import requests from urllib.parse import urljoin headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'} base_url = "https://news.matdesousa.com/" current_url = base_url while True: # 请求当前页面 response = requests.get(current_url, headers=headers) response.raise_for_status() # 捕获请求失败异常 soup = BeautifulSoup(response.text, 'html.parser') # 提取当前页面的通讯稿链接 inner_divs = soup.find_all('div', class_='group h-full overflow-hidden transition-all shadow-none hover:shadow-none rounded-lg') for inner_div in inner_divs: link = inner_div.find('a')['href'] full_link = urljoin(base_url, link) # 拼接为绝对URL print(full_link) # 查找下一页链接 next_page = soup.find('a', rel='next') if not next_page: break # 无下一页则退出循环 current_url = urljoin(base_url, next_page['href'])
代码说明
- 用
urljoin处理相对链接,确保获取完整的URL地址 - 通过
rel='next'属性定位下一页按钮,适配该网站的分页标记规则 - 循环请求直到无下一页链接为止,实现全量抓取
- 加入
response.raise_for_status()捕获请求异常,避免页面加载失败导致的错误
内容的提问来源于stack exchange,提问作者Ali Nawab Khan
相关产品推荐
相关产品推荐

