日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

爬虫实战: 图片的批量爬取

發布時間:2023/12/13 综合教程 22 生活家
生活随笔 收集整理的這篇文章主要介紹了 爬虫实战: 图片的批量爬取 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 找好練習網站(不要惡意爬取,爬取前面10也即可,避免給網站造成壓力)

  網站鏈接:http://www.netbian.com/index.htm

2.實現方法:

  本流程使用requests + bs4進行爬取

  python版本:python3.6(盡量不要使用python2)

3.爬取思路及注意實現:

  分析照片在網站上的真實鏈接

  照片是二進制文件,因此讀取的時候是content,保存的時候是,wb模式

  如何定位照片元素是最重要的:個人建議學習bs4的select方法,簡單好用(后續熟練之后,可以結合多種元素定位方法)

  爬蟲建議使用chrome瀏覽器,簡單好用。

4.完整腳本

#!/usr/bin/env python 
#-*- coding:utf-8 -*-

'''批量爬取網站照片
'''


import requests
from bs4 import BeautifulSoup


headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'
}


class SpiderPhoto(object):
    
    def __init__(self, url):
        self.url = url
        
    
    def get_soup(self):
        '''根據輸入url獲取soup
        '''
        try:
            response = requests.get(self.url, headers=headers)
            print(response)
            response.raise_for_status
            soup = BeautifulSoup(response.text, 'html.parser')
        except Exception as e:
            print('aaaaaaaa',e)
            soup = 'None'
        return soup

    
    def get_all_img_urls(self,soup):
        imgs = soup.select('div.list li a img')
        return [item['src'] for item in imgs]
    
    
    def save_photo(self,imgurl):
        res = requests.get(imgurl)
        name = imgurl.split('/')[-1]
        with open(name, 'wb') as fw:
            fw.write(res.content)
            
    
    def start(self):
        soup = self.get_soup()
        imgs = self.get_all_img_urls(soup)
        
        for imgurl in imgs:
            print('33[1;33m開始爬取圖片: {imgurl}33[0m'.format(**locals()))
            self.save_photo(imgurl)
            



if __name__ == '__main__':
    
    urls = ['http://www.netbian.com/index.htm']
    
    urls += ['http://www.netbian.com/index_{page}.htm'.format(**locals()) for page in range(2,10)]
    
    for page,url in enumerate(urls):
        print('33[1;32m開始爬取第 {} 頁33[0m'.format(page+1))
        pp = SpiderPhoto(url)
        pp.start()
    

5.個人小建議

  本人喜歡輸出一些內容,比如現在爬取多少頁,爬到那個item等等

  因為在爬取過程中,有時候會因為爬蟲限制的問題導致腳本運行失敗,會在不同的頁面報錯,

  這時可以提醒我們,給我們的爬蟲設置一些現在,比如增加等待時間,利用多線程或者多進程的方式,

  減少爬蟲中斷的概率。

歡迎大家討論學習 ~

總結

以上是生活随笔為你收集整理的爬虫实战: 图片的批量爬取的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。