網路爬蟲:數據資料的爬取

Python資料科學

什麼是資料科學? 以前叫統計, 現在叫大數據

1、request模組: 讀取網站資料

requests模組可以用Python程式發出HTTP的請求,取得指定網站的內容。 (requests模組使用前必須先安排,在Anaconda中已內建)

練習網頁

1-1、發送GET請求

語法

import request
Response 物件 = requests.get(網址)

物件的屬性可以取得不同的回應內容

指定request讀取網頁時的編碼(UTF-8),預設為ISO-8859-1(又稱Latin-1), 會造成文字亂碼

1-2、認識網頁架構

網頁的內容其實是純文字,網頁是使用HTML語法利用標籤建構內容。

HTML提供了一個文件結構化的表示法DOM(文件物件模型),所有的標籤都由「<...>」包含,大部份都有「開始與結束」標籤

如demo1.html的內容為

<!DOCTYPE html>

<html lang="zh">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

    <title>我是網頁標題</title>
  </head>
  <body>
    <h1 class="large">我是標題</h1>
  <div>
      <p>我是段落</p>
      <p><img src="HTML5_Logo_256.png" alt="我是圖片"></p>
      <p><a href="http://tw.yahoo.com/">我是超連結</a></p>
  </div>
</body>
</html>

2、BeautifulSoup模組:網頁解析

BeautifulSoap模組的功能,是將讀取的網頁原始解析為一個個結構化的物件,讓程式能夠快速取得其中的內容。

要先安裝

pip install -U beautifulsoup4

2-1、BeautifulSoup常用的屬性

常用的屬性有

在HTML中每個標籤都是DOM結構中的結點,使用BeautifulSoup 物件.標籤名稱即可取得該節點中的內容(包含HTML標籤)

在取得的內容加上text屬性,則可去除HTML標籤,取得標籤區域內的文字

2-2、BeautifulSoup常用的方法

加入標籤屬性為搜尋條件,若有多個屬性條件, 則加到後方

find(標籤名稱, 屬性名稱=屬性內容)

find("img", width = 20)

若是屬性為class類別時,因為是保留字,所以要設為 _class=:

sp.find_all("p",class_=:'red')

2-3、利用CSS選擇器找尋內容: select() (*)

使用select()方法就是以CSS選擇器的方式, 尋找資料, 回傳值是串列

3、實作-PTT美食版爬蟲

PPT美食版連結

4、實作-威力彩

威力彩網址

4-2、延伸練習-大樂透

5、批次下載LINE貼圖

https://store.line.me/stickershop/showcase/top/zh-Hant

小戴的相信自己

延伸練習-批次下載網路圖片

6、實作-萌典應用

搭配 https://codebeautify.org/jsonviewer 使用 https://codebeautify.org/jsonviewer

7、實作-非同步載入資料 Ajax 爬蟲

實作: COVID-19資料

網址