五十路熟妇高熟无码视频,无码簧片,亚洲大尺度无码无码专线,亚洲欧美日韩国产自偷,jizz无码在线观看视频,av色综合,99精品国产成人一区二区,亚洲粉嫩av一区二区黑人

PYTHON爬蟲——必應圖片關鍵詞爬取

2018-8-31    seo達人

如果您想訂閱本博客內容,每天自動發(fā)到您的郵箱中, 請點這里

圖片三個網(wǎng)站的圖片搜索結果進行爬取和下載。 
首先通過爬蟲過程中遇到的問題,總結如下: 
1、一次頁面加載的圖片數(shù)量各個網(wǎng)站是不定的,每翻一頁就會刷新一次,對于數(shù)據(jù)量大的爬蟲幾乎都需要用到翻頁功能,有如下兩種方式: 
1)通過網(wǎng)站上的網(wǎng)址進行刷新,例如必應圖片:

url = 'http://cn.bing.com/images/async?q={0}&first={1}&count=35&relp=35&lostate=r
&mmasync=1&dgState=x*175_y*848_h*199_c*1_i*106_r*0'
    
  • 1
  • 2

2)通過selenium來實現(xiàn)模擬鼠標操作來進行翻頁,這一點會在Google圖片爬取的時候進行講解。 
2、每個網(wǎng)站應用的圖片加載技術都不一樣,對于靜態(tài)加載的網(wǎng)站爬取圖片非常容易,因為每張圖片的url都直接顯示在網(wǎng)頁源碼中,找到每張圖片對應的url即可使用urlretrieve()進行下載。然而對于動態(tài)加載的網(wǎng)站就比較復雜,需要具體問題具體分析,例如google圖片每次就會加載35張圖片(只能得到35張圖片的url),當滾動一次后網(wǎng)頁并不刷新但是會再次加載一批圖片,與前面加載完成的都一起顯示在網(wǎng)頁源碼中。對于動態(tài)加載的網(wǎng)站我推薦使用selenium庫來爬取。

對于爬取圖片的流程基本如下(對于可以通過網(wǎng)址實現(xiàn)翻頁或者無需翻頁的網(wǎng)站): 
1. 找到你需要爬取圖片的網(wǎng)站。(以必應為例)

這里寫圖片描述
2. 使用google元素檢查(其他的沒用過不做介紹)來查看網(wǎng)頁源碼。

這里寫圖片描述
3. 使用左上角的元素檢查來找到對應圖片的代碼。

這里寫圖片描述
4. 通過觀察找到翻頁的規(guī)律(有些網(wǎng)站的動態(tài)加載是完全看不出來的,這種方法不推薦)

這里寫圖片描述
從圖中可以看到標簽div,class=’dgControl hover’中的data-nexturl的內容隨著我們滾動頁面翻頁first會一直改變,q=二進制碼即我們關鍵字的二進制表示形式。加上前綴之后由此我們才得到了我們要用的url。 
5. 我們將網(wǎng)頁的源碼放進BeautifulSoup中,代碼如下:

url = 'http://cn.bing.com/images/async?q={0}&first={1}&count=35&relp=35&lostate=r&mmasync=1&dgState=x*175_y*848_h*199_c*1_i*106_r*0' agent = {'User-Agent': "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.165063 Safari/537.36 AppEngine-Google."}
page1 = urllib.request.Request(url.format(InputData, i*35+1), headers=agent)
page = urllib.request.urlopen(page1)
soup = BeautifulSoup(page.read(), 'html.parser')
    
  • 1
  • 2
  • 3
  • 4
  • 5

我們得到的soup是一個class ‘bs4.BeautifulSoup’對象,可以直接對其進行操作,具體內容自行查找。 
首先選取我們需要的url所在的class,如下圖: 
這里寫圖片描述
波浪線是我們需要的url。 
我們由下面的代碼得到我們需要的url:

if not os.path.exists("./" + word):#創(chuàng)建文件夾 os.mkdir('./' + word) for StepOne in soup.select('.mimg'):
    link=StepOne.attrs['src']#將得到的<class 'bs4.element.Tag'>轉化為字典形式并取src對應的value。 count = len(os.listdir('./' + word)) + 1 SaveImage(link,word,count)#調用函數(shù)保存得到的圖片。
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

最后調用urlretrieve()函數(shù)下載我們得到的圖片url,代碼如下:

 try:
        time.sleep(0.2)
        urllib.request.urlretrieve(link,'./'+InputData+'/'+str(count)+'.jpg') except urllib.error.HTTPError as urllib_err:
        print(urllib_err) except Exception as err:
        time.sleep(1)
        print(err)
        print("產(chǎn)生未知錯誤,放棄保存") else:
        print("圖+1,已有" + str(count) + "張圖")
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

這里需要強調是像前面的打開網(wǎng)址和現(xiàn)在的下載圖片都需要使用try except進行錯誤測試,否則出錯時程序很容易崩潰,大大浪費了數(shù)據(jù)采集的時間。 
以上就是對單個頁面進行數(shù)據(jù)采集的流程,緊接著改變url中{1}進行翻頁操作繼續(xù)采集下一頁。 
數(shù)據(jù)采集結果如下: 
這里寫圖片描述

有問題請留言。 

藍藍設計m.wtxcl.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業(yè)提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網(wǎng)站建設 平面設計服務

日歷

鏈接

個人資料

藍藍設計的小編 http://m.wtxcl.cn

存檔

主站蜘蛛池模板: 亚洲成人大香蕉| 亚洲精品9999久久久久| 久久免费精品视频老逼| 强d乱码中文字幕熟女1000部| 狠狠色狠狠色综合久久蜜芽| 亚洲午夜理论片在线观看| 无码中文字| 日本护士╳╳╳hd少妇| 丁香五月亚洲综合在线| 少妇精品导航| 午夜福利理论片高清在线观看| 狠狠躁天天躁夜夜躁婷婷| 国产在线啪| 亚州无码中文字幕日韩AV| 国产乱妇无码毛片A片在线看下载| 岛国在线视频| 四虎亚洲国产成人久久精品| 91孕妇精品一区二区三区| 无人区日本高清完整版| 亚洲精品久久区二区三区蜜桃臀| 日韩人妻OL丝袜AV一二区| 国产成人无码a区在线观看视频app| 亚洲伊人成无码综合网| 丰满少妇人妻无码专区| 7878成人国产在线观看| www.黄| 三原县| 男男车车的车车网站w98免费 | 欧洲AV在线| 国产一级精品毛片基地| 亚洲av本道一区二区三区四区| 国产午夜成人av在线播放| 无码人妻丰满熟妇奶水区码| 国产全肉乱妇杂乱视频| 欧美国产日韩久久mv| 永久免费看mv亚洲| 紫阳县| 欧美一区二区人人喊爽| 99热这里只有精品2| 四虎av永久在线精品免费观看| 色欲av伊人久久大香线蕉影院|