hello,大家好,今天又跟大家見面了,提到爬蟲,大家都能想到什么?request?scrapy?hai'y還有什么呢?大家知不知道,pandas也有一個神奇的功能,爬數據?你此刻內心的想法yi'ding一定是這樣d的?what?沒逗我吧?大家一起來看一看吧!
pandas除了k可以讀取Excel、csv文件還可以讀取html文件,利用這個方法可以直接爬蟲網頁的Table表格型數據,無需敲更多的爬蟲代碼,簡單!粗暴!
查看HTML結構,如果發現是下面這個table格式的,那直接可以上手開干。
<table class="..." id="...">
<thead>
<tr>
<th>...</th>
</tr>
</thead>
<tbody>
<tr>
<td>...</td>
</tr>
<tr>...</tr>
<tr>...</tr>
...
<tr>...</tr>
<tr>...</tr>
</tbody>
</table>
下面我們來看下如何操作。
一、使用方法
舉一個例子,拿wiki百科上的各國家收入的頁面抓取演示一下。
這個頁面中有非常多的表格,符合我們的要求,直接使用read_html,它可以自動將網頁的所有表格數據全部抓取下來。代碼如下:
import pandas as pd
url = 'https://en.wikipedia.org/wiki/Gross_national_income'
tables = pd.read_html(url)
這里返回的tables是一個DataFrames的列表,每個DataFrame就是網頁中從上到下順序的數據表格。因此,可以用列表的切片tables[x]來提取網頁指定的表格數據。
比如,我們對第4個表格感興趣,那么直接:
talbes[3]
當然,上面表格看起來有點別扭,我們可以簡單幾個操作調整一下表結構。
df = tables[3].droplevel(0, axis=1)
.rename(columns={'No.':'No', 'GDP[10]':'GDP'})
.set_index('No')
這樣看起來就好多了。