445浏览
查看: 445|回复: 3

[项目分享] Python模式requests+BeautifulSoup实现的SVG素材爬虫工具

[复制链接]
本帖最后由 转瞬 于 2021-4-9 12:44 编辑

用Mind+做一个应用的时候,我们会用到各种各样的精灵图,但是对于不擅长美术的同学,就会卡壳。幸运的是,网络上有很多的网站提供免费的素材。
面对网络上海量的素材,一个一个下载的话,会很耗费时间。
这个时候我们就可以使用Mind+提供的Python编程模式,开发一个网络爬虫工具,快速的帮我们获取网络上海量的图片素材。

下面的代码仅仅10多行,就可以实现一个网站上的网络图片的下载与保存。
具体的代码注释都有了,有疑问可以留言交流。
  1. #pandas 是基于NumPy 的一种工具,该工具是为解决数据分析任务而创建的。
  2. #Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。
  3. #pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
  4. import pandas as pd
  5. #Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库。
  6. #它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTTP 测试需求。
  7. import requests
  8. #BeautifulSoup是一个可以从HTML或XML文件中提取数据的Python库
  9. from bs4 import BeautifulSoup
  10. header = {
  11.     'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'
  12. }
  13. def main():
  14.     print("程序启动,抓取动物svg素材任务开始")
  15.     #设置sep参数,可以替换分割用的符号;header指定另一行作为标题,没有表头:None
  16.     #读取CSV文件
  17.     file = pd.read_csv('你自己的文件路径/svg_sucai.csv', sep=',', header=0)
  18.     #DataFrame是一个以命名列方式组织的分布式数据集。
  19.     df = pd.DataFrame(file)
  20.     for i in range(1,50):#len(df)
  21.         #读取某一行中的某几列数据
  22.         col1 = df.loc[i,['web-scraper-start-url','animal']]
  23.         #发送http请求获取网页数据
  24.         with requests.get(col1[1]) as response:
  25.             #请求成功时的状态
  26.             if response.status_code==200:
  27.                 #将数据加载到BeautifulSoup中
  28.                 soup = BeautifulSoup(response.text) #,"lxml"
  29.                 #获取文档树中的某一个标签
  30.                 svg_tag=soup.select("a.svg_db")[1]
  31.                 print("%d:%s" %(i,svg_tag.attrs["title"]))
  32.                 #下载数据并保存文件
  33.                 with open("你自己的文件路径/%s.svg" %(svg_tag.attrs["title"]), "wb") as f:
  34.                     with requests.get(svg_tag.attrs["href"], timeout=600, verify=False) as r:  # True表示使用证书验证
  35.                         f.write(r.content)
  36.                         #break #测试使用                        
  37.     print("程序结束,抓取动物svg素材任务完成")
  38. #当**.py**文件被直接运行时,if __name__ ==’__main__'之下的代码块将被运行;
  39. #当.py文件以模块形式被导入时,if __name__ == '__main__'之下的代码块不被运行。
  40. if __name__ == '__main__':
  41.     main()
复制代码



最终获取的文件内容如下:
ThuApril-202104088408..png


欢迎和我一起讨论:鹅群【954092621】

taifyx7986  学徒

发表于 2021-4-9 19:24:04

本帖最后由 taifyx7986 于 2021-4-9 19:25 编辑

面对网络上海量的素材,一个一个下载的话,会很耗费时间。这个时候我们就可以使用Mind+提供的Python编程模式



















回复

使用道具 举报

gray6666  初级技神

发表于 2021-4-12 08:47:54

很棒的案例,果断收藏
回复

使用道具 举报

转瞬  初级技师
 楼主|

发表于 2021-4-12 09:38:32

gray6666 发表于 2021-4-12 08:47
很棒的案例,果断收藏

开心
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2021 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail