Python新手爬蟲二:爬取搜狗圖片(動態)


 經過上一期爬取豆瓣影評成功后,感覺爬蟲還不錯,於是想爬點圖片來玩玩...

搜狗圖片地址:https://pic.sogou.com/?from=category

 

先上最后成功的源碼(在D盤下創建souGouImg文件夾,直接直接代碼即可獲取):

import requests
import urllib
import json
from fake_useragent import UserAgent

def getSougouImag(category,length,path):
    n = length
    cate = category
    imgs_url = []   #定義空列表,用於保存圖片url
    m = 0   #用於顯示圖片數量
    url = 'https://pic.sogou.com/pics/channel/getAllRecomPicByTag.jsp?category='+cate+'&tag=%E5%85%A8%E9%83%A8&start=0&len='+str(n)
    headers = {'user-agent':UserAgent().random}     #設置UA
    f = requests.get(url,headers=headers)      #發送Get請求
    print(f.status_code)
    js = json.loads(f.text)
    js = js['all_items']
    for j in js:
        imgs_url.append(j['thumbUrl'])
    for img_url in imgs_url:
        print('***** '+str(m)+'.jpg *****'+' Downloading...')
        urllib.request.urlretrieve(img_url,path+str(m)+'.jpg')    #下載指定url到本地
        m += 1
    print('Download complete!')

getSougouImag('壁紙',500,r'D:\souGouImg/')

效果圖:

 

下面開始介紹作為一個新手的爬蟲步驟...

1、首先打開網頁查看HTML源碼

先按F12打開調試界面—>右擊圖片—>點擊檢查

會出現如下圖紅框中的信息,不難看出,此圖片的url就是img標簽中src屬性的值。

 

如此簡單?那直接獲取src屬性的值,再進行下載不就完全ok了?

話不多說,開干。

from bs4 import BeautifulSoup
import requests
from fake_useragent import UserAgent   #ua庫

url 'https://pic.sogou.com/pics/recommend?category=%B1%DA%D6%BD&from=home#%E5%85%A8%E9%83%A8%269'
headers = {'user-agent':UserAgent().random}     #設置UA
f = requests.get(url,headers=headers)      #發送Get請求
print(f.status_code)    #打印狀態碼
soup = BeautifulSoup(f.text,'lxml')     #用lxml解析器解析該網頁的內容
print(soup.select('img'))   #篩選出所有img的標簽,並打印其屬性和內容

代碼執行結果如下:

發現打印出的html並不是與網頁中的一致,所有考慮,這根本不是圖片的源url,於是推測圖片是動態的,繼續查找... 也是百度到了某個大佬的文章,才挖掘出以下搜尋方法。

 

2、點擊NetWork—>點擊XHR—>然后往下滾輪,使它加載出新的圖片—>點擊新加載出來的圖片—>再點擊右側的Preview

 發現Preview下的內容為json格式的

發現all_items,點擊它發現有0.....眾多數字,再點開發現有許多url,粘貼到瀏覽器中查看,發現這些都是圖片的url(心中狂喜)

找到圖片的真實URL,問題也就變得簡單了。詳情還是請看代碼注釋吧~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM