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

如何用BeautifulSoup的find/find_all提取指定div下的国家URL

提取国家专属URL的解决方案

你可以通过以下两种方法获取目标URL:

方法1:遍历目标div并提取去重

每个well span4类的div下包含两个指向同一国家的URL(一个包裹地图,一个是按钮),用集合可自动去重。

修改后的代码:

import requests
from bs4 import BeautifulSoup

url = "https://www.rulac.org/browse/countries/P36"  
resp = requests.get(url)

soup = BeautifulSoup(resp.content, 'html.parser')
divs = soup.find_all("div", class_="well span4")

country_urls = set()

for div in divs:
    # 查找当前div下所有a标签
    all_links = div.find_all('a')
    for link in all_links:
        href = link.get('href')
        # 筛选国家专属URL,避免无关链接
        if href and '/browse/countries/' in href:
            country_urls.add(href)

# 转成列表便于后续处理
country_urls = list(country_urls)
print(country_urls)

方法2:使用CSS选择器直接定位

利用BeautifulSoup的CSS选择器,一步定位目标div下的所有a标签:

import requests
from bs4 import BeautifulSoup

url = "https://www.rulac.org/browse/countries/P36"  
resp = requests.get(url)

soup = BeautifulSoup(resp.content, 'html.parser')

# CSS选择器语法:选中class为well和span4的div下的所有a标签
target_links = soup.select('div.well.span4 a')

# 提取href并去重
country_urls = list({link.get('href') for link in target_links if link.get('href') and '/browse/countries/' in link.get('href')})
print(country_urls)

重点提示

  • 集合set()会自动过滤重复的URL,避免数据冗余。
  • 增加/browse/countries/的判断,可以确保只提取符合要求的国家专属链接,排除页面中其他无关的a标签。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 01:01:11