1.大作业的内容
本要求使用python语言以及支持python语言的第三方技术实现爬虫功能,定向爬取网页的图片数据,并且实现批量自动命名分类下载。
2.案例需求
要求采用虚拟浏览器等动态爬虫技术,完成定向图片网站的图片数据,并且实现批量自动命名分类下载,为后续人工智能数据集收集和大数据分析提供可靠的技术栈。
3.概要设计
本系统设计主要的包括以下两个个部分:数据爬取、数据存储。
3.1数据爬取

首先爬虫程序以网站的网址为起始点,分析初始爬取网页URL及其网页信息,所以需要对起始网址进行格式上的分析和构造。完成起始网址的分析后就可以对其分析到的初始URL进行爬取,获取数据。
3.2数据存储
将获取到的数据分类存到文件夹中。
4.详细设计

4.1数据爬取
本次爬虫设计的目标是对要求采用虚拟浏览器等动态爬虫技术,完成定向图片网站的图片数据,并且实现批量自动命名分类下载,数据爬取模块的运行基本流程如图2所示。
4.2数据采集
打开图片网站页面并分析网页源代码结构。分析初始爬取网页URL及其网页信息,对起始网址进行格式上的分析和构造,如该网站图片链接信息,根据网址抓取网页并将网页内容分离开来。
首先,通过pip install parsel下载安装parsel库。
html_str=response.text #text 获取对象里面的额文数据 字符串 --> 正则表达式
pic_url_list=selector_2.xpath(‘//div[@class=“entry-content”]//img/@src’).getall() #获取url地址
4.3数据提取

#遍历每一个图片链接for pic_url in pic_url_list:#发送图片链接请求,获取图片数据img_data=requests.get(url=pic_url,headers=headers).content

4.4数据存储
Python中可采用的存储方式有很多,常用的有json文件、csv文件、excel文件、MySQL数据库等。本案例数据存储为jpg文件格式。
本案例将爬取到的该网站所有图片数据通过os数模块保存到本地。

  1. 通过import os语句导入os模块。
  2. 将下载下来文件按照类别进行分类。
for li in lis:pic_title=li.xpath('.//h2/a/text()').get()  #相册标题,用于保存相册的文件夹名pic_url = li.xpath('.//h2/a/@href').get()   #相册链接print('正在下载相册',pic_title)

效果:


4.5数据可视化
数据可视化分析模块就是使用Pyecharts可视化工具将数据以可视化图表的形式展示出来。将各个文件夹中的图片进行分析统计。
在该功能中,用户可以看到相册文件的名字,文件夹下照片的数量,并将其可视化在图表当中。数据可视化模块流程图如图所示。

5.系统实现
5.1数据爬取功能
数据爬取模块包括数据采集、数据提取等。本爬虫程序爬取该网站的图片链接和文件title名。
数据爬取程序的核心代码部分:

url='https://www.jdlingyu.com/tag/%e5%b0%91%e5%a5%b3'
headers={'user-agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.116 Safari/537.36'}
#发送指定地址请求,请求数据 get post 请求 响应 请求的数据
response=requests.get(url=url,headers=headers)
html_str=response.text  #text 获取对象里面的额文数据 字符串 --> 正则表达式
#print(html_str)#通过xpath提取数据
selector=parsel.Selector(html_str)      #转换数据类型
lis=selector.xpath('//div[@id="post-list"]/ul/li')  #所有的li标签
for li in lis:pic_title=li.xpath('.//h2/a/text()').get()  #相册标题,用于保存相册的文件夹名pic_url = li.xpath('.//h2/a/@href').get()   #相册链接

5.2数据存储功能
数据存储模块的核心代码部分:

#创建相册文件夹if not os.path.exists('img\\' + pic_title):os.mkdir('img\\' + pic_title)#发送相册详情页地址请求response_pic=requests.get(url=pic_url,headers=headers).text #详情页数据selector_2=parsel.Selector(response_pic)pic_url_list = selector_2.xpath('//div[@class="entry-content"]//img/@src').getall() #获取url地址#print(pic_url_list)#遍历每一个图片链接for pic_url in pic_url_list:#发送图片链接请求,获取图片数据img_data=requests.get(url=pic_url,headers=headers).content#准备图片的文件名file_name=pic_url.split('/')[-1]#print(file_name)with open(f'img\\{pic_title}\\{file_name}',mode='wb') as f:f.write(img_data)print('保存完成:',file_name)

5.3数据可视化功能
代码:

list1.append(pic_title)     #将相册名放入list1list2.append(n)      #将相册内的照片数放入list2
bar = Bar()
bar.add_xaxis(list1)    #相册名为x坐标
bar.add_yaxis("相册名",list2)  #相册数量为y坐标
bar.render("show.html")

5.4完整代码
(1)运行环境:python3.x,安装扩展库parsel。
(2)爬虫程序代码:

import requests
import parsel
import os
url='https://www.jdlingyu.com/tag/%e5%b0%91%e5%a5%b3'
headers={'user-agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.116 Safari/537.36'}
#发送指定地址请求,请求数据 get post 请求 响应 请求的数据
response=requests.get(url=url,headers=headers)
html_str=response.text  #text 获取对象里面的额文数据 字符串 --> 正则表达式
#print(html_str)
#通过xpath提取数据
selector=parsel.Selector(html_str)      #转换数据类型
lis=selector.xpath('//div[@id="post-list"]/ul/li')  #所有的li标签
for li in lis:pic_title=li.xpath('.//h2/a/text()').get()  #相册标题,用于保存相册的文件夹名pic_url = li.xpath('.//h2/a/@href').get()   #相册链接print('正在下载相册',pic_title)#创建相册文件夹if not os.path.exists('img\\' + pic_title):os.mkdir('img\\' + pic_title)#发送相册详情页地址请求response_pic=requests.get(url=pic_url,headers=headers).text #详情页数据selector_2=parsel.Selector(response_pic)pic_url_list = selector_2.xpath('//div[@class="entry-content"]//img/@src').getall()#print(pic_url_list)#遍历每一个图片链接for pic_url in pic_url_list:#发送图片链接请求,获取图片数据img_data=requests.get(url=pic_url,headers=headers).content#准备图片的文件名file_name=pic_url.split('/')[-1]#print(file_name)with open(f'img\\{pic_title}\\{file_name}',mode='wb') as f:f.write(img_data)print('保存完成:',file_name)

6.学习心得及体会
通过这段时间的学习,我学会了很多知识。从python的基础语法,到各种各样库的运用。通过老师的讲解,我理解了爬虫的基本原理;通过几次课堂的实践,我体会到爬虫库的强大。我学会了遇到不同的问题使用不同的库,通过对网页的分析,更快地找出想要的内容。从这段课程中,提高的不仅仅是我对爬虫的认识,还有我对python本身的理解。使我在日常学习中,对python这门语言有了更好的认识。

源码分享

from turtle import widthimport requests
import parsel
import os
from pyecharts import options as opts
from pyecharts.charts import Bar
import pandas as pd
url='https://www.jdlingyu.com/tag/%e5%b0%91%e5%a5%b3'
headers={'user-agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.116 Safari/537.36'}
#发送指定地址请求,请求数据 get post 请求 响应 请求的数据
response=requests.get(url=url,headers=headers)
html_str=response.text  #text 获取对象里面的额文数据 字符串 --> 正则表达式
#print(html_str)
#通过xpath提取数据
selector=parsel.Selector(html_str)      #转换数据类型
lis=selector.xpath('//div[@id="post-list"]/ul/li')  #所有的li标签
list1=[]
list2=[]
for li in lis:pic_title=li.xpath('.//h2/a/text()').get()  #相册标题,用于保存相册的文件夹名pic_url = li.xpath('.//h2/a/@href').get()   #相册链接print('正在下载相册',pic_title)n=0#创建相册文件夹if not os.path.exists('img\\' + pic_title):os.mkdir('img\\' + pic_title)#发送相册详情页地址请求response_pic=requests.get(url=pic_url,headers=headers).text #详情页数据selector_2=parsel.Selector(response_pic)pic_url_list = selector_2.xpath('//div[@class="entry-content"]//img/@src').getall() #获取url地址#print(pic_url_list)#遍历每一个图片链接for pic_url in pic_url_list:#发送图片链接请求,获取图片数据img_data=requests.get(url=pic_url,headers=headers).content#准备图片的文件名file_name=pic_url.split('/')[-1]#print(file_name)with open(f'img\\{pic_title}\\{file_name}',mode='wb') as f:f.write(img_data)print('保存完成:',file_name)n+=1list1.append(pic_title)     #将相册名放入list1list2.append(n)      #将相册内的照片数放入list2# print(list1,list2)# dataframe = pd.DataFrame({'相册名': list1, '数量': list2})# print(dataframe)# dataframe.to_excel('list.xls')bar = Bar()
bar.add_xaxis(list1)    #相册名为x坐标
bar.add_yaxis("相册名",list2)  #相册数量为y坐标
bar.set_global_opts(xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-45))
)
bar.render("show.html")

