欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python爬取網(wǎng)頁中的圖片(搜狗圖片)詳解

 更新時(shí)間:2017年03月23日 09:01:53   作者:dearvee  
沒想到python是如此強(qiáng)大,令人著迷,以前看見圖片總是一張一張復(fù)制粘貼,現(xiàn)在好了,學(xué)會python就可以用程序?qū)⒁粡垙垐D片,保存下來。下面這篇文章主要給大家介紹了利用Python3.6爬取搜狗圖片網(wǎng)頁中圖片的相關(guān)資料,需要的朋友可以參考下。

前言

最近幾天,研究了一下一直很好奇的爬蟲算法。這里寫一下最近幾天的點(diǎn)點(diǎn)心得。下面進(jìn)入正文:

你可能需要的工作環(huán)境:

  Python 3.6官網(wǎng)下載

       本地下載

我們這里以sogou作為爬取的對象。

首先我們進(jìn)入搜狗圖片http://pic.sogou.com/,進(jìn)入壁紙分類(當(dāng)然只是個例子Q_Q),因?yàn)槿绻枰廊∧尘W(wǎng)站資料,那么就要初步的了解它…

進(jìn)去后就是這個啦,然后F12進(jìn)入開發(fā)人員選項(xiàng),筆者用的是Chrome。

右鍵圖片>>檢查   

發(fā)現(xiàn)我們需要的圖片src是在img標(biāo)簽下的,于是先試著用 Python 的 requests提取該組件,進(jìn)而獲取img的src然后使用 urllib.request.urlretrieve逐個下載圖片,從而達(dá)到批量獲取資料的目的,思路好了,下面應(yīng)該告訴程序要爬取的url為http://pic.sogou.com/pics/recommend?category=%B1%DA%D6%BD,此url來自進(jìn)入分類后的地址欄。明白了url地址我們來開始愉快的代碼時(shí)間吧:

在寫這段爬蟲程序的時(shí)候,最好要逐步調(diào)試,確保我們的每一步操作正確,這也是程序猿應(yīng)該有的好習(xí)慣。筆者不知道自己算不算個程序猿哈。線面我們來剖析該url指向的網(wǎng)頁。

import requests
import urllib
from bs4 import BeautifulSoup
res = requests.get('http://pic.sogou.com/pics/recommend?category=%B1%DA%D6%BD')
soup = BeautifulSoup(res.text,'html.parser')
print(soup.select('img'))

output:

發(fā)現(xiàn)輸出內(nèi)容并不包含我們要的圖片元素,而是只剖析到logo的img,這顯然不是我們想要的。也就是說需要的圖片資料不在url  即 http://pic.sogou.com/pics/recommend?category=%B1%DA%D6%BD里面。因此考慮可能該元素是動態(tài)的,細(xì)心的同學(xué)可能會發(fā)現(xiàn),當(dāng)在網(wǎng)頁內(nèi),向下滑動鼠標(biāo)滾輪,圖片是動態(tài)刷新出來的,也就是說,該網(wǎng)頁并不是一次加載出全部資源,而是動態(tài)加載資源。這也避免了因?yàn)榫W(wǎng)頁過于臃腫,而影響加載速度。下面痛苦的探索開始了,我們是要找到所有圖片的真正的url 筆者也是剛剛接觸,找這個不是太有經(jīng)驗(yàn)。最后找的位置F12>>Network>>XHR>>(點(diǎn)擊XHR下的文件)>>Preview。

發(fā)現(xiàn),有點(diǎn)接近我們需要的元素了,點(diǎn)開all_items 發(fā)現(xiàn)下面是0 1 2 3...一個一個的貌似是圖片元素。試著打開一個url。發(fā)現(xiàn)真的是圖片的地址。找到目標(biāo)之后。點(diǎn)擊XHR下的Headers

得到第二行

Request URL:

http://pic.sogou.com/pics/channel/getAllRecomPicByTag.jsp?category=%E5%A3%81%E7%BA%B8&tag=%E5%85%A8%E9%83%A8&start=0&len=15&width=1536&height=864,試著去掉一些不必要的部分,技巧就是,刪掉可能的部分之后,訪問不受影響。經(jīng)筆者篩選。最后得到的url:http://pic.sogou.com/pics/channel/getAllRecomPicByTag.jsp?category=%E5%A3%81%E7%BA%B8&tag=%E5%85%A8%E9%83%A8&start=0&len=15  字面意思,知道category后面可能為分類。start為開始下標(biāo),len為長度,也即圖片的數(shù)量。好了,開始愉快的代碼時(shí)間吧:

開發(fā)環(huán)境為Win7  Python 3.6,運(yùn)行的時(shí)候Python需要安裝requests,

Python3.6 安裝requests 應(yīng)該CMD敲入:

pip install requests

筆者在這里也是邊調(diào)試邊寫,這里把最終的代碼貼出來:

import requests
import json
import urllib

