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

如何使用Python与BeautifulSoup抓取网页href链接

嘿,我来帮你搞定用Python 3.4和BeautifulSoup抓取京都活动深度链接的事儿!

解决方案步骤

首先得确保你已经装了requests和bs4这两个依赖库,要是没装的话,在终端里跑这行命令:

pip install requests beautifulsoup4

接下来直接上可运行的代码,我已经针对你给出的HTML结构做了适配:

import requests
from bs4 import BeautifulSoup

# 目标页面URL
target_url = "https://www.klook.com/city/30-kyoto/?p=1"

try:
    # 发送请求获取页面源码
    resp = requests.get(target_url)
    resp.raise_for_status()  # 自动检测请求是否失败

    # 用BeautifulSoup解析HTML
    soup = BeautifulSoup(resp.text, 'html.parser')

    # 定位所有活动链接的a标签——就是你提到的class为j_activity_item_link的元素
    activity_tags = soup.find_all('a', class_='j_activity_item_link')

    # 提取链接并转为完整URL(因为原href是相对路径)
    base_site = "https://www.klook.com"
    full_activity_links = []
    for tag in activity_tags:
        relative_href = tag.get('href')
        if relative_href:  # 避免空链接的情况
            full_link = f"{base_site}{relative_href}"
            full_activity_links.append(full_link)

    # 输出结果,你也可以改成写入文件之类的操作
    print("成功抓取到的活动深度链接:")
    for num, link in enumerate(full_activity_links, start=1):
        print(f"{num}. {link}")

except Exception as err:
    print(f"抓取时出问题啦:{err}")
代码说明
  • 用requests.get()拉取页面内容,raise_for_status()能帮你快速发现请求失败的问题(比如404、500错误)
  • soup.find_all('a', class_='j_activity_item_link')精准定位到你要的活动链接标签,哪怕HTML里a标签重复写了class属性,BeautifulSoup也能正确识别
  • 原href是相对路径(比如/activity/1031-arashiyama-rickshaw-tour-kyoto/),所以要拼接上网站的基础URL,才能得到可直接访问的完整链接
  • 如果之后要抓多页的活动,只需要循环修改URL里的p参数(比如?p=2、?p=3)就行

要是你还有具体的问题(比如动态加载内容抓不到、链接去重之类的),随时说!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:32:19