我正在运行以下代码来查找包含Unicode阿拉伯字符的元素。如果我用英文字母替换XXX,下面的代码工作正常,但是,如果我用阿拉伯字母替换它,它就不会。
我检查了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 :(得分:0)
尝试从contains
(替换' XXX')中检查要从外部文件系统(例如属性文件,Excel等)中检查的文本。它可以正常工作。
乳清有' u'在您给出的示例中的xpath之前?
答案 1 :(得分:0)
我认为你没有在xpath中使用正确的unicode,
查看Ipython
这里的演示
首先,我选择了一个节点来获取该阿拉伯语单词的相应unicode,因此在使用该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'
我希望这可以帮助您解决问题。