1. 程式人生 > 程式設計 >Python基於pandas爬取網頁表格資料

Python基於pandas爬取網頁表格資料

以網頁表格為例:https://www.kuaidaili.com/free/

該網站資料存在table標籤,直接用requests,需要結合bs4解析正則/xpath/lxml等,沒有幾行程式碼是搞不定的。

今天介紹的黑科技是pandas自帶爬蟲功能,pd.read_html(),只需傳人url,一行程式碼搞定。

原網頁結構如下:

Python基於pandas爬取網頁表格資料

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格式資料

Python基於pandas爬取網頁表格資料

Python基於pandas爬取網頁表格資料

再次儲存到本地,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檔案

Python基於pandas爬取網頁表格資料

先來了解一下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】

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。