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