电竞比分网-中国电竞赛事及体育赛事平台

分享

騷操作!Pandas 還能用來寫爬蟲?

 F2967527 2020-04-13

談及Pandasread.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ù)爬完了,想想就很舒服!


Python中文社區(qū)作為一個去中心化的全球技術(shù)社區(qū),以成為全球20萬Python中文開發(fā)者的精神部落為愿景,目前覆蓋各大主流媒體和協(xié)作平臺,與阿里、騰訊、百度、微軟、亞馬遜、開源中國、CSDN等業(yè)界知名公司和技術(shù)社區(qū)建立了廣泛的聯(lián)系,擁有來自十多個國家和地區(qū)數(shù)萬名登記會員,會員來自以工信部、清華大學(xué)、北京大學(xué)、北京郵電大學(xué)、中國人民銀行、中科院、中金、華為、BAT、谷歌、微軟等為代表的政府機關(guān)、科研單位、金融機構(gòu)以及海內(nèi)外知名公司,全平臺近20萬開發(fā)者關(guān)注。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多