飞云666 2024-06-23 19:56 采纳率: 14.3%
浏览 8

爬虫这样的情况怎么提取href?

img


这样的怎么提取href呢?用selenium获取所有节点后再遍历执行javascript点击节点后获取current_url老是出现错误,提取不出来href

  • 写回答

2条回答 默认 最新

  • 阿里嘎多学长 2024-06-23 19:56
    关注

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


    在使用Selenium进行网页爬取时,提取特定节点的href属性可以通过几种不同的方法实现。以下是一些可能的解决方案:

    1. 直接提取属性: 使用Selenium的find_element_by_*方法(例如find_element_by_xpath)直接定位到包含href属性的元素,然后使用get_attribute('href')来获取其值。

      from selenium import webdriver
      
      driver = webdriver.Chrome()
      driver.get('你的网页URL')
      element = driver.find_element_by_xpath('//a[@href]')
      href = element.get_attribute('href')
      print(href)
      
    2. 使用CSS选择器: 如果你知道元素的CSS类或ID,可以使用CSS选择器来定位元素。

      element = driver.find_element_by_css_selector('a.your-class')
      href = element.get_attribute('href')
      
    3. 使用JavaScript执行器: 如果直接获取属性有困难,可以尝试使用Selenium的JavaScript执行器来执行一些JavaScript代码,以获取href属性。

      href = driver.execute_script('return document.querySelector("a.your-class").href;')
      
    4. 点击元素后获取URL: 如果你的方法是点击元素然后获取当前URL,确保你的点击操作是成功的,并且页面在点击后没有发生重定向。如果页面重定向,你可以通过获取当前页面的URL来间接获取href

      element.click()
      current_url = driver.current_url
      
    5. 检查错误和异常: 如果上述方法出现错误,检查是否有异常抛出,并查看Selenium的日志输出,了解具体的错误信息。这有助于诊断问题所在。

    6. 等待元素加载: 在尝试获取href属性之前,确保元素已经加载完成。可以使用Selenium的等待机制来等待元素可被操作。

      from selenium.webdriver.common.by import By
      from selenium.webdriver.support.ui import WebDriverWait
      from selenium.webdriver.support import expected_conditions as EC
      
      wait = WebDriverWait(driver, 10)
      element = wait.until(EC.element_to_be_clickable((By.XPATH, '//a[@href]')))
      
    7. 使用XPath轴: 如果你需要从父元素或兄弟元素中提取href,可以使用XPath的轴,如../following-sibling::

    请注意,具体的实现方法可能会根据你正在爬取的网页的结构和Selenium的版本有所不同。如果需要更具体的帮助,可以提供网页的URL和更详细的错误信息。

    至于参考链接,以下是一些可能有用的资源:

    希望这些方法能帮助你解决问题。如果还有其他问题或需要进一步的帮助,请随时告诉我。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月23日

悬赏问题

  • ¥15 SPSS分类模型实训题步骤
  • ¥15 求解决扩散模型代码问题
  • ¥15 工创大赛太阳能电动车项目零基础要学什么
  • ¥20 limma多组间分析最终p值只有一个
  • ¥15 nopCommerce开发问题
  • ¥15 torch.multiprocessing.spawn.ProcessExitedException: process 1 terminated with signal SIGKILL
  • ¥15 QuartusⅡ15.0编译项目后,output_files中的.jdi、.sld、.sof不更新怎么解决
  • ¥15 pycharm输出和导师的一样,但是标红
  • ¥15 想问问富文本拿到的html怎么转成docx的
  • ¥15 我看了您的文章,遇到了个问题。