Python抓取网页数据的终极办法
生活随笔
收集整理的這篇文章主要介紹了
Python抓取网页数据的终极办法
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
假設(shè)你在網(wǎng)上搜索某個項目所需的原始數(shù)據(jù),但壞消息是數(shù)據(jù)存在于網(wǎng)頁中,并且沒有可用于獲取原始數(shù)據(jù)的API。
所以現(xiàn)在你必須浪費30分鐘寫腳本來獲取數(shù)據(jù)(最后花費 2小時)。
這不難但是很浪費時間。
Pandas庫有一種內(nèi)置的方法,可以從名為read_html()的html頁面中提取表格數(shù)據(jù):
https://pandas.pydata.org/importpandasaspdtables = pd.read_html("https://apps.sandiego.gov/sdfiredispatch/")print(tables[0])就這么簡單! Pandas可以在頁面上找到所有重要的html表,并將它們作為一個新的DataFrame對象返回。
https://pandas.pydata.org/pandas-docs/stable/dsintro.html#dataframe
輸入表格0行有列標(biāo)題,并要求它將基于文本的日期轉(zhuǎn)換為時間對象:
''' 遇到問題沒人解答?小編創(chuàng)建了一個Python學(xué)習(xí)交流QQ群:857662006 尋找有志同道合的小伙伴,互幫互助, 群里還有不錯的視頻學(xué)習(xí)教程和PDF電子書! ''' importpandasaspdcalls_df, = pd.read_html("http://apps.sandiego.gov/sdfiredispatch/", header=0, parse_dates=["Call Date"])print(calls_df)得到:
CallDateCallTypeStreetCrossStreets Unit2017-06-0217:27:58Medical HIGHLAND AV WIGHTMAN ST/UNIVERSITY AV E172017-06-0217:27:58Medical HIGHLAND AV WIGHTMAN ST/UNIVERSITY AV M342017-06-0217:23:51Medical EMERSON ST LOCUST ST/EVERGREEN ST E222017-06-0217:23:51Medical EMERSON ST LOCUST ST/EVERGREEN ST M472017-06-0217:23:15Medical MARAUDER WY BARONLN/FROBISHER ST E382017-06-0217:23:15Medical MARAUDER WY BARONLN/FROBISHER ST M41是一行代碼,數(shù)據(jù)不能作為json記錄可用。
''' 遇到問題沒人解答?小編創(chuàng)建了一個Python學(xué)習(xí)交流QQ群:857662006 尋找有志同道合的小伙伴,互幫互助, 群里還有不錯的視頻學(xué)習(xí)教程和PDF電子書! ''' importpandasaspdcalls_df, = pd.read_html("http://apps.sandiego.gov/sdfiredispatch/", header=0, parse_dates=["Call Date"])print(calls_df.to_json(orient="records", date_format="iso"))運行下面的代碼你將得到一個漂亮的json輸出(即使有適當(dāng)?shù)腎SO 8601日期格式):
[{"Call Date":"2017-06-02T17:34:00.000Z","Call Type":"Medical","Street":"ROSECRANS ST","Cross Streets":"HANCOCK ST/ALLEY","Unit":"M21"},{"Call Date":"2017-06-02T17:34:00.000Z","Call Type":"Medical","Street":"ROSECRANS ST","Cross Streets":"HANCOCK ST/ALLEY","Unit":"T20"},{"Call Date":"2017-06-02T17:30:34.000Z","Call Type":"Medical","Street":"SPORTS ARENA BL","Cross Streets":"CAM DEL RIO WEST/EAST DR","Unit":"E20"}// etc...]你甚至可以將數(shù)據(jù)保存到CSV或XLS文件中:
importpandasaspdcalls_df, = pd.read_html("http://apps.sandiego.gov/sdfiredispatch/", header=0, parse_dates=["Call Date"])calls_df.to_csv("calls.csv", index=False)運行并雙擊calls.csv在電子表格中打開:
當(dāng)然,Pandas還可以更簡單地對數(shù)據(jù)進(jìn)行過濾,分類或處理:
總結(jié)
以上是生活随笔為你收集整理的Python抓取网页数据的终极办法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 特别实用的 6 款 Python 特殊文
- 下一篇: 不要再问我Python2和Python3