def getSogouImag(category,length,path):
 n = length
 cate = category
 imgs = requests.get('http://pic.sogou.com/pics/channel/getAllRecomPicByTag.jsp?category='+cate+'&tag=%E5%85%A8%E9%83%A8&start=0&len='+str(n))
 jd = json.loads(imgs.text)
 jd = jd['all_items']
 imgs_url = []
 for j in jd:
  imgs_url.append(j['bthumbUrl'])
 m = 0
 for img_url in imgs_url:
   print('***** '+str(m)+'.jpg *****'+' Downloading...')
   urllib.request.urlretrieve(img_url,path+str(m)+'.jpg')
   m = m + 1
 print('Download complete!')

getSogouImag('壁紙',2000,'d:/download/壁紙/')

程序跑起來的時(shí)候,筆者還是有點(diǎn)小激動的。來,感受一下:

 

 

至此,關(guān)于該爬蟲程序的編程過程敘述完畢。整體來看,找到需要爬取元素所在url,是爬蟲諸多環(huán)節(jié)中的關(guān)鍵

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • Python文件操作基礎(chǔ)流程解析

    Python文件操作基礎(chǔ)流程解析

    這篇文章主要介紹了Python文件操作基礎(chǔ)流程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Python實(shí)現(xiàn)的微信公眾號群發(fā)圖片與文本消息功能實(shí)例詳解

    Python實(shí)現(xiàn)的微信公眾號群發(fā)圖片與文本消息功能實(shí)例詳解

    這篇文章主要介紹了Python實(shí)現(xiàn)的微信公眾號群發(fā)圖片與文本消息功能,結(jié)合實(shí)例形式詳細(xì)分析了Python調(diào)用微信接口實(shí)現(xiàn)微信公眾號群發(fā)圖片與文本消息的具體操作步驟與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2017-06-06
  • Python使用py2neo操作圖數(shù)據(jù)庫neo4j的方法詳解

    Python使用py2neo操作圖數(shù)據(jù)庫neo4j的方法詳解

    這篇文章主要介紹了Python使用py2neo操作圖數(shù)據(jù)庫neo4j的方法,結(jié)合實(shí)例形式詳細(xì)分析了Python使用py2neo操作圖數(shù)據(jù)庫neo4j的具體步驟、原理、相關(guān)使用技巧與操作注意事項(xiàng),需要的朋友可以參考下
    2020-01-01
  • Python實(shí)現(xiàn)處理圖片水印的方法詳解

    Python實(shí)現(xiàn)處理圖片水印的方法詳解

    這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)處理圖片水印的相關(guān)資料,主要是實(shí)現(xiàn)圖片水印的去除效果,感興趣的小伙伴可以嘗試一下
    2022-11-11
  • python檢查指定文件是否存在的方法

    python檢查指定文件是否存在的方法

    這篇文章主要介紹了python檢查指定文件是否存在的方法,涉及Python基于os模塊判定文件的相關(guān)技巧,非常簡單實(shí)用,需要的朋友可以參考下
    2015-07-07
  • python刪除指定類型(或非指定)的文件實(shí)例詳解

    python刪除指定類型(或非指定)的文件實(shí)例詳解

    這篇文章主要介紹了python刪除指定類型(或非指定)的文件,以實(shí)例形式較為詳細(xì)的分析了Python刪除文件的相關(guān)技巧,需要的朋友可以參考下
    2015-07-07
  • 手把手教你用322行Python代碼編寫貪吃蛇游戲

    手把手教你用322行Python代碼編寫貪吃蛇游戲

    最近在學(xué)Python,想做點(diǎn)什么來練練手,命令行的貪吃蛇一般是C的練手項(xiàng)目,但是一時(shí)之間找不到別的,就先做個貪吃蛇來練練簡單的語法,下面這篇文章主要給大家介紹了關(guān)于如何用322行Python代碼編寫貪吃蛇游戲的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • 在 Python 中解析 ISO 8601 日期的詳細(xì)過程

    在 Python 中解析 ISO 8601 日期的詳細(xì)過程

    這篇文章主要介紹了在 Python 中解析 ISO 8601 日期,我們將討論典型的 ISO 8601 日期的結(jié)構(gòu),并向您展示如何將典型的 DateTime 對象解析為可以在所有地方使用的標(biāo)準(zhǔn)化 DateTime,需要的朋友可以參考下
    2023-08-08
  • 關(guān)于Python3 類方法、靜態(tài)方法新解

    關(guān)于Python3 類方法、靜態(tài)方法新解

    今天小編就為大家分享一篇關(guān)于Python3 類方法、靜態(tài)方法新解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • python項(xiàng)目下生成requirements.txt方法

    python項(xiàng)目下生成requirements.txt方法

    這篇文章主要介紹了python項(xiàng)目下生成requirements.txt的方法,很多小伙伴不知道如何生成requirements.txt,本文就通過代碼示例給大家詳細(xì)介紹如何生成,,需要的朋友可以參考下
    2023-06-06

最新評論