Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
本Pandas教程中,我們將詳細(xì)介紹如何使用Pandas read_html方法從HTML中獲取數(shù)據(jù)。首先,在最簡(jiǎn)單的示例中,我們將使用Pandas從一個(gè)字符串讀取HTML。其次,我們將通過(guò)幾個(gè)示例來(lái)使用Pandas read_html從Wikipedia表格中獲取數(shù)據(jù)。在之前的一篇文章(關(guān)于Python中的探索性數(shù)據(jù)分析)中,我們也使用了Pandas從HTML表格中讀取數(shù)據(jù)。
在開(kāi)始學(xué)習(xí)Python和Pandas時(shí),為了進(jìn)行數(shù)據(jù)分析和可視化,我們通常從實(shí)踐導(dǎo)入數(shù)據(jù)開(kāi)始。在之前的文章中,我們已經(jīng)了解到我們可以直接在Python中輸入值(例如,從Python字典創(chuàng)建Pandas dataframe)。然而,通過(guò)從可用的源導(dǎo)入數(shù)據(jù)來(lái)獲取數(shù)據(jù)當(dāng)然更為常見(jiàn)。這通常是通過(guò)從CSV文件或Excel文件中讀取數(shù)據(jù)來(lái)完成的。例如,要從一個(gè).csv文件導(dǎo)入數(shù)據(jù),我們可以使用Pandas read_csv方法。這里有一個(gè)如何使用該方法的快速的例子,但一定要查看有關(guān)該主題的博客文章以獲得更多信息。
現(xiàn)在,上面的方法只有在我們已經(jīng)有了合適格式的數(shù)據(jù)(如csv或JSON)時(shí)才有用(請(qǐng)參閱關(guān)于如何使用Python和Pandas解析JSON文件的文章)。
我們大多數(shù)人會(huì)使用Wikipedia來(lái)了解我們感興趣的主題信息。此外,這些Wikipedia文章通常包含HTML表格。
要使用pandas在Python中獲得這些表格,我們可以將其剪切并粘貼到一個(gè)電子表單中,然后,例如使用read_excel將它們讀入Python。現(xiàn)在,這個(gè)任務(wù)當(dāng)然可以用更少的步驟來(lái)完成:我們可以通過(guò)web抓取來(lái)對(duì)它進(jìn)行自動(dòng)化。一定要查看一下什么是web抓取。
當(dāng)然,這個(gè)Pandas讀取HTML教程將要求我們安裝Pandas及其依賴(lài)項(xiàng)。例如,我們可以使用pip來(lái)安裝Python包,比如Pandas,或者安裝一個(gè)Python發(fā)行版(例如,Anaconda、ActivePython)。下面是如何使用pip安裝Pandas: pip install pandas。
注意,如果出現(xiàn)消息說(shuō)有一個(gè)更新版本的pip可用,請(qǐng)查看這篇有關(guān)如何升級(jí)pip的文章。注意,我們還需要安裝lxml或BeautifulSoup4,當(dāng)然,這些包也可以使用pip來(lái)安裝: pip install lxml。
下面是如何使用Pandas read_html從HTML表格中抓取數(shù)據(jù)的最簡(jiǎn)單的語(yǔ)法:
現(xiàn)在我們已經(jīng)知道了使用Pandas讀取HTML表格的簡(jiǎn)單語(yǔ)法,接下來(lái)我們可以查看一些read_html示例。
第一個(gè)示例是關(guān)于如何使用Pandas read_html方法的,我們將從一個(gè)字符串讀取HTML表格。
現(xiàn)在,我們得到的結(jié)果不是一個(gè)Pandas DataFrame,而是一個(gè)Python列表。也就是說(shuō),如果我們使用type函數(shù),我們可以看到:
如果我們想得到該表格,我們可以使用列表的第一個(gè)索引(0)
在第二個(gè)Pandas read_html示例中,我們將從Wikipedia抓取數(shù)據(jù)。實(shí)際上,我們將得到蟒科蛇(也稱(chēng)為蟒蛇)的HTML表格。
現(xiàn)在,我們得到了一個(gè)包含7個(gè)表(len(df))的列表。如果我們?nèi)ikipedia頁(yè)面,我們可以看到第一個(gè)表是右邊的那個(gè)。然而,在本例中,我們可能對(duì)第二個(gè)表更感興趣。
在第三個(gè)示例中,我們將從瑞典的covid-19病例中讀取HTML表。這里,我們將使用read_html方法的一些附加參數(shù)。具體來(lái)說(shuō),我們將使用match參數(shù)。在此之后,我們還需要清洗數(shù)據(jù),最后,我們將進(jìn)行一些簡(jiǎn)單的數(shù)據(jù)可視化操作。
如上圖所示,該表格的標(biāo)題為:“瑞典各郡新增COVID-19病例”。現(xiàn)在,我們可以使用match參數(shù)并將其作為一個(gè)字符串輸入:
通過(guò)這種方式,我們只得到這個(gè)表,但它仍然是一個(gè)dataframes列表。現(xiàn)在,如上圖所示,在底部,我們有三個(gè)需要?jiǎng)h除的行。因此,我們要?jiǎng)h除最后三行。
現(xiàn)在,我們將使用Pandas iloc刪除最后3行。注意,我們使用-3作為第二個(gè)參數(shù)(請(qǐng)確保你查看了這個(gè)Panda iloc教程,以獲得更多信息)。最后,我們還創(chuàng)建了這個(gè)dataframe的一個(gè)副本。
在下一節(jié)中,我們將學(xué)習(xí)如何將多索引列名更改為單個(gè)索引。
現(xiàn)在,我們要去掉多索引列。也就是說(shuō),我們將把2列索引(名稱(chēng))變成唯一的列名。這里,我們將使用DataFrame.columns 和 DataFrame.columns,get_level_values:
最后,正如你在“date”列中所看到的,我們使用Pandas read_html從WikiPedia表格抓取了一些注釋。接下來(lái),我們將使用str.replace方法和一個(gè)正則表達(dá)式來(lái)刪除它們:
現(xiàn)在,我們繼續(xù)使用Pandas set_index將日期列變成索引。這樣一來(lái),我們稍后就可以很容易地創(chuàng)建一個(gè)時(shí)間序列圖。
現(xiàn)在,為了能夠繪制這個(gè)時(shí)間序列圖,我們需要用0填充缺失的值,并將這些列的數(shù)據(jù)類(lèi)型更改為numeric。這里我們也使用了apply方法。最后,我們使用cumsum方法來(lái)獲得列中每個(gè)新值累加后的值:
在最后一個(gè)示例中,我們使用Pandas read_html獲取我們抓取的數(shù)據(jù),并創(chuàng)建了一個(gè)時(shí)間序列圖。現(xiàn)在,我們還導(dǎo)入了matplotlib,這樣我們就可以改變Pandas圖例的標(biāo)題的位置:
在這個(gè)Pandas教程中,我們學(xué)習(xí)了如何使用Pandas read_html方法從HTML中抓取數(shù)據(jù)。此外,我們使用來(lái)自一篇Wikipedia文章的數(shù)據(jù)來(lái)創(chuàng)建了一個(gè)時(shí)間序列圖。最后,我們也可以通過(guò)參數(shù)index_col來(lái)使用Pandas read_html將' Date '列設(shè)置為索引列。
英文原文:https://www.marsja.se/how-to-use-pandas-read_html-to-scrape-data-from-html-tables
譯者:一瞬
前端開(kāi)發(fā)中,經(jīng)常需要獲取用戶(hù)輸入框中的內(nèi)容。本文將介紹幾種常用的JavaScript方法來(lái)獲取輸入框內(nèi)容,幫助您輕松應(yīng)對(duì)獲取輸入框內(nèi)容的需求。
let input = document.getElementById("myInput");
let content = input.value;
console.log(content);
通過(guò) getElementById() 方法獲取輸入框的 DOM 元素。
使用 value 屬性獲取輸入框的文本內(nèi)容。
let input = document.querySelector("#myInput");
let content = input.value;
console.log(content);
使用 querySelector() 方法獲取輸入框的 DOM 元素。
使用 value 屬性獲取輸入框的文本內(nèi)容。
let input = document.getElementById("myInput");
input.onchange = function() {
let content = input.value;
console.log(content);
}
通過(guò) onchange 事件在輸入框內(nèi)容變化時(shí)觸發(fā)函數(shù)。
在事件處理函數(shù)中,使用 value 屬性獲取輸入框的新文本內(nèi)容。
let input = document.getElementById("myInput");
input.oninput = function() {
let content = input.value;
console.log(content);
}
通過(guò) oninput 事件實(shí)時(shí)獲取輸入框內(nèi)容的變化。
在事件處理函數(shù)中,使用 value 屬性獲取輸入框的新文本內(nèi)容。
以上是JavaScript獲取輸入框內(nèi)容的幾種常用方法。您可以根據(jù)具體的需求和場(chǎng)景選擇適合的方法。在實(shí)際開(kāi)發(fā)中,根據(jù)頁(yè)面結(jié)構(gòu)和交互需求選擇最合適的方式獲取輸入框內(nèi)容,以提升用戶(hù)體驗(yàn)。
本文僅供參考,請(qǐng)根據(jù)實(shí)際情況進(jìn)行使用。
在獲取輸入框內(nèi)容時(shí),可以通過(guò)驗(yàn)證和過(guò)濾確保數(shù)據(jù)的安全性。
對(duì)于多個(gè)輸入框,可以使用不同的方法來(lái)獲取各自的內(nèi)容。
題目只能有30個(gè)字,不能寫(xiě)全,其實(shí)今天我們要學(xué)習(xí)的內(nèi)容有三個(gè),第一,下拉列表表單,第二,多行文字輸入表單,第三,數(shù)據(jù)集表單。
開(kāi)始學(xué)習(xí)吧!
前天和昨天我們?cè)凇禜TML表單元素初識(shí)1——零基礎(chǔ)自學(xué)網(wǎng)頁(yè)制作》和《HTML表單元素初識(shí)2——零基礎(chǔ)自學(xué)網(wǎng)頁(yè)制作》中基本上把<input/>標(biāo)簽的type屬性里不同的值進(jìn)行了講解與實(shí)踐,今天我們來(lái)學(xué)習(xí)其他包含在<form></form>之間的元素。
帶有下拉列表的表單
我們?cè)谝恍┚W(wǎng)站填寫(xiě)注冊(cè)信息時(shí),經(jīng)常會(huì)遇到選擇"生活所在地"的操作,因?yàn)橹袊?guó)的地名是固定的,因此頁(yè)面會(huì)為我們提供一個(gè)下拉列表選項(xiàng),我們直接點(diǎn)選即可,就不需要輸入文字了,這樣操作的好處在于不會(huì)出現(xiàn)拼寫(xiě)錯(cuò)誤。例如:
寫(xiě)這個(gè)功能我們需要介紹一組新標(biāo)簽<select></select>。"select"(選擇)。在這個(gè)標(biāo)簽中再添加<option></option>。"option"(選項(xiàng))。這樣就可以寫(xiě)出帶有下拉列表的表單了,示例代碼如下:
<select><option></option></select>
這段代碼我們繼續(xù)在昨天的"表單.html"文件中添加即可,在<input type = "image" src = "img/示例圖片/submit.jpg"/><br>這段代碼之前即可!與這個(gè)圖片提交按鈕共用一個(gè)<form></form>標(biāo)簽!
下面我們?yōu)槎噙x表單添加名稱(chēng),示例代碼如下:
請(qǐng)選擇省份<select><option></option></select>
下面我們添加不同選項(xiàng),示例代碼如下:
請(qǐng)選擇省份
<select >
<option >河北</option>
<option >山東</option>
<option >河南</option>
<option >海南</option>
<option >江蘇</option>
<option >安徽</option>
</select>
<br><br>
為了規(guī)范起見(jiàn),我們?yōu)楸韱涡畔⑻砑觧ame和value屬性,示例代碼如下:
請(qǐng)選擇省份
<select name = "province">
<option value="Hebei">河北</option>
<option value="Shandong">山東</option>
<option value="Henan">河南</option>
<option value="Hainan">海南</option>
<option value="Jiangsu">江蘇</option>
<option value="Anhui">安徽</option>
</select>
<br><br>
大家要注意的是,在下拉列表表單中,name寫(xiě)在<select>中,value寫(xiě)在<option>中。
頁(yè)面效果如下:
這里告訴大家一個(gè)規(guī)律,下拉列表表單默認(rèn)顯示第一個(gè)<option></option>中的文字內(nèi)容。
如果您想改變這個(gè)默認(rèn)顯示,請(qǐng)?jiān)谛枰@示的<option>中添加selected屬性,并賦值為"selected"。
示例代碼如下:
請(qǐng)選擇省份
<select name = "province">
<option value="Hebei">河北</option>
<option value="Shandong">山東</option>
<option value="Henan" selected="selected">河南</option>
<!--選中這個(gè)選項(xiàng)--><option value="Hainan">海南</option><option value="Jiangsu">江蘇</option><option value="Anhui">安徽</option></select><br><br>
頁(yè)面效果如圖:
多行文字輸入表單
我們?cè)谖鞴弦曨l上發(fā)布視頻時(shí)會(huì)被要求填寫(xiě)視頻描述,頁(yè)面中的輸入框不是像下圖這么短的單行輸入框。
而是多行輸入框,如圖:
使用<textarea></textarea>標(biāo)簽即可添加這樣的輸入框,不過(guò)要設(shè)置row(列)和cols(行)屬性的數(shù)值。示例代碼如下:
<br>請(qǐng)簡(jiǎn)要描述您的劇本的情節(jié)<br><textarea row="3" cols="20"></textarea><br>
這段代碼添加到</select><br><br>之后,與其共同使用一個(gè)<form></form>標(biāo)簽。
下面我們?yōu)檫@個(gè)多行輸入框添加一些提示和限制。
首先,添加提示文字,和type="text"的<input/>標(biāo)簽一樣,都是使用placeholder屬性。
第二,我們限制一下字?jǐn)?shù),使用maxlength(最大長(zhǎng)度)屬性。
第三,在頁(yè)面加載完成后,直接讓光標(biāo)停留在輸入框中,使用autofocus屬性。
下面看看如何寫(xiě)吧,示例代碼如下:(不要忘記寫(xiě)好name屬性!)
<br>
請(qǐng)簡(jiǎn)要描述您的劇本的情節(jié)<br>
<textarea row="3" cols="20" name ="storyOutLine"placeholder="最多輸入80字"maxlength="80"autofocus></textarea><br>
頁(yè)面效果如圖:
如果刷新頁(yè)面不能正確顯示,請(qǐng)嘗試關(guān)閉后重新打開(kāi)!
數(shù)據(jù)集表單
數(shù)據(jù)集表單實(shí)際上就是一個(gè)將不同選項(xiàng)或信息打包上傳的設(shè)置。
當(dāng)一組表單元素放到 <fieldset> 標(biāo)簽內(nèi)時(shí),瀏覽器會(huì)以特殊方式來(lái)顯示它們,它們可能有特殊的邊界、3D 效果,或者甚至可創(chuàng)建一個(gè)子表單來(lái)處理這些元素。(W3school)
這個(gè)數(shù)據(jù)集有三個(gè)部分組成,首先是<fliedset></fliedset>,這個(gè)標(biāo)簽不會(huì)顯示,只是告訴瀏覽器這里的數(shù)據(jù)要打包。
第二是<legend></legend>,"legend"(說(shuō)明),這里添加數(shù)據(jù)集名稱(chēng)。
第三就是我們之前學(xué)到的那些標(biāo)簽了。
示例代碼如下:
<fliedset> <legend>信息打包</legend> </fliedset>
下面我們使用這段代碼把form2打包一下吧。示例代碼如下:
<form>
<fieldset><!--開(kāi)始-->
<legend>信息打包</legend><br>
<!--標(biāo)題-->興趣愛(ài)好:<br>
<input type = "checkbox" name = "hobby" value = "reading"/>讀書(shū)
<input type = "checkbox" name = "hobby" value = "film"/>電影
<input type = "checkbox" name = "hobby" value = "painting"/>繪畫(huà)
<input type = "checkbox" name = "hobby" value = "music"/>音樂(lè)
<br>
最高學(xué)歷:<br>
<input type = "radio" name = "education" value = "highSchool"/>高中
<input type = "radio" name = "education" value = "bachelor"/>本科
<input type = "radio" name = "education" value = "master"/>碩士
<input type = "radio" name = "education" value = "doctor"/>博士
<br>
請(qǐng)選擇省份
<select name = "province">
<option value="Hebei">河北</option>
<option value="Shandong">山東</option>
<option value="Henan" selected="selected">河南</option><!--選中這個(gè)選項(xiàng)-->
<option value="Hainan">海南</option>
<option value="Jiangsu">江蘇</option>
<option value="Anhui">安徽</option>
</select>
<br><br><br>
請(qǐng)簡(jiǎn)要描述您的劇本的情節(jié)<br>
<textarea row="3" cols="20" name ="storyOutLine"placeholder="最多輸入80字"maxlength="80"autofocus></textarea>
<br>
</fieldset><!--結(jié)尾-->
<input type = "image" src = "img/示例圖片/submit.jpg"/><br>
<input type="reset" /><br>
<input type = "submit" value = "submit"/>
</form>
頁(yè)面效果如下:
今天的內(nèi)容結(jié)束了!
如果您喜歡我的教程請(qǐng)關(guān)注我,點(diǎn)贊也能讓我充滿(mǎn)動(dòng)力!
HTML序章(學(xué)習(xí)目的、對(duì)象、基本概念)——零基礎(chǔ)自學(xué)網(wǎng)頁(yè)制作
HTML是什么?——零基礎(chǔ)自學(xué)網(wǎng)頁(yè)制作
第一個(gè)HTML頁(yè)面如何寫(xiě)?——零基礎(chǔ)自學(xué)網(wǎng)頁(yè)制作
HTML頁(yè)面中head標(biāo)簽有啥用?——零基礎(chǔ)自學(xué)網(wǎng)頁(yè)制作
初識(shí)meta標(biāo)簽與SEO——零基礎(chǔ)自學(xué)網(wǎng)頁(yè)制作
HTML中的元素使用方法1——零基礎(chǔ)自學(xué)網(wǎng)頁(yè)制作
HTML中的元素使用方法2——零基礎(chǔ)自學(xué)網(wǎng)頁(yè)制作
HTML元素中的屬性1——零基礎(chǔ)自學(xué)網(wǎng)頁(yè)制作
HTML元素中的屬性2(路徑詳解)——零基礎(chǔ)自學(xué)網(wǎng)頁(yè)制作
使用HTML添加表格1(基本元素)——零基礎(chǔ)自學(xué)網(wǎng)頁(yè)制作
使用HTML添加表格2(表格頭部與腳部)——零基礎(chǔ)自學(xué)網(wǎng)頁(yè)制作
使用HTML添加表格3(間距與顏色)——零基礎(chǔ)自學(xué)網(wǎng)頁(yè)制作
使用HTML添加表格4(行顏色與表格嵌套)——零基礎(chǔ)自學(xué)網(wǎng)頁(yè)制作
16進(jìn)制顏色表示與RGB色彩模型——零基礎(chǔ)自學(xué)網(wǎng)頁(yè)制作
HTML中的塊級(jí)元素與內(nèi)聯(lián)元素——零基礎(chǔ)自學(xué)網(wǎng)頁(yè)制作
初識(shí)HTML中的<div>塊元素——零基礎(chǔ)自學(xué)網(wǎng)頁(yè)制作
在HTML頁(yè)面中嵌入其他頁(yè)面的方法——零基礎(chǔ)自學(xué)網(wǎng)頁(yè)制作
封閉在家學(xué)網(wǎng)頁(yè)制作!為頁(yè)面嵌入PDF文件——零基礎(chǔ)自學(xué)網(wǎng)頁(yè)制作
HTML表單元素初識(shí)1——零基礎(chǔ)自學(xué)網(wǎng)頁(yè)制作
HTML表單元素初識(shí)2——零基礎(chǔ)自學(xué)網(wǎng)頁(yè)制作
HTML表單3(下拉列表、多行文字輸入)——零基礎(chǔ)自學(xué)網(wǎng)頁(yè)制作
HTML表單4(form的action、method屬性)——零基礎(chǔ)自學(xué)網(wǎng)頁(yè)制作
HTML列表制作講解——零基礎(chǔ)自學(xué)網(wǎng)頁(yè)制作
為HTML頁(yè)面添加視頻、音頻的方法——零基礎(chǔ)自學(xué)網(wǎng)頁(yè)制作
音視頻格式轉(zhuǎn)換神器與html視頻元素加字幕——零基礎(chǔ)自學(xué)網(wǎng)頁(yè)制作
HTML中使用<a>標(biāo)簽實(shí)現(xiàn)文本內(nèi)鏈接——零基礎(chǔ)自學(xué)網(wǎng)頁(yè)制作
*請(qǐng)認(rèn)真填寫(xiě)需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。