我对lxml,html很新
我想知道它使用的语言是什么? (例如波斯语 - 英语 - 阿拉伯语......)
我可以在网站上使用meta标签吗?例如---> (Meta标签,http-equiv)。
我该如何阅读该值?
这些标签是否有效,是否经常在网站上使用?
答案 0 :(得分:0)
HTTP标头可能如下所示
内容语言:es
内容类型:text / html; charset = UTF-8
但它表示该文件适用于西班牙语发言者(但并不意味着该文件是用西班牙语撰写的;例如,它可以用英语编写,作为西班牙语语言课程的一部分扬声器)。
或者,引用规范:
Content-Language entity-header字段描述了所包含实体的目标受众的自然语言。请注意,这可能与entity-body中使用的所有语言不同。
如果网站的作者选择使用正确的标记,则应该在根级别。
<html lang="es">
关键字是&#34;选择&#34;。作者没有义务这样做。
检测网站语言的最佳方法是简单地抓取内容并在其上引入机器学习算法。
最简单的是NGrams,它仍然具有很高的准确性(假设有足够的文字可以从中提取信息)。
找到更多信息答案 1 :(得分:0)
lang
属性 HTML文档应该在根级别具有lang
属性,如下所示:
<html lang="sv">
(有关更多信息,请参见W3C "Declaring language in HTML"。)
如果您知道可以依靠正确设置的lang
属性,请使用诸如lxml
或html5lib
之类的HTML解析器来提取该属性。
使用lxml的示例:
import lxml.html
with open("foo.html", "rb") as f:
root = lxml.html.parse(f).getroot()
print(root.attrib.get("lang"))
使用html5lib的示例:
import html5lib
with open("foo.html", "rb") as f:
document = html5lib.parse(f)
print(document.attrib.get("lang"))
但是,在许多网页中,lang
属性未设置或未正确设置为某些默认值。在这种情况下,您应该使用langdetect
之类的软件包来尝试通过机器学习技术来识别(阅读:猜测)内容语言。
使用BeautifulSoup(提取正文)和langdetect(用于语言检测)的示例:
from bs4 import BeautifulSoup
from langdetect import detect
with open("foo.html", "rb") as f:
soup = BeautifulSoup(f)
[s.decompose() for s in soup("script")] # remove <script> elements
body_text = soup.body.get_text()
print(detect(body_text))
答案 2 :(得分:0)
如果 lang="es" 元未在 html 中声明,您可以使用 (langdetect, requests, html2text) 具有以下功能的模块将您的网站 html 转换为文本,然后 autodetect 语言:
让我们先安装模块:
pip install langdetect && pip install requests && pip install html2text
from langdetect import detect
import requests
import html2text
def Detect_Lang(url):
response = requests.get(url) # Requests to get url html
rep = response.text # html
txt=html2text.html2text(rep) # converting html to text
response.close() # Close your Request
return detect(txt) # Return language value Exp: (en, ar, pl, es) ...
linklang=Detect_Lang("https://stackoverflow.com/questions/47199348/how-can-i-get-page-language-of-web-site-with-python") # Run Your Function
print(linklang) # Print Language