• 爬虫实例——从mindat上爬取矿石图片


    ​实战网站:

            Mindat是国际互联网上最大的矿物数据库平台和矿物参考资源网站,提供世界各地的矿物数据和矿物数据,许多地质人员更新最新的矿物信息、矿物来源、图片、存储等数据资源。

    信息获取:

            登录网址——

            搜索目标矿石——

            此处以 gold 为例:

             进入目标矿石界面——

    进入后点击 Photos of Gold ,进入下一个界面—— 

            注意此时的 url:https://www.mindat.org/gallery.php?min=1720 尚不能满足爬取图片所需url的要求,因为爬取过程中需要刷新,进行翻页,这个url只能是程序爬取一页的图片

            往下翻,底部出现页数标签,点击任一页数,此处点2,3作实列,进入以下界面

           注意此时url发生变化,url:https://www.mindat.org/gallery.php?cform_is_valid=1&min=1720&photoclass=1&showtype=1&orderxby=&cf_pager_page=2

    https://www.mindat.org/gallery.php?cform_is_valid=1&min=1720&photoclass=1&showtype=1&orderxby=&cf_pager_page=3

            此时url带这页数信息,观察两个url,发现两者不同之处只有页数, page=页数 ,也就是说,只要我们更改url中页数数字,就能利用它得到所有图片。

            接下来获取总页数,滑倒底部,那里直接写明了,记下即可

     page 1 of 490 :所以矿石Gold图片有490页。 

    1. import json
    2. import requests
    3. import re
    4. import os #为了存储爬取的图片,建立文件夹
    5. if not os.path.exists('./gold'):#查找当前目录是否有目标文件夹(用于存储图片)
    6. os.mkdir('./gold')#如没有,则在当前目录新建文件夹
    7. url='https://www.mindat.org/gallery.php?cform_is_valid=1&min=1720&photoclass=1&showtype=1&orderxby=&cf_pager_page=' #去掉页数的url
    8. headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 SLBrowser/7.0.0.12151 SLBChan/103'}
    9. for pagen in range(1,491):#加上页数,遍历每一页,左闭右开区间,所以写491而不是490;
    10. new_url=url+str(pagen)
    11. page_text=requests.get(url=new_url,headers=headers).text
    12. ex='/imagecache.*?jpg'
    13. image_scr=re.findall(ex,page_text,re.S)
    14. print(image_scr)
    15. for src in image_scr:
    16. src="https://www.mindat.org/" + src
    17. image_data=requests.get(url=src,headers=headers).content
    18. #生成图片名称
    19. image_name=src.split('/')[-1]
    20. #图片存储路径
    21. image_path='./gold/'+image_name
    22. with open(image_path,'wb') as fp:
    23. fp.write(image_data)
    24. print('over')
    25. print("下载完成")

  • 相关阅读:
    k8s部署gateway、nacos 、app通过网关访问app出现404
    51单片机电子钟闹钟温度LCD1602液晶显示设计( proteus仿真+程序+原理图+设计报告+讲解视频)
    IDM(Internet Download Manager)2024免激活绿色版下载
    spark集群部署(第三弹)
    实现简易minishell
    es分布式全文搜索引擎介绍、下载和安装、索引操作、文档操作
    深入理解Linux内核——内存管理(4)——伙伴系统(1)
    深入理解JVM-类加载与字节码技术
    OpenFeign不支持{}特殊字符的header解决
    给定一个数组arr,长度为N且每个值都是正数,代表N个人的体重。再给定一个正数 limit,代表一艘船的载重。
  • 原文地址:https://blog.csdn.net/weixin_62599885/article/details/126110348