zoukankan      html  css  js  c++  java
  • 爬虫学习:爬取一个网站的风景图片

    用Python爬取一个网站图片

    先看看主页的规律

    这是他的地址:https://pic.netbian.com/4kfengjing/

    它有200多页

    第3页的地址

    第4页的地址

    发现规律!

    第i页的地址为:https://pic.netbian.com/4kfengjing/index_i.html

    再看看图片的规律

    F12按一下看看

    按照箭头顺序进行元素审查看看

    点进跳转页面看看

    可以发现,跳转页面的url规律,是主页https://pic.netbian.com/拼接上刚刚找到的那个href

    对跳转页面进行元素审查

    注意

    直接上代码

    # -*- coding: utf-8 -*-
    """
    Created on Thu Jul  1 11:40:22 2021
    
    @author: koneko
    """
    
    import requests
    from bs4 import BeautifulSoup
    
    
    
    #主页地址
    home = 'https://pic.netbian.com'
    headers={'User-Agent':'ozilla/5.0 (Windows NT10.0; WOW64
              AppleWebKit/537.36 (KHTML, like Gecko) 
              Chrome/70.0.3538.25 Safari/537.36 
              Core/1.70.3870.400 QQBrowser/10.8.4405.400'}
    
    
    
    n = 0  #下载的图片的序号
    k = 2  #从第二页开始爬起
    while k < 100:  #爬取100个页面的照片
        #获取主页面
        url = 'https://pic.netbian.com/4kfengjing/index_'+str(k)+'.html'
        response = requests.get(url, headers = headers)
        response.encoding = 'gb18030'
        soup = BeautifulSoup(response.text,'html.parser')
        index_page = requests.get(url, headers = headers)
        index_page.encoding = 'gb18030'
        soup = BeautifulSoup(index_page.text,'html.parser')
        #获取页面中 class="clearfix" 的ul板块,缩略图都在里面
        clearfix = soup.find("ul", class_ = "clearfix")
        #找到每一张图片的链接所在的<a>
        a_list = clearfix.find_all('a')
        #处理处最后一张的所有缩略图
        for i in range(len(a_list)-1):
            #拼接得到图片大图跳转页面的url
            newurl = home+a_list[i]['href']
            r = requests.get(newurl)
            newpage = BeautifulSoup(r.text, 'html.parser')
            #获取图片所在板块
            photo_pic = newpage.find(id="img")
            #获取图片下载链接
            pic_url = home+photo_pic.find('img')['src']
            #下载图片
            pic = requests.get(pic_url)
            #图片保存的路径
            save_path = r'E:爬虫图片\'+str(n)+'.jpg'
            print('正在保存第'+str(n)+'张图片...')
            #以二进制写的形式打开
            f = open(save_path,'wb')
            f.write(pic.content)
            n += 1
        k += 1
    

    最后效果


  • 相关阅读:
    maven项目中各文件都没有报错,但是项目名称有红叉
    executeFind()方法和execute()方法区别
    数据库查询
    getHibernateTemplate出现的所有find方法的总结
    HQL和SQL的区别
    Java创建对象的方式
    xml中的<![CDATA[]]>和转义字符
    DWRUtil.addOptions
    dwr
    response.setHeader("Cache-Control","no-cache");的作用
  • 原文地址:https://www.cnblogs.com/urahyou/p/14958325.html
Copyright © 2011-2022 走看看