我想访问以下网址的翻译结果
http://translate.google.com/translate?hl=zh- CN&sl=en&tl=ar&u=http%3A%2F%2Fwww.saltycrane.com%2Fblog%2F2008%2F10%2Fhow- escape-percent-encode-url-python% 2楼
翻译将显示在两个框架中底部的内容框架中。我有兴趣仅检索底部内容框架以获取翻译
Selenium for python允许我们通过Web自动化获取页面内容:
browser.get('http://translate.google.com/#en/ar/'+hurl)
所需的框架是iframe:
<div id="contentframe" style="top:160px"><iframe src="/translate_p?hl=en&am... name=c frameborder="0" style="height:100%;width:100%;position:absolute;top:0px;bottom:0px;"></div></iframe>
但是如何获取底部内容框架元素以使用Web自动化检索翻译呢?
知道PyQuery还允许我们使用JQuery形式主义浏览内容
更新:
一个答案提到Selenium提供了一种您可以执行此操作的方法。
frame = browser.find_element_by_tag_name('iframe') browser.switch_to_frame(frame) # get page source browser.page_source
但在以上示例中无效。它返回一个空白页。
您可以driver.switchTo.frame(1);在此处使用,frame()内的数字1是网页中存在的帧的索引。因为您的要求是切换到第二帧并且索引以0开头,所以您应该使用driver.switchTo.frame(1);
driver.switchTo.frame(1);
但是上面的代码是用Java编写的。在Python中,您可以使用以下行。
driver.switch_to_frame(1);
更新
driver.get("http://translate.google.com/translate?hl=en&sl=en&tl=ar&u=http://www.saltycrane.com/blog/2008/10/how-escape-percent-encode-url-python/"); driver.switchTo().frame(0); System.out.println(driver.findElement(By.xpath("/html/body/div/div/div[3]/h1/span/a")).getText());
输出: SaltyCrane ???????
我刚刚尝试打印iframe中存在的标题名称SaltCrane。它对我有用,除了?SaltCrane之后的符号。由于是阿拉伯语,因此无法对其进行解码。
上面的代码是用Java编写的。同样的逻辑也应该在Python中起作用。