乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      騷操作!Pandas 還能用來(lái)寫爬蟲?

       F2967527 2020-04-13

      談及Pandasread.xxx系列的函數(shù),大家的第一反應(yīng)會(huì)想到比較常用的pd.read_csv()pd.read_excel(),大多數(shù)人估計(jì)沒(méi)用過(guò)pd.read_html()這個(gè)函數(shù)。

      雖然它低調(diào),但功能非常強(qiáng)大,用于抓取Table表格型數(shù)據(jù)時(shí),簡(jiǎn)直是個(gè)神器。下面來(lái)詳細(xì)介紹一下。

      大家逛網(wǎng)頁(yè)時(shí),經(jīng)常會(huì)看到這樣一些數(shù)據(jù)表格,比如:

      電影票房數(shù)據(jù)

      世界大學(xué)排行榜數(shù)據(jù)

      財(cái)經(jīng)數(shù)據(jù)

      如果查看一下網(wǎng)頁(yè)的HTML結(jié)構(gòu)(Chrome瀏覽器F12),會(huì)發(fā)現(xiàn)它們有個(gè)共同的特點(diǎn),不僅是表格,還是以Table結(jié)構(gòu)展示的表格數(shù)據(jù),大致的網(wǎng)頁(yè)結(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>

      針對(duì)網(wǎng)頁(yè)結(jié)構(gòu)類似的表格類型數(shù)據(jù),pd.read_html()就派上了大用場(chǎng)了,它可以將網(wǎng)頁(yè)上的表格都抓取下來(lái),并以DataFrame的形式裝在一個(gè)列表中返回。具體是這么個(gè)流程:

      先介紹一下read_html的一些主要的參數(shù)

      read_html

      • io :str or file-like

        接收網(wǎng)址、文件、字符串。網(wǎng)址不接受https,嘗試去掉s后爬去

      • header:int or list-like or None

        指定列標(biāo)題所在的行

      • attrs : dict or None, optional

        傳遞一個(gè)字典,用其中的屬性篩選出特定的表格

      • parse_dates:bool

        解析日期

      接下來(lái)以爬取新浪財(cái)經(jīng)的基金重倉(cāng)股為例演示一下,URL為:http://vip.stock.finance.sina.com.cn/q/go.php/vComStockHold/kind/jjzc/index.phtml?p=1

      這部分有6頁(yè),點(diǎn)擊不同的頁(yè)數(shù)可以發(fā)現(xiàn),請(qǐng)求URL主要是p參數(shù)在變動(dòng),p=n代表了第n頁(yè),所以一個(gè)for循環(huán)就可以遍歷所有網(wǎng)址啦。URL的變動(dòng)規(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}頁(yè)完成~'.format(page=i+1))
      df.to_csv('./data.csv', encoding='utf-8', index=0)

      整個(gè)過(guò)程不需要用到正則表達(dá)式或者xpath等工具,短短的幾行代碼就可以將數(shù)據(jù)嗖嗖地爬下來(lái)了,是不是超級(jí)無(wú)敵方便?趕緊動(dòng)手操作一波吧!

      日后在爬一些小型數(shù)據(jù)時(shí),只要遇到這種Table類型的表格,就可以直接祭出read_html這個(gè)神器啦,別人還在琢磨正則、xpath怎么寫的時(shí)候,你已經(jīng)把數(shù)據(jù)爬完了,想想就很舒服!


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

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

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多