~~###### tags: `python` ~~ # IG 爬蟲 note > 折騰了一天 結果圖 (ゝ∀・)b  # header IG ``` 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36' ``` # 正題開始 由於在 IG 上無法直接又見下載圖片,所以就決定來 coding 囉,為了圖片而戰⁽⁽ ◟(∗ ˊωˋ ∗)◞ ⁾⁾ > 再爬 IG 時,會使用到 ```javascript``` 動態頁面的東西(AJAX),可以先去理解一下在繼續 ## 用到的工具 1. requests 2. json 3. BeautifulSoup 4. os ## 找尋圖片位置 你會發現圖片會放在 ```v1Nh3 kIKUG _bz0w``` 下面,按下 ```ctrl + U``` ,會發現找不到該關鍵字,那是因為裡面的內容是動態產生的 找著找會發現其圖片網址是包含於 ```<script type="text/javascript">window._sharedData``` 裡面的,這時就按下 ```F12``` 開始找阿找,會找到圖片是放在這個檔案裡 (json數據快)  對左邊資料案右鍵,就可以找到片位於,```display_url``` 中的 ```nodes``` 裡 接下來當然就是獲取的urls拉 d(・∀・)b ## XHR分析 但裡頭只有 12 張圖片該怎辦? 回到 IG 頁面繼續往下滑,看開發者視窗,會看到不斷有 ```?query_hash=``` 的資料不斷出現,後來加載的圖片都在裡面 那麼該怎麼拿到其他的圖片呢? 你可以看開發者視窗,找阿找,救星出現了  沒錯,下一個請求的資訊就在這裡 而請求的格式是  接著就是把 ```end_cursor``` 裡的資料抓出來,放到 request 的網址裡, ```has_next_page``` 為 ```false``` 時就是沒下一筆資料了  把網址拿去搜尋,會得到一個 json 檔案,再去分析,會找到其他剩餘的圖片,這就是我們要的結果 接下來只要把後來加載的頁面都 run 一遍,找出所有圖片網址,那就大功告成囉(〃∀〃) **(」・ω・)」うー!(/・ω・)/にゃー!** **(」・ω・)」うー!(/・ω・)/にゃー!** **(」・ω・)」うー!(/・ω・)/にゃー!** # Problem ``` requests.exceptions.ChunkedEncodingError: ("Connection broken: ConnectionResetError(10054, '遠端主機已強制關閉一個現存的連線。', None, 10054, None)", ConnectionResetError(10054, ' 遠端主機已強制關閉一個現存的連線。', None, 10054, None)) ``` > 請求次數太多,休息一下就可以了
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up