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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

Python3读取HTML文件

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

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

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)

運行結(jié)果:

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

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

目前支持, “l(fā)xml”, “html5lib”, 和 “html.parser”

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

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。