如何获得在网页中特定的框架和检索其内容(How to get a specific frame in

2019-08-19 06:22发布

我想访问以下网址的翻译结果

http://translate.google.com/translate?hl=en&sl=en&tl=ar&u=http%3A%2F%2Fwww.saltycrane.com%2Fblog%2F2008%2F10%2Fhow-escape-percent-encode-url-python% 2F

翻译被显示在底部内容框出了两帧。 我感兴趣的检索只有底部内容框架得到翻译

硒蟒蛇使我们能够通过网络自动抓取页面的内容:

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>

但如何让底部内容框架要素利用网络自动化检索翻译?

才知道,PyQuery也让我们使用jQuery形式主义浏览内容

更新:

的回答提到,硒提供了一种方法,你可以做到这一点。

frame = browser.find_element_by_tag_name('iframe')
browser.switch_to_frame(frame)
# get page source
browser.page_source

但它并没有在上面的例子中工作。 它返回一个空白页。

Answer 1:

您可以使用driver.switchTo.frame(1); 这里,数字1内帧()存在于所述网页的帧的索引。 作为您的要求是切换到第二帧和所述索引从0开始,则应该使用driver.switchTo.frame(1);

但上面的代码是Java。 在Python中,你可以使用下面的线。

driver.switch_to_frame(1);

UPDATE

 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 ???????

我刚才想打印标题名称SaltCrane是存在的iframe内。 它的工作对我来说除了? 在SaltCrane后的符号。 由于这是阿拉伯语,这是无法解码相同。

上面的代码是Java。 同样的逻辑也应该在Python工作。



Answer 2:

硒提供了一种方法,你可以做到这一点。

frame = browser.find_element_by_tag_name('iframe')
browser.switch_to_frame(frame)
# get page source
browser.page_source


文章来源: How to get a specific frame in a web page and retrieve its content