【期末课设】python爬虫基础与可视化,使用python语言以及支持python语言的第三方技术实现爬虫功能,定向爬取网页的图片数据,并且实现批量自动命名分类下载。相关推荐

  1. python批处理实现爬取网页静态图片文件重命名图片统一修改大小等功能

    按照特定字符(此处选为字符'j')分割文档成多个小文档 def main():with open("dir/origin.txt","r") as f:temp ...

  2. 如何使用PHP开发爬虫功能去爬取网页资讯

    如何使用PHP开发爬虫功能去爬取网页资讯 一.网页数据分析 A ) 爬取目标: 比如我们现在需要爬取网页https://brands.cnblogs.com/ 中资讯列表数据. 那我们现在应该怎么分析 ...

  3. [python爬虫] Selenium定向爬取海量精美图片及搜索引擎杂谈

    我自认为这是自己写过博客中一篇比较优秀的文章,同时也是在深夜凌晨2点满怀着激情和愉悦之心完成的.首先通过这篇文章,你能学到以下几点:         1.可以了解Python简单爬取图片的一些思路和方 ...

  4. 用python爬虫爬取网页壁纸图片(彼岸桌面网唯美图片)

    参考文章:https://www.cnblogs.com/franklv/p/6829387.html 今天想给我的电脑里面多加点壁纸,但是嫌弃一个个保存太慢,于是想着写个爬虫直接批量爬取,因为爬虫只 ...

  5. python唯美壁纸_用python爬虫爬取网页壁纸图片(彼岸桌面网唯美图片)

    参考文章:https://www..com/franklv/p/6829387.html 今天想给我的电脑里面多加点壁纸,但是嫌弃一个个保存太慢,于是想着写个爬虫直接批量爬取,因为爬虫只是很久之前学过 ...

  6. python java 爬数据_如何用java爬虫爬取网页上的数据

    当我们使用浏览器处理网页的时候,有时候是不需要浏览的,例如使用PhantomJS适用于无头浏览器,进行爬取网页数据操作.最近在进行java爬虫学习的小伙伴们有没有想过如何爬取js生成的网络页面吗?别急 ...

  7. Python爬取网页中表格数据并导出为Excel文件

    本文使用自己创建的网页进行模拟和演示,在爬取真实网页时,分析网页源代码然后修改代码中的正则表达式即可. 假设某网页源代码为: 在Hbuilder中单击菜单"运行",选择使用Goog ...

  8. python自动换壁纸_Python爬取必应每日图片并实现Windows壁纸自动切换

    不知道大家是否对每日一成不变的壁纸感到厌倦呢?反正对于我个人来说,如果每天打开电脑映入眼帘的都是不同的画面,那么科研热情都会被充分激发,从而提高自己的劳动生产力. 原来使用的是Deepin系统,自己写 ...

  9. 利用Python爬虫爬取网页福利图片

    最近几天,学习了爬虫算法,通过参考书籍,写下自己简单爬虫项目: 爬取某福利网站的影片海报图片 环境:anaconda3.5+spyder3.2.6 目录 1.本节目标 2.准备工作 3.抓取分析 4. ...

