2016-08-30 34 views
0

我正在運行下面的代碼來查找包含Unicode阿拉伯字符的元素。下面的代碼工作得很好,如果我用英文字母替換XXX,但是,如果我用阿拉伯字母替換他們不會。如何搜索包含unicode /阿拉伯字母的元素?

我檢查了html頁面,它具有「< meta charset =」utf-8「>」所以我在第一行設置了我的Py腳本中的字符集,以確保字母被解釋爲預期但仍然不工作。

任何線索都非常感謝它。

感謝

# coding=UTF8 

from selenium import webdriver 
# create a new Firefox session 
driver = webdriver.Firefox() 
driver.implicitly_wait(10) 
driver.get("http://www.norikoptic.com/Product/Women") 
print driver.find_element_by_xpath(u"//*[contains(text(), 'XXX')]").text 
+0

這是否也適用於單阿拉伯字母?也許從右到左與從左到右的文本會有混淆。你有沒有嘗試顛倒阿拉伯字母部分? – janbrohl

回答

0

我想你沒有使用中的XPath正確的Unicode, 檢查在Ipython這裏

首先在演示中,我選擇了一個節點,以獲得相應的Unicode爲阿拉伯語詞,所以使用統一後修改xpath如下,這是輸出。

In [1]: response.xpath('//li[@class="lensItem"]/a/text()').extract() 
Out[1]: [u'\u0639\u062f\u0633\u06cc'] 

In [2]: response.xpath(u'//a[contains(text(), "\u0639\u062f\u0633\u06cc")]/text()').extract() 
Out[2]: 
[u'\u0639\u062f\u0633\u06cc', 
u'\u0639\u062f\u0633\u06cc', 
u'\u0645\u0634\u062e\u0635\u0627\u062a \u0639\u062f\u0633\u06cc \u0622\u0641\u062a\u0627\u0628\u06cc'] 

In [3]: a = response.xpath(u'//a[contains(text(), "\u0639\u062f\u0633\u06cc")]/text()').extract() 

In [4]: for i in a: 
    ...:  print i 
    ...: 
عدسی 
عدسی 
مشخصات عدسی آفتابی 

編輯

我已經測試使用Scrapy中的XPath但這也將與selenium工作,

In [6]: driver.find_element_by_xpath(u'//a[contains(text(), "\u0639\u062f\u0633\u06cc")]').text 
Out[6]: u'\u0639\u062f\u0633\u06cc' 

我希望這將幫助你解決你的問題。

+0

有趣....什麼是「響應」? – user1941390

+0

也找不到演示... ?? !! – user1941390

+0

@ user1941390:現在編輯答案 – Jithin

0

嘗試通過文字在contains從象屬性文件外部文件系統(「XXX」的更換)進行檢查時,Excel等,這是可行的。

乳房在您給xpath的例子中有'u'嗎?

+0

您的意思是使用輸入文件並將編碼設置爲utf8?你可以說得更詳細點嗎?另外,u'lablabla ..'代表unicode('lablabla ..')。 – user1941390

+0

如果嘗試使用相對xpath,我會在嘗試讀取元素的文本時收到以下錯誤消息。 print driver.find_element_by_xpath(u「// table [@ class ='table table-striped']/tbody [1]/tr [1]/td [2]」)。text 'charmap'codec can not在位置0-4編碼字符:字符映射到 user1941390