Выберите текст элемента, но не детей - PullRequest
0 голосов
/ 27 сентября 2018

Я обнаружил, что сталкиваюсь со следующим кодом, из которого я пытаюсь очистить определенную информацию, такую ​​как текст и гиперссылки:

<td class="value">
  #1 in Musical Instruments, Stage &amp; 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&nbsp;<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 отдельно, чтобы избавить себя от необходимости писать чрезвычайно сложные регулярные выражения для анализа информации.

Есть ли способ выделить только текст выбранного элемента, но при этомЛектировать текст своих детей?

...