XPath получает определенный набор элементов в классе - PullRequest
0 голосов
/ 16 июня 2019

Здравствуйте, девелоперы там:

Я занимаюсь поиском в сети Google, и у меня проблемы с получением правильного выражения xpath

Когда я проверяю нужные элементы, он возвращает мне такие выражения:

//*[@id="gs_res_ccl_mid"]/div[2]/div[2]/div[3]/a[3]
//*[@id="gs_res_ccl_mid"]/div[3]/div/div[3]/a[3]
// *[@id="gs_res_ccl_mid"]/div[6]/div[2]/div[3]/a[3]

Я получил общее выражение:

//*[@id="gs_res_ccl_mid"]//a[3]

Также попробовал альтернативу, с похожими результатами:

//*[@id="gs_res_ccl_mid"]/div*/div*/div*/a[3]

Вывод выглядит примерно так (я не могу опубликовать весь набор результатов, потому что у меня нет 10 пунктов репутации):

['https://scholar.google.es/scholar?cites=5812018205123467454&as_sdt=2005&sciodt=0,5&hl=es',' https://scholar.google.es/citations?user=EOc3O8AAAAAJ&hl=es&oi=sra', 'https://scholar.google.es/citations?user=nd8O1XQAAAAJ&hl=es&oi=sra',' https://scholar.google.es/scholar?cites=15483392402856138853&as_sdt=2005&sciodt=0,5&hl=es', 'https://scholar.google.es/scholar?cites=7733120668292842687&as_sdt=2005&sciodt=0,5&hl=es',' https://scholar.google.es/scholar?cites=15761030700327980189&as_sdt=2005&sciodt=0,5&hl=es']

Проблема с выводом состоит в том, что есть 3 ненужных дополнительных элемента, и у всех них есть этот фрагмент текста "цитаты? Пользователь".

Что я могу сделать, чтобы избавить меня от нежелательных элементов?

Мой код Python:

def paperOthers(exp,atr=None): 

     thread = browser.find_elements(By.XPATH,(" %s" % exp))

     xArray = []

     for t in thread:
         if atr == 0:
             xThread = t.get_attribute('id')
         elif atr == 1:                
             xThread = t.get_attribute('href')
         else:
             xThread = t.text         
         xArray.append(xThread)  

     return xArray

Которым я звоню:

rcites    = paperOthers("//*[@id='gs_res_ccl_mid']//a[3]",1)

Большое спасибо

1 Ответ

1 голос
/ 16 июня 2019

Измените xpath, чтобы исключить элементы с текстом.

rcites    = paperOthers("//*[@id='gs_res_ccl_mid']//a[3][not(contains(.,'citations?user'))]",1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...