[python]html.parser + Beautifulsoup+GBK编码

本文介绍了使用Python的Beautifulsoup库进行HTML解析,并详细讲述了如何处理GBK编码的网页。内容包括Beautifulsoup的导入、初始化,以及find和find_all方法的使用。同时,针对遇到的GBK编码网站,讨论了如何进行有效处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、HTML解析:Beautifulsoup

       1、import 

from bs4 import BeautifulSoup

       2、初始化

            

soup=BeautifulSoup(HTMLText,"html.parser")

      3、find和find_all

#find_all返回一个bs4.element.Tag对象数组
#find返回bs4.element.Tag对象。
#查找所有div标签
divs=soup.find_all("div")
#查找某个attr(如id)
x=soup.find_all(attrs={"id":"myId"})[0]
x=soup.find(attrs={"id":"myId"})[0]

      4、获取属性值或者innerHTML

     

#属性值读取
attrVal=soup.get("attrName")
#InnerHtml读取
text=soup.get_text()

二、HTML转移符处理:html.parser

import requests
import sys
import os
from bs4 import BeautifulSoup
import urllib
from urllib import parse,request 
import html 
data="""
<td class="text"><input type='hidden' name='637_content' id='637_content' value='<p>一、填空题</p><p>1、D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2、C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3、A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4、B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5、1001&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6、计算1+3+&hellip;+97+99,即100以内的奇数和,执行后的结果是S=2500</p><p>二、编程题</p><p><a href="/meol/common/ckeditor/openfile.jsp?id=DBCPDDDGDFDDDHDBCPDECNDDCOGGHCGN">4-3.frm</a>&nbsp;<a href="/meol/common/ckeditor/openfile.jsp?id=DBCPDDDGDFDDDHDCCPDECNDDCOHGGCHA">4-3.vbp</a>&nbsp;<a href="/meol/common/ckeditor/openfile.jsp?id=DBCPDDDGDFDDDGDHCPDEFPDCDACOGGHCGN">4_20.frm</a>&nbsp;<a href="/meol/common/ckeditor/openfile.jsp?id=DBCPDDDGDFDDDGDICPDEFPDCDACOHGGCHA">4_20.vbp</a>&nbsp;<a href="/meol/common/ckeditor/openfile.jsp?id=DBCPDDDGDFDDDGDJCPDEFPDCDBCOGGHCGN">4_21.frm</a>&nbsp;<a href="/meol/common/ckeditor/openfile.jsp?id=DBCPDDDGDFDDDHDACPDEFPDCDBCOHGGCHA">4_21.vbp</a>&nbsp; <a href="/meol/common/ckeditor/openfile.jsp?id=DBCPDDDGDFDDDHDDCPDEFPDCDCCOGGHCGN">4_22.frm</a>&nbsp;<a href="/meol/common/ckeditor/openfile.jsp?id=DBCPDDDGDFDDDHDECPDEFPDCDCCOHGGCHA">4_22.vbp</a>&nbsp;</p><p>三、应用题</p><p><a href="/meol/common/ckeditor/openfile.jsp?id=DBCPDDDGDFDDDHDFCPDEFPDDDBCOGGHCGN">4_31.frm</a>&nbsp;<a href="/meol/common/ckeditor/openfile.jsp?id=DBCPDDDGDFDDDHDGCPDEFPDDDBCOHGGCHA">4_31.vbp</a></p><p>&nbsp;&nbsp;&nbsp;</p>'><iframe id='_rtf_content637' allowTransparency='true' name='_rtf_content637' src='/meol/common/ckeditor/content.html?name=637' width='100%' height='100%' frameborder='0' scrolling='no' marginheight='0'></iframe> </td>
"""
table=BeautifulSoup(data,"html.parser")
#读取attr
inp=table.find("input").get("value")
#读取innerHTML
#table.get_text()
print(inp)
print(html.parser.unescape(inp))
#print(inp)
三、HTTP POST/GET参数GBK编码

Requests接受的参数默认utf-8编码,但是经常遇到需要gbk编码的网站,自己写了一个。

def urlencode_gbk(kv): 
  rst=""
  for key in kv:
    if len(rst)>0:
      rst+="&" 
    #key
    bStream=bytes(key,encoding="gbk")
    for ch in bStream:
      rst+="%%%02X" %(ch) 
    #val
    rst+="="
    val=kv[key]
    bStream=bytes(val,encoding="gbk")
    for ch in bStream:
      rst+="%%%02X" %(ch)
  return rst


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值