我正在测试一个网站,其中包含酒店的用户评论,可以是任何语言...即捷克语或俄语或西班牙语或英语等......并且有一个问题,我如何检查文本的语言是通过使用Selenium阅读文本。
例如我正在使用selenium的element.text方法来阅读文本,然后我想检查它是否用英语然后为其他任何语言执行此操作。
这是html元素之一
<div class="innerBubble">
<div class="quote"><a href="/ShowUserReviews-g1-d8729164-r427772133-TAP_Portugal-World.html#CHECK_RATES_CONT" onclick="ta.setEvtCookie('Reviews','title','',0,this.href); setPID();" id="r427772133">“<span class="noQuotes">TRES SATISFAITS</span>”</a></div>
<div class="rating reviewItemInline">
<span class="rate sprite-rating_s rating_s"> <img class="sprite-rating_s_fill rating_s_fill s40" width="56" src="https://static.tacdn.com/img2/x.gif" alt="4 of 5 stars">
</span>
<span class="ratingDate relativeDate" title="October 13, 2016">Reviewed 3 days ago
<span class="new redesigned">NEW</span> </span>
</div>
<div class="googleTranslation reviewItem">
<span class="link" onclick="ta.call('ta.overlays.Factory.reviewTranslate', event, this, '/MachineTranslation?g=1&d=8729164&r=427772133&page=review&sl=fr&tl=en'); ta.trackEventOnPage('Reviews', 'google_translate')">
<img alt="Google Translation" src="https://static.tacdn.com/img2/buttons/googleTranslation.gif">
</span>
</div>
<div class="entry">
<p>
Un peu d'appréhension avant mais vite levée. Très bon accueil et bon service de la part des pnc, repas chaud et bon, même pour ce court vol (1h50). Bonne ponctualité et embarquement des plus efficaces
</p>
</div>
答案 0 :(得分:0)
除非html标签放置当前的lang,否则检测一种不是微不足道的语言。
如果你在python中使用selenium你可以使用这个函数,因为你需要安装nltk和语料库停用词:
from nltk import word_tokenize
from nltk.corpus import stopwords
def detect_lang(text):
lang_ratios = {}
tokens = word_tokenize(text)
words = [word.lower() for word in tokens]
for language in stopwords.fileids():
stopwords_set = set(stopwords.words(language))
words_set = set(words)
common_elements = words_set.intersection(stopwords_set)
lang_ratios[language] = len(common_elements)
return max(lang_ratios, key=lang_ratios.get)
使用此功能,您可以要求使用lang:
lang = detect_lang(text)
if(lang == 'english'):
...
答案 1 :(得分:0)
这里与selenium驱动程序无关只是获取文本并使用下面的代码 如果您需要检测语言以响应用户操作,则可以使用google ajax language API:
#!/usr/bin/env python
import json
import urllib, urllib2
def detect_language(text,
userip=None,
referrer="http://stackoverflow.com/q/4545977/4279",
api_key=None):
query = {'q': text.encode('utf-8') if isinstance(text, unicode) else text}
if userip: query.update(userip=userip)
if api_key: query.update(key=api_key)
url = 'https://ajax.googleapis.com/ajax/services/language/detect?v=1.0&%s'%(
urllib.urlencode(query))
request = urllib2.Request(url, None, headers=dict(Referer=referrer))
d = json.load(urllib2.urlopen(request))
if d['responseStatus'] != 200 or u'error' in d['responseData']:
raise IOError(d)
return d['responseData']['language']
print detect_language("Python - can I detect unicode string language code?")
<强>输出强>
en