確立需求目標
之所以寫爬蟲,肯定是有需求才會寫,不然就沒啥意義了,我們今天這個爬蟲主要的任務就是,輸入一個關鍵字,然后將京東回傳的商品結果按一定的條件取得前十的商品名稱和價格,知道了要干什么,就開始上干貨吧,我也是一個初學者,不喜勿噴啊,
- python3
- urllib庫
- pyquery庫
在爬取之前我們得先了解掌握python這個幾個庫的應用,
實戰操作
第一步:
首先,我們先隨便搜索一個名字,這里以電腦為例演示,通過連接,我們發現上面的域名鏈接里面提取到幾個關鍵字,這個也是我們的重點,先拿到第一步的鏈接,
圖中我們可以看到keyword和wq后面的值都是對應我們搜索的名稱,那么我們后面肯定用的到,我們下面接著分析,先來抓個包看看,F12相信大家都會用,通過觀察,我們發現當我們點擊搜索后,它訪問的第一個鏈接就是最上面的鏈接,引數正是我們輸入的關鍵字,回傳結果是一個網頁源代碼,經過對比正是我們當前的頁面代碼,
第二步:
通過上面的步驟分析,我們已經確定,京東的網頁構造還是相對簡單,直接回傳網頁原始碼,那我們只需用pyquery這個庫的CSS方法提取我們需要的內容就行了,然后我們我們還發現其中的psort引數是代表搜索結果上面的銷量,價格這些的,這個當然是我們點了兩下試出來的,每個網站的構造都不同,這里不做解釋了,下面代碼中我寫出了不同引數代表不同的規則了,你也可以自己手動點一點,看那個引數是什么,下面就不多說了,代碼也是非常簡單,大家自己看吧
import urllib.request import urllib.parse from pyquery import PyQuery as pq #轉換編碼并將鏈接中字符替換掉 shuru=input('此程式為查詢京東商品排行!\n請輸入要查詢的關鍵字:\n') shuru=urllib.parse.quote(shuru) #選擇搜索結果的排序方式 guize=input('請選擇結果排序方式用數字0~5代表:\n0代表綜合,1代表價格由高到低,2代表價格由低到高,3代表銷量,4代表評價數,5代表新品:\n') guize=int(guize) if guize == 0: psort = '' elif guize == 1: psort = '&psort=1' elif guize == 2: psort = '&psort=2' elif guize == 3: psort = '&psort=3' elif guize == 4: psort = '&psort=4' elif guize == 5: psort = '&psort=5' print(psort) headers = { 'user-agent':' Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3741.400 QQBrowser/10.5.3863.400', } #鏈接中psort為商品排行條件,3代表銷量,4代表評論數,5代表新品,2代表價格升序,1代表價格降序,綜合則沒有此引數 url="https://search.jd.com/Search?keyword="+shuru+"&wq="+shuru+psort+"&click=0" print('查詢鏈接為:%s'%(url)) response=urllib.request.Request(url,headers=headers) response=urllib.request.urlopen(response) #上述步驟已經拿到單個網頁的原始碼,后面則進行分析提取有用資料, #用pyquery庫對原始碼處理,然后利用CSS提取所需的資訊 res=pq(response.read().decode('utf-8')) lis=res('.gl-warp.clearfix .gl-i-wrap').items() i=1 for li in lis: ming=li('.p-name em').text() jia=li('.p-price strong i').text() print("第 %d 名\n%s"%(i,ming)) print('價格:¥%s\n\n'%(jia)) i=i+1 if i==11: break input('輸入任意字符退出')
PS:如有需要Python學習資料的小伙伴可以加下方的群去找免費管理員領取
可以免費領取原始碼、專案實戰視頻、PDF檔案等
本文的文字及圖片來源于網路,僅供學習、交流使用,不具有任何商業用途,著作權歸原作者所有,如有問題請及時聯系我們以作處理,
作者:戰九幽
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/65156.html
標籤:Python
上一篇:334遞增的三元子序列
