码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 爬虫这样怎么提取href?


    关注 码龄 粉丝数 原力等级 -- 被采纳 被点赞 采纳率 飞云666 2024-06-23 20:02 采纳率: 14.3% 浏览 0 首页/ 编程语言 / 爬虫这样怎么提取href? python爬虫selenium 0000_主题曲PV《余年一梦》 这样的怎么提取href呢?用selenium获取所有节点后再遍历执行javascript点击节点后获取current_url老是出现错误,提取不出来href 收起 写回答 好问题 0 提建议 追加酬金 关注问题 微信扫一扫 点击复制链接 分享 邀请回答 编辑 收藏 删除 结题 收藏 举报 追加酬金 (90%的用户在追加酬金后获得了解决方案) 当前问题酬金 ¥ 0 (可追加 ¥500) ¥ 15¥ 20¥ 50¥ 100¥ 200 支付方式 扫码支付 二维码出错 点击刷新 支付金额 15 元 提供问题酬金的用户不参与问题酬金结算和分配 支付即为同意 《付费问题酬金结算规则》 结题 再想想 删除 再等等

    2条回答 默认 最新

    • 关注

      码龄 粉丝数 原力等级 --

      • 被采纳
      • 被点赞
      • 采纳率
      阿里嘎多学长 2024-06-23 20:02
      关注

      以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


      在你提供的HTML示例中,标签的href属性值是javascript:,这意味着它并没有指向一个外部链接,而是执行了一段JavaScript代码。在这种情况下,使用href属性来获取链接是不合适的,因为实际上并没有一个可导航的URL。

      如果你的目标是提取执行onclick事件后跳转到的URL,那么你需要分析onclick事件中调用的testFn函数的实现。由于onclick事件中的JavaScript代码没有提供,我们无法直接知道testFn函数是如何工作的。但是,你可以采取以下步骤来尝试解决这个问题:

      1. 分析JavaScript代码:首先,你需要找到testFn函数的定义,并分析它是如何工作的。这可能需要查看页面的JavaScript源代码或使用浏览器的开发者工具。

      2. 模拟JavaScript函数:如果testFn函数是页面的一部分,并且可以在不执行点击事件的情况下调用,你可以尝试直接在Selenium中调用这个函数来获取跳转的URL。

      3. 使用Selenium执行JavaScript:如果找到testFn函数的定义,你可以使用Selenium的execute_script方法来执行这个函数,并捕获执行后的结果。

      下面是一个使用Selenium执行JavaScript的示例代码:

      from selenium import webdriver
      
      # 假设你已经设置了webdriver并加载了页面
      driver = webdriver.Chrome()
      driver.get('你的页面URL')
      
      # 执行JavaScript函数并获取结果
      result = driver.execute_script('return testFn("3a0fa16c-5ac8-0887-90a4-eb897e031872");')
      
      # 打印结果
      print(result)
      
      1. 错误处理:如果你在使用Selenium执行点击事件或执行JavaScript时遇到错误,确保检查Selenium的日志输出,了解具体的错误信息,并根据错误信息进行调试。

      2. 参考链接:以下是一些可能对你有帮助的参考链接:

        • Selenium Python文档
        • Selenium WebDriver 官方文档
        • 如何在Selenium中执行JavaScript

      请注意,由于我无法访问外部链接,上述链接仅供参考,你可能需要自行搜索以获取最新的资源。如果你需要进一步的帮助,请提供更多的信息或错误详情。

      展开全部

      本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?
      解决 无用
      评论 打赏
      微信扫一扫
      点击复制链接
      分享
      举报 编辑记录
      编辑
      预览
        轻敲空格完成输入
        • 显示为
        • 卡片
        • 标题
        • 链接
        评论
        按下Enter换行,Ctrl+Enter发表内容
      • 关注

        码龄 粉丝数 原力等级 --

        • 被采纳
        • 被点赞
        • 采纳率
        专家-赤兔[在线] 全栈领域优质创作者 2024-06-23 20:02
        关注

        引自免费微信小程序:皆我百晓生

        要从HTML中提取标签中的href属性值,可以使用Python的BeautifulSoup库。以下是具体的步骤和示例代码。

        步骤 1: 安装必要的库

        确保已经安装了BeautifulSoup库。如果没有,请使用pip进行安装:

        pip install beautifulsoup4
        

        步骤 2: 导入所需的模块并创建一个Selenium WebDriver实例

        首先,我们需要一个WebDriver(例如ChromeDriver),然后创建一个Selenium WebDriver实例来操作浏览器。

        from selenium import webdriver
        from bs4 import BeautifulSoup
        import time
        
        # 创建一个WebDriver实例
        driver = webdriver.Chrome()
        
        # 打开网页
        driver.get("http://example.com")
        time.sleep(3)  # 等待页面加载完成
        
        ### 步骤 3: 提取(href)元素的href属性值
        
        接下来,我们可以使用BeautifulSoup解析HTML内容,并提取特定的元素。在这个例子中,我们只关注带有`onclick`事件的链接。
        ```python
        def extract_href(element):
            try:
                if element['onclick']:
                    script, event = element['onclick'].split('script')
                    href = 'javascript:' + script[1:-1]  # 去除'script'前后的空格
                    return href
            except KeyError:
                return None
        
        # 遍历所有的元素
        for a in driver.find_elements_by_tag_name('a'):
            href = extract_href(a)
            if href is not None:
                print(f"Href of {a.text}: {href}")
        
        # 关闭WebDriver实例
        driver.quit()
        

        步骤 4: 测试代码

        这段代码应该正确地提取出所有带有onclick事件的链接的href属性值。运行此脚本时,它将打印每个a元素的文本及其对应的href属性值。

        注意事项:

        • 这个脚本依赖于ChromeDriver和BeautifulSoup库。如果你没有这些库,你需要先安装它们。
        • 脚本会尝试访问一个示例网站,但实际应用可能需要根据目标网站结构调整XPath表达式或其他方法。
        • onclick事件通常用于处理JavaScript脚本调用,这在某些情况下可能会导致JavaScript异常。因此,在实际应用中,你应该考虑使用更安全的方法来提取这些链接。

        通过以上步骤,你可以有效地提取标签中的href属性值。

        展开全部

        本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?
        解决 无用
        评论 打赏
        微信扫一扫
        点击复制链接
        分享
        举报 编辑记录
        编辑
        预览
          轻敲空格完成输入
          • 显示为
          • 卡片
          • 标题
          • 链接
          评论
          按下Enter换行,Ctrl+Enter发表内容
        收起1条回答
        编辑
        预览
          轻敲空格完成输入
          • 显示为
          • 卡片
          • 标题
          • 链接

          报告相同问题?

          提交
        • 相关阅读:
          Python中的全局变量与命名法
          Matlab实验二
          Java之@Autowired再分析
          ESP32idf组件中缺少头文件error: mqtt_client.h: No such file or directory
          Springboot结合Freemaker导出模板doc和docx文件
          逍遥自在学C语言 | 位运算符^的高级用法
          Redis数据类型——set类型数据交并差操作
          Linux之xinetd安装及实践
          返回多维数组转换为一维后的数组:array.flatten()
          从win11切换到ubuntu20的第1天
        • 原文地址:https://ask.csdn.net/questions/8123080
        • 最新文章
        • 攻防演习之三天拿下官网站群
          数据安全治理学习——前期安全规划和安全管理体系建设
          企业安全 | 企业内一次钓鱼演练准备过程
          内网渗透测试 | Kerberos协议及其部分攻击手法
          0day的产生 | 不懂代码的"代码审计"
          安装scrcpy-client模块av模块异常,环境问题解决方案
          leetcode hot100【LeetCode 279. 完全平方数】java实现
          OpenWrt下安装Mosquitto
          AnatoMask论文汇总
          【AI日记】24.11.01 LangChain、openai api和github copilot
        • 热门文章
        • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
          奉劝各位学弟学妹们,该打造你的技术影响力了!
          五年了,我在 CSDN 的两个一百万。
          Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
          面试官都震惊,你这网络基础可以啊!
          你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
          心情不好的时候,用 Python 画棵樱花树送给自己吧
          通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
          13 万字 C 语言从入门到精通保姆级教程2021 年版
          10行代码集2000张美女图,Python爬虫120例,再上征途
        Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
        正则表达式工具 cron表达式工具 密码生成工具

        京公网安备 11010502049817号