之前出爹,我在搜索vscode的快捷鍵的時候再悼,找到一個頁面是以表格的形式呈現(xiàn)vscode的各種快捷鍵操作的(如下圖)。自從學了Python爬蟲后,就形成了一個慣性思維环形,看到網(wǎng)頁中有什么比較好的內(nèi)容策泣,但是復制起來又不是很方便的時候,就會想著如何用Python快速的抓取下來抬吟。下面萨咕,我就來簡單的介紹下我的一些抓取表格的思路和方法。
1.在IE瀏覽器中直接使用導出EXCLE
微軟的這個設計還是很人性化的火本,對于網(wǎng)頁中以表格呈現(xiàn)的內(nèi)容危队,以這種方式存取特別方便。我們需要做的僅僅是在頁面中點擊右鍵選擇導出到EXCEL发侵,就能把頁面中的內(nèi)容導出到單元格中交掏。
這種方式的缺陷是:
- 頁面內(nèi)容比較多時會比較慢,會給人導出失敗的錯覺
- 除了表格中的數(shù)據(jù)刃鳄,頁面中其他的所有內(nèi)容也會導進EXCEL盅弛,需要后續(xù)整理
- 雖然,沒任何技術要求叔锐。但是如果要處理大量頁面時挪鹏,需要一個個頁面去操作,還是比較繁瑣的
2.利用Python抓取網(wǎng)頁中的表格
接下來愉烙,就是本文的重點了讨盒,直接先上代碼。
from bs4 import BeautifulSoup
import requests
import pandas as pd
url = 'https://segmentfault.com/a/1190000007688656'
res = requests.get(url)
soup = BeautifulSoup(res.text, 'lxml')
tables = soup.select('table')
df_list = []
for table in tables:
df_list.append(pd.concat(pd.read_html(table.prettify())))
df = pd.concat(df_list)
df.to_excel('vscode快捷鍵大全.xlsx')
我知道對于許多沒學過編程知識的人步责,可能看到代碼就會望而卻步返顺,我之前也是這樣,因為這對于沒接觸過的人來說是一個相當不舒適的區(qū)域蔓肯。但是遂鹊,這也就是10行代碼,就能完成一個簡單的爬蟲蔗包,重要的是這些代碼是可以復用的秉扑,只需要修改傳入的連接地址。
下面就簡單介紹下代碼的含義:
- 主要用到三個庫:requests,BeautifulSoup和pandas(1-3行)
- 用BeautifulSoup取得table標簽下的表格內(nèi)容(4-7行)
- 用pd.read_html直接把HTML中內(nèi)容讀取為DataFrame (8-11行)
這一步是關鍵调限,pd.read_html方法省去了許多解析HTML的步驟舟陆,否則要用BeautifulSoup一個個抓取表格中內(nèi)容會很繁瑣。里面還用到了prettify()方法耻矮,可以把BeautifulSoup對象變成字符串秦躯,因為pd.read_html處理的是字符串對象 - 最后就是把DataFrame導出到EXCEL(12行)
這樣就完成了一個簡單的抓取一個網(wǎng)頁中所有表格的爬蟲
3.關于選擇方法的建議
最后,我想強調(diào)的一點是淘钟,方法不是我們最終的目的宦赠,我們只是想通過更便捷的方式達到學習內(nèi)容的目的陪毡,所以不要為了追求高大上的方法而迷失了方向米母。
拿本文的為列勾扭,其實獲得vscode快捷鍵操作表格的最好方法是直接在瀏覽器中導出到EXCEL,甚至是直接復制粘貼铁瞒。這樣我們就能把精力專注于學習vscode快捷鍵操作,而不是獲取這個表格的方法妙色。
如果,換個場景慧耍,假設這個表格的內(nèi)容分散在很多很多的網(wǎng)頁中身辨,那我們還是需要編個爬蟲,這樣會更快芍碧。而且煌珊,如果是基于學習python的目的,培養(yǎng)這種挖掘資料的思維也是很重要的泌豆。
所以定庵,關鍵我們要明確自己的目的,根據(jù)相應的目標踪危,選擇最適合的方式蔬浙。
下期預告:下篇文章我將介紹運用正則表達式從地方的統(tǒng)計公報中抓取結構化的數(shù)據(jù)
搜索公眾號:Python__R,回復vscode快捷鍵大全獲取vscode快捷鍵大全.xlsl