【问题标题】:How to extract the text H MATTHEWS from the html using Selenium and Python如何使用 Selenium 和 Python 从 html 中提取文本 H MATTHEWS
【发布时间】:2020-11-11 07:35:37
【问题描述】:

通过使用“包含”功能如何从这种类型的 html 结构中提取信息,我正在尝试抓取“H MATTHEWS”这些信息

HTML:

<p>
<strong>Date Published:</strong>
&nbsp; 20 APRIL 2020
<br>
<strong>Closing Date / Time:</strong>
&nbsp;TUESDAY, 05 MAY 2020
<br>
<strong>Enquiries:</strong>
<br>
Contact Person: H MATTHEWS
<br>
Email:&nbsp;
</p>

HTML 图像:

【问题讨论】:

  • Stack Overflow 既不是论坛,也不是教程、代码编写或家庭作业服务。这是一个问答网站,特定 编程问题(通常但不总是,包括一些代码)可以获得特定 答案。请拨打tour 并仔细阅读help center 以了解有关该网站的更多信息,包括what is on-topicwhat is not,以及如何ask a good question。也请关注question checklist
  • 如果不知道 HTML 的实际 是什么,任何人都无法回答这个问题。
  • @MattDMo 我是stackover流程的新手,我还在尝试上传html结构。
  • @MattDMo 你现在可以帮我吗

    发布日期:   2020 年 4 月 20 日
    结束日期/时间:  2020 年 5 月 5 日星期二
    查询:
    联系人:H MATTHEWS
    电子邮件:  

  • edit您的问题并发布您迄今为止尝试过的代码、您得到的输出(如果有)以及任何错误的全文或追溯。

标签: python selenium xpath web-scraping xpath-1.0


【解决方案1】:

文本联系人:H MATTHEWS 位于文本节点内。因此,要打印文本,您必须为visibility_of_element_located() 诱导WebDriverWait,您可以使用以下任一Locator Strategies

  • 使用XPATHchildNodes

    print(driver.execute_script('return arguments[0].childNodes[9].textContent;', WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//p[./strong[text()='Date Published:']]")))).strip())
    
  • 使用XPATHsplitlines()

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//p[./strong[text()='Date Published:']]"))).get_attribute("innerHTML").splitlines()[-3])
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    

如果您的用例只提取文本H MATTHEWS,您可以使用以下任一解决方案:

  • 使用XPATHchildNodes

    print(re.split('[:]', driver.execute_script('return arguments[0].childNodes[9].textContent;', WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//p[./strong[text()='Date Published:']]")))).strip())[1])
    
  • 使用XPATHsplitlines()

    print(re.split('[:]', WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//p[./strong[text()='Date Published:']]"))).get_attribute("innerHTML").splitlines()[-3])[1])
    

参考

您可以在以下位置找到详细的相关讨论:

【讨论】:

    猜你喜欢
    • 2020-11-05
    • 2020-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-21
    • 2020-09-24
    • 2022-01-03
    相关资源
    最近更新 更多