【问题标题】:Python Selenium search for [object Text]Python Selenium 搜索 [对象文本]
【发布时间】:2018-01-23 03:12:00
【问题描述】:

这是我下面的硒代码。

sourcesearch = driver.find_element_by_xpath('//*[@id=\"Table_Exame\"]/tbody/tr[1]/td/text()[1]')

结果是——

selenium.common.exceptions.InvalidSelectorException:消息:无效 选择器:xpath 表达式的结果 "//*[@id="Table_Exame"]/tbody/tr[1]/td/text()[1]" 是:[对象文本]。 它应该是一个元素。

有什么方法可以通过 Selenium 检索 [object Text] 吗? 任何形式的帮助将不胜感激。

除了 Xpath 之外的任何东西都不可用,因为该站点没有为文本添加任何标签。 另外,很抱歉无法包含该网站地址,因为它只是一个仅限会员的网站。

【问题讨论】:

  • 您可以尝试使用sourcesearch = driver.find_element_by_xpath('//*[@id=\"Table_Exame\"]/tbody/tr[1]/td).text 获取文本内容,然后对其进行解析以提取所需的子字符串。或者像 here 一样执行 JavaScript
  • 是的,好像是这样。谢谢

标签: python selenium xpath web-scraping html-parsing


【解决方案1】:

我遇到了类似的问题,在搜索时发现了这个。

对我来说,从

截断 xpath
//*[@id='form_main_step3']/li[2]/div/label[2]/text()

//*[@id='form_main_step3']/li[2]/div/label[2]

解决了我的问题。

我还发现需要注意检查正确的 DOM 元素。 YMMV。

【讨论】:

    【解决方案2】:

    当您的 XPath 表达式以 text()[whatever] 结尾时,这将解析为文本容器,而不是 HTML 元素(或列表)。

    提示:在浏览页面时,在 Firefox 控制台中使用 $x(some_xpath_expression) 尝试您的 XPath 表达式。

    也许您应该编辑您的问题并添加周围的 HTML 摘录并准确描述您的期望。

    【讨论】:

    • 嗯。我认为通过 BeautifulSoup 解析整个 HTML 会更好。周围的 HTML 只是 本身。这就是我没有发布 HTML 源代码的原因。
    • 如果内容不是用 JS (React, Angular, ...) 构建的,如果你要抓取大量页面,使用 Beautifulsoup 和 lxml 处理会更快,此外调试会更容易。
    • 谢谢,我现在正在尝试 BeautifulSoup。我只是不喜欢导入太多模块的想法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-30
    • 1970-01-01
    相关资源
    最近更新 更多