【发布时间】:2022-01-10 09:35:43
【问题描述】:
这是我要解析的页面的 html 代码。 (这是一家书店) Part of the page code
<tr><tr>
<tr><tr>
<tr><tr>
<tr><tr>
<tr><tr>
<tr>
<td width="300" class="highlight">
<b>Издатель:</b>
Додо Пресс,Фантом Пресс
</td>
</tr>
<tr><tr>
<tr><tr>
<tr><tr>
我需要获取以下文本
<b>Издатель:</b>(翻译 - 发布者)
首先我使用了来自 BeautifulSoup 的nextsibling,它工作得很好,但是在同一站点上的其他书籍页面上,出版商元素并不总是在同一个地方,这意味着我的下一个兄弟姐妹链没有得到正确的部分书的描述。
我试图用 Selenium 找到确切的文本“Издатель:”
pubs = driver.find_element(By.XPATH, "//*[text()='Издатель:']")
它完成了这项工作。我收到了文本“Издатель:”。之后,我尝试在“Издатель:”之后找到下一个元素,因为我需要的文本始终位于“Издатель:”之后。
followingsibling 表单 Selenium 不起作用,因为发布者的名称没有类或标签等。
我也试过运行 JS
pubs = driver.find_element(By.XPATH, "//*[text()='Издатель:']")
pub = driver.execute_script("""
return arguments[0].nextElement""", pubs)
pub = driver.execute_script("return document.evaluate('// [text()='Издатель:']/following-sibling::text()[1]'), document, null, XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue.textContent;")
也没有用。
Publisher 元素没有任何兄弟元素或子元素,所以我不知道如何获取它后面的文本。
网站网址 - https://www.bgshop.ru/Catalog/GetFullDescription?id=10652263&type=1
【问题讨论】:
-
那么您想要 Dodo Press、Phantom Press 吗?尝试像 //td[.//b[.='Издатель:']]/text() 作为 xpath。
-
@ArundeepChohan 是的。没错
-
正如您提到的 Издатель:(翻译 - 出版商),您正在寻找的其他元素(英文)是什么?
-
@ArundeepChohan 我收到此错误 selenium.common.exceptions.InvalidSelectorException:消息:无效选择器:xpath 表达式的结果“//td[.//b[.='Издатель:'] ]/text()" 是:[对象文本]。它应该是一个元素。
-
你想要Додо Пресс,Фантом Пресс?
标签: javascript python html selenium parsing