PHP網路爬蟲開發:

入門到進階的爬蟲技術指南

Peter

演講大綱

  • About me

  • 著作的契機
  • 導讀

    • 大綱簡介

    • 技術概念介紹

    • 每篇單元與章節重點提示

  • 延伸補充資料

    • ​那些遺漏在書中的進階爬蟲技術
  • 出版以來的回饋與收穫

Slide

About me

  • Peter
  • GitHub
  • Active open source contributor
  • An associate engineer
    • DevOps
    • Back-end
    • System Architecture Researching
    • Web Application Security
    • PHP, Python and JavaScript
  • Smart Grid Technology (2017~2021)
  • Database, Data platform architecture (2021~)

著作的契機

Joke

Thinking?

Back to 2014

My small story about learning web crawler

有看過這本書嘛?

原作作者

看書實做發生問題

寫信問問作者?

寫信問原作者

原作者回覆

原作者回覆

Screen Scraper Tricks Extracting Data from Difficult Websites

時至今日 

過了6年

沒有新版本的PHP爬蟲書籍

沒有的話,那就自己寫一本吧!

導讀

章節導讀

  • 第1章~第10章

  • 附錄A

範例程式碼

第1章

名詞解釋

網路爬蟲、蜘蛛、機器人

建置開發環境

第2章

案例研究1-1、學校網站

分析學校網站行為

擷取學校網站最新RSS消息實做

解析學校網站最新RSS消息實做

  1. Google Chrome DevTools

  2. HTML/CSS

  3. RSS

  4. DOM

第3章

案例研究1-2、學校網站

分析學校網站動態載入行為

  1. AJAX

  2. HTTP POST Method

  3. Google Chrome Dev Networks

第4章

案例研究2-1、課程查詢網站

分析與實做學校年度課程綱要網站

  1. AJAX

  2. HTTP POST Method

  3. Google Chrome Dev Networks

  4. ASP.NET Forms

分析與實做學校課程查詢網站

學校課程查詢網站爬蟲排錯

第5章

案例研究3-1、證券網站

分析與實做證券網站收盤價檔案下載

  1. HTTP GET Method

  2. Google Chrome Dev tools

  3. ASP.NET

分析、實做與擷取證券網站內容爬蟲

第6章

案例研究4-1、超商雲端列印網站

分析與實做超商雲端列印網站-part1

  1. QRCode

  2. base64 encode/decode

  3. Google Chrome Dev tools

  4. uuid

  5. ramsey/uuid

  6. ASP.NET

分析與實做超商雲端列印網站-part2

第7章

案例整合

學校消息網站爬蟲排程工作整合

  1. Gandi SMTP

  2. MailGun

  3. Cronjob

第8章

進階爬蟲技術介紹

自動操作瀏覽器、無頭瀏覽器

反爬蟲技術介紹------驗證碼

  1. Selenium Web Driver

  2. Headless Chrome

  3. Puppeteer

  4. Tesseract

第9章

案例研究5-1

  1. Tesseract

購物網站身分認證登入研析

購物網站身分認證登入機器人實做

購物網站購物歷史清單爬蟲實做

第10章

案例研究5-2

  1. LocalStorage

  2. chrome-php/chrome

  3. nesk/puphpeteer

網路廣播網站

分析網路廣播網站之錄音檔案下載

網路廣播錄音檔案下載爬蟲實做-part1

網路廣播錄音檔案下載爬蟲實做-part2

附錄A

利用提供OVA檔匯入到VirtualBox

建置運行Labs之開發環境

註冊MailGun帳號以利案例整合章節

補充資料

  1.  擷取非瀏覽器發送HTTP請求

  2. 進階的驗證碼辨識技術

  3. 案例整合—與雲端運算平台的技術

擷取非瀏覽器發送HTTP請求

Desktop App:Lightshot

Lightshot

Lightshot上傳圖片功能

Lightshot上傳圖片功能

Lightshot上傳的圖片連結

https://prnt.sc/1sejtdr

How to upload picture?

如何上傳圖檔到https://prnt.sc?

擷取Desktop App HTTP請求

安裝作業系統環境:Win 10

安裝步驟

安裝步驟

安裝步驟

安裝步驟

安裝步驟

使用方式

打開Fiddler4

設定成non-browser only

設定成non-browser only

信任憑證

篩選non-browser only的請求

Lightshot設定代理伺服器

Lightshot設定代理伺服器

使用Lightshot截圖並上傳檔案

使用Fiddler找到發送的請求

開發上傳圖檔的請求程式

開發上傳圖檔的請求程式

開發上傳圖檔的請求程式

進階驗證碼圖片處理與辨識

進階驗證碼圖片處理與辨識

進階驗證碼圖片處理與辨識

ImageMagick

Install ImageMagick

Install ImageMagick

convert command usage

Gray scale image

Gray scale image with PHP

Gray scale image with PHP

Gray scale image with PHP

<?php

// Threhold captcha image to be gray background
$captchaPath = './captcha1.jpg';
$solvedCaptchaPath = './captcha1_solved.jpg';

$imageMagick = new \Imagick($captchaPath);
$imageMagick->SetColorspace(Imagick::COLORSPACE_GRAY);
$max = $imageMagick->getQuantumRange();
$imageMagick->thresholdImage(0.5 * $max['quantumRangeLong']);
$imageMagick->setImageFormat("png");
file_put_contents($solvedCaptchaPath, $imageMagick);

OCR on Google Cloud support

出版以來的回饋與心得

更多補充資料

參考資料