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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

Python3读取HTML文件

發布時間:2024/9/30 HTML 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python3读取HTML文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在學習《Designing Machine Learning Systems with Python》(中文名《機器學習系統設計——Python語言實現》)一書中,在第三章第二節第五小節(P68)讀取HTML文檔數據的代碼中。我發現有些不太懂,就把學習過程記錄下來。
首先,如果你在python3.6環境中照搬書中的代碼的話,你會得到這樣一個錯誤提示,修改方法可以看我之前的博客。

AttributeError: module 'urllib' has no attribute 'request'

然后就可以正常運行了。
修改后代碼:

# import urllib from urllib import request from bs4 import BeautifulSoup import numpy as npurl = request.urlopen("http://interthing.org/dmls/species.html") html = url.read() soup = BeautifulSoup(html, 'lxml') table = soup.find("table") headings = [th.get_text() for th in table.find("tr").find_all("th")]datasets = [] for row in table.find_all("tr")[1:]:dataset = list(zip(headings, (td.get_text() for td in row.find_all("td"))))datasets.append(dataset)nd = np.array(datasets) features = nd[:, 1:, 1].astype('float') targets = (nd[:, 0, 1:]).astype('str') print(features) print(targets)

運行結果:

[[1. 1.][2. 2.][3. 3.]] [['whitefly']['thrip']['aphid']]

我之所以寫這篇博客的原因是我在學習這個代碼時,發現一些不太明白的地方。主要有兩點,一個是在soup = BeautifulSoup(html, 'lxml') 這行代碼中,BeautifulSoup()函數有兩個輸入,而我常見的都是只有一個輸入,這里的第二個參數我好奇到底是什么;另一個不太清楚的是BeautifulSoup中find()和find_all()之間有什么區別。
第二個問題很好解決,只要在網上搜下查下BeautifulSoup的中文文檔就能明白。find()只返回尋找到的第一個匹配的參數,find_all()則返回文檔中全部匹配的參數。
第一個問題在找到的中文文檔中剛開始沒有找到,后來在頁面的后邊找到了(汗(lll¬ω¬),第一次看的是由多不認真),第二個參數是指定對該文檔的解析器的,可供選擇的解析器有

目前支持, “lxml”, “html5lib”, 和 “html.parser”

這個結果告訴我們看文檔不要不耐煩,要認真。(逃ε=ε=ε=┏(゜ロ゜;)┛)

總結

以上是生活随笔為你收集整理的Python3读取HTML文件的全部內容,希望文章能夠幫你解決所遇到的問題。

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