获取html页面的编码

     html页面一般都会指定一个编码,如何获取到是处理html页面的第一步,因为错误的编码必然带来后面处理的问题。这里我用python的正则表达式写了个:

import  re

=  [ " <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> " ,
     
' <meta http-equiv=Content-Type content="text/html;charset=gb2312"> ' ,
     
' <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> ' ,
     
' <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> ' ,
     
' <meta http-equiv="content-type" content="text/html; charset=utf-8" /> ' ,
     
' <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> ' ,
     
' <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> '
     ]



=   " <meta[  ]+http-equiv=["']?content-type["']?[  ]+content=["']?text/html;[  ]*charset=([0-9-a-zA-Z]+)["']? "


=  re.compile(b, re.IGNORECASE)


for  ax  in  a:
    r1 
=  B.search(ax)

    
if  r1:
        
print  r1.group()
        
print  r1.group( 1 ), len(r1.group())
    
else :
        
print   ' not match '
    
lxml是一个Python库,用于处理HTML和XML文档,它提供了丰富的API来进行文档的解析、修改和序列化等操作。在使用lxml获取HTML页面内容时,正确的编码非常重要,因为它涉及到字符集的解码问题,直接关系到数据的准确性。 要在lxml中获取页面正确的编码,通常需要查看HTTP响应头中的`Content-Type`字段,该字段会包含字符集信息。例如,对于`text/html; charset=utf-8`的`Content-Type`,页面编码就是`utf-8`。 lxml提供了`etree.HTML()`函数用于解析HTML文档,并且它能够根据文档内部的`<meta>`标签来自动识别文档编码。如果文档内部的编码信息与HTTP响应头中的编码信息不一致,lxml会尝试使用文档内的编码。 下面是一个使用lxml解析HTML获取页面编码的例子: ```python import requests from lxml import html # 发送HTTP请求获取页面内容 response = requests.get('http://example.com') # 解析响应内容 tree = html.fromstring(response.content) # 获取页面编码方式 encoding = response.encoding # 这是从HTTP响应中获取编码信息 # 或者从HTML文档内的<meta>标签中获取编码信息 meta_encoding = tree.xpath("string(/html/@http-equiv)") if meta_encoding.startswith('Content-Type'): _, _, encoding = meta_encoding.partition('charset=') encoding = encoding.strip('"\' ') # 输出编码 print(f"页面编码为: {encoding}") ``` 在上述代码中,我们首先使用`requests`库获取页面内容,并通过HTTP响应对象的`encoding`属性来获取编码。然后,我们使用XPath查询`<html>`标签中的`http-equiv`属性,以确认文档内是否有指定的字符集。需要注意的是,如果页面内有多个`<meta>`标签指定了不同的编码,可能需要额外的逻辑来判断使用哪个编码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值