iT邦幫忙

2023 iThome 鐵人賽

DAY 22
1

今天來講爬蟲的套件,以及會比較詳細的聊到urllib


常用的為以下三類

套件種類

  • 內建
    • urllib
  • 第三方套件
    • requests
    • BeautifulSoup

先細講內建的urllib

urllib

  • 可用於對網頁伺服器提出請求

  • 方法(from urllib import request )

    • 使用request.Request()提出請求
      • 請求的同時會把所需資料(headers, cookies, post data)一起帶入
    • 使用request.urlopen()將網頁回傳值打開
  • 輸出為HTML原始碼,為資料型態bytes(”b”開頭)

  • 需要再使用decode(’utf8’),將bytes轉為字串


urllib 使用範例

先簡單舉 財政部台北國稅局 的網站為例:
https://www.ntbt.gov.tw/multiplehtml/d7d124569cf04124ae5a042b4d9f16f7

import requests
from bs4 import BeautifulSoup
from urllib import request

url = 'https://www.ntbt.gov.tw/multiplehtml/d7d124569cf04124ae5a042b4d9f16f7'


res = request.urlopen(url)

print(res.read().decode('utf8'))

可以成功的抓出東西!

但每次都那麼順利嗎?


HTTP Error 403: Forbidden

假設我想一直抓ptt的颱風版資訊,

觀察颱風的走向去猜到底明天有沒有放假/images/emoticon/emoticon37.gif

用相同的程式碼更換網址為颱風版的網址,並執行。

https://ithelp.ithome.com.tw/upload/images/20231007/201625963wryqs4DHH.png

什麼!被擋住了!

如何解決呢?我們明天來解決他。


上一篇
【DAY21】資料庫正規化 (6) 資料庫正規化統整
下一篇
【DAY23】我是安全的user-agent!修改自己的header
系列文
30天全端:關於網站實作的聊聊30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言