iT邦幫忙

0

從表中采集數據的3種方法

  • 分享至 

  • xImage
  •  

網頁內部以表格格式顯示了大量數據。 但是,當您嘗試將數據存儲到本地計算機以供以後訪問時,可能會非常困難。 問題在於數據無法嵌入HTML內,而無法以CSV等結構化格式下載。 Web抓取是將數據獲取到本地計算機的最簡單方法。
Unicorn Startup

我想向幾乎對編碼一無所知的人介紹3種從表中抓取數據的方法:

  • Google表格
  • Octoparse(網頁抓取工具)
  • R語言(使用rvest軟件包)

Google表格
在Google表格中,有一個很棒的功能,稱為Import Html,它可以使用固定表達式= ImportHtml(URL,“表格”,num)從HTML頁面中的表格中抓取數據。

第1步:打開一個新的Google表格,並將表達式輸入空白。

將顯示該公式的簡要介紹。
Google sheet_importHTML

步驟2:輸入URL,並根據需要調整索引字段。(例如:https://en.wikipedia.org/wiki/Forbes%27_list_of_the_world%27s_highest-paid_athletes)

Google sheet_URLinput

通過上述兩個步驟,我們可以在幾分鐘之內將表格抓取到Google工作表中。 顯然,Google表格是幫助我們直接將表格抓取到Google表格的一種好方法。 但是,存在明顯的局限性。 如果我們計劃使用Google表格跨多個頁面抓取表格,那麼這將是一項平凡的任務。 因此,您需要一種更有效的方法來自動化該過程。

 

使用網頁抓取工具抓取表格
為了更好地說明我的觀點,我將使用此網站向您展示抓取過程,https://www.babynameguide.com/categoryafrican.asp?strCat = African

首先,下載並啟動Octoparse

步驟1:單擊Advanced Mode(高級模式)開始一個新項目。

advanced-mode

第2步:在框中輸入目標URL,然後單擊“保存URL”以在Octoparse內置瀏覽器中打開網站。

enter-the-url

步驟3:通過3次點擊創建分頁:

a)在瀏覽器中單擊“ B”

b)在“操作提示”面板中單擊“全選”

c)在“操作提示”面板中單擊“循環單擊每個URL”

octoparse_pagination-1
octoparse_pagination-2

現在,我們可以看到在工作流框中創建了一個分頁循環。
pagination-3
第4步:點擊以下內容以刮擦表格。

a)單擊表第一行中的第一個單元格
b)單擊“操作提示”面板中的展開圖標,直到整行以綠色突出顯示(通常,標記應為TR)
c)單擊“操作提示”面板中的“選擇所有子元素”,然後單擊“提取數據”和“提取循環中的數據”

octoaprse-scrape-a-table-1
octoaprse-scrape-a-table-3
octoaprse-scrape-a-table-2
octoaprse-scrape-a-table-4

在工作流中構建了用於刮除表格的循環。
octoaprse-scrape-a-table-5

步驟5:提取數據
extract-data

通過以上5個步驟,我們可以獲得以下結果。

由於增加了分頁功能,整個刮削過程變得更加複雜。但是,我們必須承認,Octoparse更好地處理了批量抓取數據。

最令人驚奇的是,我們不需要了解任何編碼方面的知識。就是說,無論我們是不是程序員,我們都可以創建自己的“抓取工具”來獲取所需的數據。如果需要延展阅读,可以参考:https://helpcenter.octoparse.com/hc/en-us/articles/360018324051-Can-I-extract-a-table-form-

但是,如果您碰巧了解一些編碼知識,並且想自己編寫腳本,那麼使用R語言的rvest包是幫助您抓取表格的最簡單方法。

 

R語言(使用rvest軟件包)
在這種情況下,我還以該網站https://www.babynameguide.com/categoryafrican.asp?strCat=African為例,介紹瞭如何使用rvest刮取表格。

在開始編寫代碼之前,我們需要了解有關rvest軟件包的一些基本語法。
 

  • html_nodes():選擇特定文檔中的特定部分。我們可以選擇使用CSS選擇器,例如html_nodes(doc,“ table td”)或xpath選擇器,html_nodes(doc,xpath =“ // table // td”)
  • html_tag():提取標籤名稱。一些類似的是html_text(),html_attr()和html_attrs()
  • html_table():解析HTML表並將其提取到R Framework。

除了上述內容外,還有一些功能可以模擬人類的瀏覽行為。例如,html_session(),jump_to(),follow_link(),back(),forward(),submit_form()等。

在這種情況下,我們需要使用html_table()來實現我們的目標,即從表中抓取數據。

首先下載R(https://cran.r-project.org/)。

步驟1:安裝rvest。
install-rvest

步驟2:開始編寫代碼,如下圖所示。

Library(rvest):導入rvest包
Library(magrittr):導入magrittr包
URL:目標URL
閱讀HTML:從目標URL訪問信息
列表:從表中讀取數據

步驟3:將所有代碼寫入R pen後,單擊“ Enter”運行腳本。 現在我們可以立即獲得表信息。
![rvest_final-result](https://www.octoparse.com/media/7475/rvest_final-result.jpg)

與使用幾行代碼提取表格數據相比,使用網絡抓取工具似乎不需要花費更多的精力。 實際上,編程確實具有陡峭的學習曲線,這通常提高了人們進入Web抓取的真正能力的門檻。 這種情況使不在技術行業工作的人更難獲得競爭優勢來利用Web數據。

 

我希望以上教程可以幫助您大致了解Web抓取工具如何幫助您獲得與程序員輕鬆實現的相同結果。


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
erika
iT邦新手 5 級 ‧ 2020-03-31 11:55:38

文章来源:https://www.octoparse.com/blog/scrape-data-from-a-table

我要留言

立即登入留言