最新文章

  1. 【opencv】ubuntu14.04上编译opencv-4.0.1 + opencv_contrib-4.0.1
  2. 特征工程之离散变量处理
  3. 论转发与重定向参数传递问题(jsp+servlet项目开发遇到的问题)
  4. 接受java的返回值_java怎样接受 到return的值的?
  5. 人物-周鸿祎:周鸿祎
  6. 工程项目成本费用明细表_建设工程项目成本明细表模板.xls
  7. 如何学习硬件设计——硬件开发实践篇
  8. 关于NX UG11.0在visual studio中不能创建模板的问题
  9. LeCo-121. 买卖股票的最佳时机
  10. SQL 基础(五)数据查询实战演练一
  11. 电脑解锁后黑屏有鼠标_电脑开机后,显示屏黑屏只有鼠标箭头,怎么回事
  12. ppt怎么把图片做成翻书效果_如何用PPT实现翻书效果?
  13. 学校运动会广播稿计算机,学校运动会广播稿
  14. 功放限幅保护_限幅放大器功能
  15. bzoj 4372 烁烁的游戏——动态点分治+树状数组
  16. iis网站服务器+sql server数据库服务器安全
  17. RT-thread内核之IO设备管理系统
  18. 使用python和tornado实现多人网页聊天程序--界面
  19. 强化学习-策略迭代代码实现
  20. 【笔记6-支付及订单模块】从0开始 独立完成企业级Java电商网站开发(服务端)

热门文章

  1. AutoCAD二次开发之ObjectARX环境搭建(AutoCAD2017 VS2015 Win10)
  2. mysql占位符井号_井字植草砖
  3. 删除计算机用户时拒绝访问权限,Win7系统删除提示文件夹访问被拒绝,您需要权限来执行操作解决方法...
  4. fwrite函数的简介
  5. Wordpress REST API认证
  6. miRanda和mirSVR:预测miRNA结合位点的工具
  7. 中国IDC行业年度综合实力排名前十
  8. SAS中国用户大会:大数据的价值在于分析
  9. 【C语言】复数四则运算
  10. 7-351 狡猾的财主