很久之前做的東西。一直沒時間分享,今天有空正好分享出來。
想做個爬取唯品會首頁的商品分類和鏈結的指令碼。第一反應是用beautifulsoup。但是在瀏覽器裡除錯了很久沒有發現鏈結,無奈只能放棄了使用beautifulsoup。
嘗試了抓包,我們看看下面是抓到的包:
我們可以很清楚的看到,兩個介面除了ids這個欄位的值不一樣,其他的東西都是一樣的。我們可以雙擊開啟這兩個介面,就會發現裡面返回的內容正好是我們想要的東西,而且還是json格式,簡直不要太方便啊。那麼接下來就可以通過介面去訪問以下這個介面,進行嘗試。
ok,我們的到了這個,然後怎麼去獲得品牌和鏈結呢?似乎難度不小
首先我要看一下這個到底是什麼資料型別,才可以知道接下來怎麼操作才能得到我需要的內容。
使用print(type(response))來檢查資料型別。
我們可以看到結果是
字典型別的資料。很好,知道了資料型別,接下來我們來看看到底是個幾層的字典。
使用print(len(response))
我們可以看到
好吧,是乙個三層的巢狀的字典。那麼就好辦了。json的解析,必須是像剝洋蔥一樣,一層一層的去解析,這點比較苦逼,不過也不是沒有辦法。
我這裡是通過取key的值,一步一步的剝離到了裡面。
data = response['data']已經剝離出了外面的兩層字典。我們查詢一下,會發現我們需要的品牌名稱和鏈結,是在這個字典的乙個叫items的陣列中。floors = data['floors']
加入這兩行之後,再列印floors看看我們得到了乙個什麼東西
items = floors[str(2)]["items"]for i in items:
print(i["name"], i["link"])
我們通過上面的第一句,去獲得這個字典中的key為items的內容,也就是剛才說的那個items的陣列,然後使用乙個for迴圈,遍歷陣列,列印出陣列中的name和link對應的值。
執行一下,看看結果:
對照著唯品會首頁的第二個分類檢查一下,似乎品牌都沒有錯呢。點選各個鏈結也都能正常的跳轉過去。
selenium例項 唯品會爬取
import json from selenium import webdriver from time import sleep from bs4 import beautifulsoup import urllib.parse class weispider object def init se...
商城商品爬取
from selenium import webdriver import time import csv 接受使用者輸入 訪問京東 pro input 請輸入要爬取的商品 driver webdriver chrome driver get i 1 傳送文字到搜尋框 text driver fin...
爬取京東商品
一 進入京東主頁 二 進入商品詳情頁 2 商品名稱 3 商品 from selenium import webdriver 用來驅動瀏覽器的 相當於模擬人的點選事件來連續的訪問瀏覽器 from selenium.webdriver import actionchains 破解滑動驗證碼的時候用的 可...