XPath在类中获取一组特定的元素

时间:2019-06-16 18:52:48

标签: python-3.x xpath

您好,升降机在那里

我正在网上搜寻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个多余的多余元素,并且它们都有这段文字“ cititation?user”。

我该怎么做才能摆脱不必要的元素?

我的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 个答案:

答案 0 :(得分:1)

更改xpath以排除带有文本的项目。

rcites    = paperOthers("//*[@id='gs_res_ccl_mid']//a[3][not(contains(.,'citations?user'))]",1)