bootstrap 表格不用tr td如何写_Pandas还能用来写爬虫?
文末掃碼加入“數(shù)據(jù)分析交流群”
作者:易執(zhí)
轉(zhuǎn)自:Python讀財(ID:gh_69c0d625f9bc)
談及Pandas的read.xxx系列的函數(shù),大家的第一反應(yīng)會想到比較常用的pd.read_csv()和pd.read_excel(),大多數(shù)人估計沒用過pd.read_html()這個函數(shù)。
雖然它低調(diào),但功能非常強大,用于抓取Table表格型數(shù)據(jù)時,簡直是個神器。下面來詳細介紹一下。
大家逛網(wǎng)頁時,經(jīng)常會看到這樣一些數(shù)據(jù)表格,比如:
電影票房數(shù)據(jù)
世界大學(xué)排行榜數(shù)據(jù)
財經(jīng)數(shù)據(jù)
如果查看一下網(wǎng)頁的HTML結(jié)構(gòu)(Chrome瀏覽器F12),會發(fā)現(xiàn)它們有個共同的特點,不僅是表格,還是以Table結(jié)構(gòu)展示的表格數(shù)據(jù),大致的網(wǎng)頁結(jié)構(gòu)如下:
<table?class="..."?id="..."><thead><tr><th>...th>tr>thead><tbody><tr><td>...td>tr><tr>...tr><tr>...tr>????????...<tr>...tr><tr>...tr>????????tbody>table>
針對網(wǎng)頁結(jié)構(gòu)類似的表格類型數(shù)據(jù),pd.read_html()就派上了大用場了,它可以將網(wǎng)頁上的表格都抓取下來,并以DataFrame的形式裝在一個列表中返回。具體是這么個流程:
先介紹一下read_html的一些主要的參數(shù)
read_html
- io :str or file-like接收網(wǎng)址、文件、字符串。網(wǎng)址不接受https,嘗試去掉s后爬去
- header:int or list-like or None指定列標題所在的行
- attrs : dict or None, optional傳遞一個字典,用其中的屬性篩選出特定的表格
- parse_dates:bool解析日期
接下來以爬取新浪財經(jīng)的基金重倉股為例演示一下,URL為:
http://vip.stock.finance.sina.com.cn/q/go.php/vComStockHold/kind/jjzc/index.phtml?p=1
這部分有6頁,點擊不同的頁數(shù)可以發(fā)現(xiàn),請求URL主要是p參數(shù)在變動,p=n代表了第n頁,所以一個for循環(huán)就可以遍歷所有網(wǎng)址啦。URL的變動規(guī)律了解之后,就可以愉快的爬數(shù)據(jù)了,
上代碼:
import pandas as?pd
df = pd.DataFrame()for?i in range(6):
????url = 'http://vip.stock.finance.sina.com.cn/q/go.php/vComStockHold/kind/jjzc/index.phtml?p={page}'.format(page=i+1)
????df = pd.concat([df,pd.read_html(url)[0]])print("第{page}頁完成~".format(page=i+1))
df.to_csv('./data.csv', encoding='utf-8', index=0)
整個過程不需要用到正則表達式或者xpath等工具,短短的幾行代碼就可以將數(shù)據(jù)嗖嗖地爬下來了,是不是超級無敵方便?趕緊動手操作一波吧!
日后在爬一些小型數(shù)據(jù)時,只要遇到這種Table類型的表格,就可以直接祭出read_html這個神器啦,別人還在琢磨正則、xpath怎么寫的時候,你已經(jīng)把數(shù)據(jù)爬完了,想想就很舒服!
-?END -
本文轉(zhuǎn)載自公眾號Python讀財(ID:gh_69c0d625f9bc)總結(jié)
以上是生活随笔為你收集整理的bootstrap 表格不用tr td如何写_Pandas还能用来写爬虫?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 服务的默认端口_Informatica端
- 下一篇: sessionkey 微信小程序获取_微