在翻译的网页数据中缺少信息,谷歌翻译,使用Python

时间:2018-01-12 12:57:35

标签: python python-3.x web-scraping beautifulsoup urllib

我想抓取Google翻译网站并使用Python 3从中获取翻译文本。

这是我的代码:

from bs4 import BeautifulSoup as soup
from urllib.request import Request as uReq
from urllib.request import urlopen as open


my_url = "https://translate.google.com/#en/es/I%20am%20Animikh%20Aich"

req = uReq(my_url, headers={'User-Agent':'Mozilla/5.0'})
uClient = open(req)
page_html = uClient.read()
uClient.close()
html = soup(page_html, 'html5lib')
print(html)

不幸的是,我无法在解析的网页中找到所需的信息。 在chrome“Inspect”中,它显示翻译的文本在里面:

 <span id="result_box" class="short_text" lang="es"><span class="">Yo soy Animikh Aich</span></span>

但是,当我在解析的HTML代码中搜索信息时,这就是我在其中找到的内容:

<span class="short_text" id="result_box"></span>

我尝试使用所有html5lib,lxml,html.parser进行解析。我一直无法找到解决方案。 请帮我解决这个问题。

3 个答案:

答案 0 :(得分:2)

你可以使用特定的python api:

import goslate
gs = goslate.Goslate()
print(gs.translate('I am Animikh Aich', 'es'))
Yo soy Animikh Aich

答案 1 :(得分:1)

JavaScript正在加载后修改HTML代码。 urllib无法处理JavaScript,您必须使用Selenium来获取所需的数据。

对于安装和演示,refer this link

答案 2 :(得分:1)

尝试以下内容获取所需内容:

from bs4 import BeautifulSoup
from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://translate.google.com/#en/es/I%20am%20Animikh%20Aich")
soup = BeautifulSoup(driver.page_source, 'html5lib')
item = soup.select_one("#result_box span").text
print(item)
driver.quit()

输出:

Yo soy Animikh Aich