You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用BeautifulSoup提取滚动Marquee中href链接失败求助

用BeautifulSoup提取滚动Marquee内的href链接问题

问题背景

我是网页爬虫新手,正在用bs4抓取https://drugs.globalincidentmap.com/页面中滚动Marquee区域的href链接。目前已获取到Marquee对应的bs4 ResultSet元素,但无法从中提取href属性;尝试进一步遍历解析时,要么返回空列表,要么触发NoneType/KeyError/AttributeError错误。

注:用Selenium+ChromeDriver可以轻松提取链接,但速度太慢,想换bs4实现。

现有代码

能获取Marquee数据的代码

url = 'https://drugs.globalincidentmap.com/'

response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')

marquee = soup.select('div', class_='h-48') 
print(marquee)

解析出错的代码尝试

尝试1:

for a in marquee.find_all('a', href=True):
    link = a.find('div', class_=':nth-child')

尝试2:

for a in marquee.find_all('a', href=True):
    link = a.find('div', class_='flex p-2')

问题原因与解决方法

  1. select方法用法错误
    soup.select('div', class_='h-48')写法不符合CSS选择器规范,select的参数应为完整选择器字符串,正确写法是soup.select('div.h-48')。此外,select返回的是ResultSet(列表类型),不能直接调用find_all,需要先遍历列表内的元素。

  2. 解析逻辑偏差
    Marquee区域的href属性直接挂载在<a>标签上,无需先查找div再提取。正确逻辑是遍历选中的h-48类div,直接在其中提取带href的<a>标签属性。

修正后的代码

import requests
from bs4 import BeautifulSoup

url = 'https://drugs.globalincidentmap.com/'

response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')

# 正确选中目标div
marquee_divs = soup.select('div.h-48')

# 遍历提取所有href链接
for div in marquee_divs:
    for a in div.find_all('a', href=True):
        print(a['href'])

补充说明

如果页面Marquee内容是动态加载的,requests获取的静态HTML可能不包含目标数据,此时bs4无法抓取。这种情况下可以尝试用requests-html这类轻量工具模拟JS渲染,速度比ChromeDriver快很多。


内容的提问来源于stack exchange,提问作者facepet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 15:50:27