Python基於pandas爬取網頁表格資料
阿新 • • 發佈:2020-05-12
以網頁表格為例:https://www.kuaidaili.com/free/
該網站資料存在table標籤,直接用requests,需要結合bs4解析正則/xpath/lxml等,沒有幾行程式碼是搞不定的。
今天介紹的黑科技是pandas自帶爬蟲功能,pd.read_html(),只需傳人url,一行程式碼搞定。
原網頁結構如下:
python程式碼如下:
import pandas as pd url='http://www.kuaidaili.com/free/' df=pd.read_html(url)[0] # [0]:表示第一個table,多個table需要指定,如果不指定預設第一個 # 如果沒有【0】,輸入dataframe格式組成的list df
輸出dataframe格式資料
再次儲存到本地,csv格式,注意中文編碼:utf_8_sig
print(type(df))df.to_csv('free ip.csv',mode='a',encoding='utf_8_sig',header=1,index=0)print('done!')
檢視csv檔案
先來了解一下read_html函式的api:
pandas.read_html(io,match='.+',flavor=None,header=None,index_col=None,skiprows=None,attrs=None,parse_dates=False,tupleize_cols=None,thousands=',',encoding=None,decimal='.',converters=None,na_values=None,keep_default_na=True,displayed_only=True)
常用的引數:
- io:可以是url、html文字、本地檔案等;
- flavor:解析器;
- header:標題行;
- skiprows:跳過的行;
- attrs:屬性,比如 attrs = {'id': 'table'};
- parse_dates:解析日期
注意:返回的結果是**DataFrame**組成的**list**。
若要dataframe,直接取list【0】
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。