我发现自己遇到了以下代码,我试图从这些代码中抓取某些信息,例如文本和超链接:
<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>
首先(也是更不重要的一点),我不确定为什么从webpage中提取的以下文本与代码或实际页面中的文本不匹配?
#1 in Musical Instruments, Stage & Studio (See top 100)
#1 in Musical Instruments, Stage & Studio > Studio Recording Equipment > Headphones & In-Ear Monitors > Headphones
这是实际在page上显示的文本。
#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
,从而省去了编写顺序非常复杂的正则表达式的麻烦解析信息。
有没有办法只选择所选元素的文本,而不同时选择其子级的文本?