python-3.x - 选择元素的文本,但不选择子项的文本
问题描述
我发现自己遇到了以下代码,我试图从中抓取某些信息,例如文本和超链接:
<td class="value">
#1 in Musical Instruments, Stage & Studio (<a href="https://www.amazon.ca/gp/bestsellers/musical-instruments/ref=pd_dp_ts_musical-instruments_1">See top 100</a>)
<ul class="zg_hrsr">
<li class="zg_hrsr_item">
<span class="zg_hrsr_rank">#1</span>
<span class="zg_hrsr_ladder">in <a href="https://www.amazon.ca/gp/bestsellers/musical-instruments/16596681011/ref=pd_zg_hrsr_musical-instruments_1_1_last">Studio Headphones</a></span>
</li>
</ul>
</td>
首先 - 不太重要 - 我不确定为什么下面的文本(从网页中提取)与代码或实际页面中的文本不匹配?
#1 in Musical Instruments, Stage & Studio (See top 100)
#1 in Musical Instruments, Stage & Studio > Studio Recording Equipment > Headphones & In-Ear Monitors > Headphones
这是实际页面上显示的文本。
#1 in Musical Instruments, Stage & Studio (See top 100)
#1 in Studio Headphones
这是我的脚本中从网页中提取文本的部分。
rank_categories = ff.find_elements(By.XPATH, '//*[@id="SalesRank"]/td[2]')
if len(rank_categories) > 0:
rank_categories = rank_categories[0].text
else:
rank_categories = ff.find_element(By.XPATH, '//*[@id="SalesRank"]').text
# rank_categories is td.value
最后——也是最重要的——有什么方法可以提取给定元素的文本,同时排除或不选择子元素的文本?
在上面的示例中,我希望能够分别提取#1 in Musical Instruments, Stage & Studio (See top 100)
、#1
和in Studio Headphones
,以省去编写极其复杂的正则表达式以解析信息的麻烦。
有没有办法只选择所选元素的文本而不选择其子元素的文本?
解决方案
推荐阅读
- c# - 多维数组的索引超出范围
- java - 广播接收器 - 在应用程序之间发送字符串
- matlab - 8邻域元素的设计特征矩阵
- jquery - 如何在 jQuery 中添加 div 内容
- python - 将值附加到空数据框返回 NaN 值
- google-cloud-platform - 如何使用 Oauth 验证方法作为 GoogleCloud 中的常用功能
- mysql - MySQL:按字段递增列
- angular - 类型 User[] 与类型 'User' ngrx angular 没有共同的属性
- java - 如何在没有 ChromeDriver.exe 的情况下从 Selenium 远程 Web 驱动程序启动 GoogleChrome
- django - 不直接相关的 Django 预取表