日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python3 解析html_Python3.x网页抓取HTMLParser

發布時間:2024/10/12 python 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python3 解析html_Python3.x网页抓取HTMLParser 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

HTML操作是編程中很重要的一塊,下面用Python3.x中的html.parser中的HTMLParser類來進行HTML的解析。

HTMLParser類定義及常用方法

標準庫中的定義

class html.parser.HTMLParser(*, convert_charrefs=True)

HTMLParser主要是用來解析HTML文件(包括HTML中無效的標記)

參數convert_charrefs表示是否將所有的字符引用自動轉化為Unicode形式,Python3.5以后默認是True

HTMLParser可以接收相應的HTML內容,并進行解析,遇到HTML的標簽會自動調用相應的handler(處理方法)來處理,用戶需要自己創建相應的子類來繼承HTMLParser,并且復寫相應的handler方法

HTMLParser不會檢查開始標簽和結束標簽是否是一對

常用方法

HTMLParser.feed(data):接收一個字符串類型的HTML內容,并進行解析

HTMLParser.close():當遇到文件結束標簽后進行的處理方法。如果子類要復寫該方法,需要首先調用HTMLParser累的close()

HTMLParser.reset():重置HTMLParser實例,該方法會丟掉未處理的html內容

HTMLParser.getpos():返回當前行和相應的偏移量

HTMLParser.handle_starttag(tag,?attrs):對開始標簽的處理方法。例如

,參數tag指的是div,attrs指的是一個(name,Value)的列表

HTMLParser.handle_endtag(tag):對結束標簽的處理方法。例如

,參數tag指的是div

HTMLParser.handle_data(data):對標簽之間的數據的處理方法。test,data指的是“test”

HTMLParser.handle_comment(data):對HTML中注釋的處理方法。

實例

import json

#For python 3.x

from html.parser import HTMLParser

#定義HTMLParser的子類,用以復寫HTMLParser中的方法

class MyHTMLParser(HTMLParser):

#構造方法,定義data數組用來存儲html中的數據

def __init__(self):

HTMLParser.__init__(self)

self.data = []

#覆蓋starttag方法,可以進行一些打印操作

def handle_starttag(self, tag, attrs):

pass

#print("Start Tag: ",tag)

#for attr in attrs:

# print(attr)

#覆蓋endtag方法

def handle_endtag(self, tag):

pass

#覆蓋handle_data方法,用來處理獲取的html數據,這里保存在data數組

def handle_data(self, data):

if data.count('\n') == 0:

self.data.append(data)

#讀取本地html文件.(當然也可以用urllib.request中的urlopen來打開網頁數據并讀取,這里不做介紹)

htmlFile = open(r"/Users/xualvin/Downloads/TFS.htm",'r')

content = htmlFile.read()

#創建子類實例

parser = MyHTMLParser()

#將html數據傳給解析器進行解析

parser.feed(content)

#對解析后的數據進行相應操作并打印

for item in parser.data:

if item.startswith("{\"columns\""):

payloadDict = json.loads(item)

list = payloadDict["payload"]["rows"]

for backlog in list:

if backlog[1] == "Product Backlog Item" or backlog[1] == "Bug":

print(backlog[2]," Point: ",backlog[3])

當然了,使用Python自帶的HTMLParser還是比較麻煩的,需要手寫處理Html標簽的函數。

建議使用Beautiful Soup,使用方法,猛戳這里!

總結

以上是生活随笔為你收集整理的python3 解析html_Python3.x网页抓取HTMLParser的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。