有一个网站有两个不同语言的网站。当我查看它们时,网站遵循完全相同的 html 结构,但唯一的区别是标签中包含的链接值(在这种情况下,english 指向英语,chinese 指向中文)。我想知道 BeautifulSoup 中是否有一种方便的方法,以便我可以遍历所有包含文本的叶节点并为翻译创建一个查找表。
代码可能如下所示:
www.foo.com/cn/bar/lang=en
<div href="ww.foo.com/cn/bar1/lang=en"><b>This is awesome</b><b>bye<br>bye</b></div>
www.foo.com/cn/bar/lang=cn
<div href="ww.foo.com/cn/bar1/lang=cn"><b>棒极了</b><b>拜<br>拜</b></div>
我想要的输出是这样的:
{'This is awesome': '棒极了' , 'bye': '拜'} (翻译不是那么完美:)
它们不必采用字典的形式,但我认为这将是存储此类信息的最佳类型。
以下是我的一些想法,不确定是否有更好的方法。1. 找到包含英文文本的元素叶子元素,找到选择器之类的东西来唯一定位这个元素,然后在中文网站中,使用选择器(不包括不同的href)来定位对应的元素,然后找到中文翻译。
可能有一种我不知道的方法,我认为它看起来像这样。BeautifulSoup(src).findAllLeaves(text!='') 获取包含文本的所有离开节点的列表。然后对中文网站做同样的事情,它应该包含与英文相同的元素。然后根据这两个列表构建一个查找字典。
或者使用 prettify() 以格式良好的方式列出 HTML 树,然后遍历每一行以找到对应的中文。
让我知道我是否已经足够清楚地描述了我的问题,以及如何实现这一点的任何想法都会有所帮助。也欢迎使用高效的 shell 命令(grep、sed、awk)甚至其他语言。
非常感谢!