爬虫----爬取网页图片(以大熊猫为例)

2023-12-22 22:40

本文主要是介绍爬虫----爬取网页图片(以大熊猫为例),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

什么是爬虫?

爬虫就是自动获取网页内容的程序,例如搜索引擎,Google,Baidu 等,每天都运行着庞大的爬虫系统,从全世界的网站中爬虫数据,供用户检索时使用。

爬虫流程

其实把网络爬虫抽象开来看,它无外乎包含如下几个步骤

  • 模拟请求网页。模拟浏览器,打开目标网站。
  • 获取数据。打开网站之后,就可以自动化的获取我们所需要的网站数据。
  • 保存数据。拿到数据之后,需要持久化到本地文件或者数据库等存储设备中。

一.导入相应的库

二. 获取网站源码

我们需要创建一个函数获取源码

其中 utf-8为源代码的中文编码,response.status_code==200 表示网站源代码获取正确

三.提取图片的源地址

这时候需要用到正则表达式 

要重点关注这个“thumbURL”可根据这个找到图片的网址

四.获取图片的二进制码

五.定义一个新建文件夹程序

创建一个文件夹目录 保存图片

六.保存图片

七. 定义一个main函数

1.点击鼠标右键 找到检查

2.然后点击网络-fetch-标头-请求url--再复制其路径

将其复制到这...

3.再将其请求标头复制下来粘贴至headers处位置。

注意:复制前请加三个双引号 减少一些换行。

4.点击负载--将其下面的内容复制下来

粘贴至此处八.爬取图片

使用一个for循环遍历列表 自动爬取图片以上就是如何爬取图片的全部内容

下面是源代码

# 获取网站源代码
def get_html(url,headers,params):response=requests.get(url,headers=headers,params=params)# 设置源代码的编码方式response.encoding="utf-8"# response.status_code ==200:return response.text# else:# print("网站源代码获取错误")# 提取图片的源地址
def parse_pic_url(html):result = re.findall('"thumbURL":"(.*?)"',html,re.S)return result
# 获取图片的二进制码
def get_pic_content(url):response = requests.get(url)return response.content# 保存图片
def save_pic(fold_name,content,pic_name):with open(fold_name+"/"+str(pic_name)+".jpg", "wb")as f:f.write(content)f.close()# 定义一个新建文件夹的程序
def create_fold(fold_name):# 加异常处理try:os.mkdir(fold_name)except:print("文件夹已存在")# 定义一个main函数调用get_html函数
# 乱码的话 把br去掉
def main():# 输入文件夹的名字fold_name=input("请输入要抓取图片的名字:")# 输入要抓取的图片页数page_num=input("请输入要抓取的多少页?(0,1,2,3,4.....)")# 调用函数,创建文件夹create_fold(fold_name)# 定义图片名字pic_name=0# 架构循环,控制页面for i in range(int(page_num)):url='https://image.baidu.com/search/acjson?tn=resultjson_com&logid=12466994017284006009&ipn=rj&ct=201326592&is=&fp=result&fr=ala&word=%E5%A4%A7%E7%86%8A%E7%8C%AB%E5%9B%BE%E7%89%87&queryWord=%E5%A4%A7%E7%86%8A%E7%8C%AB%E5%9B%BE%E7%89%87&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=&z=&ic=&hd=&latest=&copyright=&s=&se=&tab=&width=&height=&face=&istype=&qc=&nc=&expermode=&nojc=&isAsync=&pn=120&rn=30&gsm=78&1695863913502='headers={"Accept":"text/plain, */*; q=0.01","Accept-Encoding":"gzip, deflate","Accept-Language":"zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6","Connection":"keep-alive","Cookie":'BDqhfp=%E5%A4%A7%E7%86%8A%E7%8C%AB%E5%9B%BE%E7%89%87%26%26NaN-1undefined%26%263876%26%264; BIDUPSID=2DDA08F2489166F8296AF37F32E27AC5; PSTM=1657273565; BDUSS=d1dzVkRzBkNDI5bzBYYXpkbFFTUThrbU9RWHZDRVFLWU5ERDlYRWNROXdhVzVqSVFBQUFBJCQAAAAAAAAAAAEAAAA7gbiQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHDcRmNw3EZjT2; BDUSS_BFESS=d1dzVkRzBkNDI5bzBYYXpkbFFTUThrbU9RWHZDRVFLWU5ERDlYRWNROXdhVzVqSVFBQUFBJCQAAAAAAAAAAAEAAAA7gbiQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHDcRmNw3EZjT2; BAIDUID=1D4F926B02D9111225B14B9D71AAF576:FG=1; indexPageSugList=%5B%22IndentationError%3A%20unindent%20does%20not%20match%20any%20outer%20indentation%20level%22%5D; BAIDUID_BFESS=1D4F926B02D9111225B14B9D71AAF576:FG=1; BA_HECTOR=a12l848g0g0g058ka580a02v1ih7p2m1p; ZFY=N9wyLiRfHuUeTr4zDV5tCQ2wwc4SwgwmeE0lKZEByLc:C; BDORZ=FFFB88E999055A3F8A630C64834BD6D0; RT="z=1&dm=baidu.com&si=5759fd95-e463-4960-9c0b-89d93e94682f&ss=ln1gxjpu&sl=9&tt=h12&bcn=https%3A%2F%2Ffclog.baidu.com%2Flog%2Fweirwood%3Ftype%3Dperf&ld=sgz0&ul=1ol8m&hd=1olbp"; BDRCVFR[kSyA9a8U-kc]=mk3SLVN4HKm; delPer=0; PSINO=1; BDRCVFR[WDXKkmmntP_]=bF2OOhpFAEmuvN4rjT8mvqV; H_PS_PSSID=; BDRCVFR[dG2JNJb_ajR]=mk3SLVN4HKm; userFrom=ala; BDRCVFR[-pGxjrCMryR]=mk3SLVN4HKm; ab_sr=1.0.1_MzY1MmM4ODNmY2M3MDgzNTExNGUzZTgxNzQwMDI4ZTIyNGMwZWJkZWY2NzBiMTc4OGE5YWY5M2FmZTVlZTRhYTljNGRkN2M5NzllNTI5ZmQwMDJjNjMyZDFjMWU3OTZhZDUxNjFkMDA2YjAyYTM1OTQ1NTNmYWE3YjE2OGVkNDE0NWJkZThkNDY4MDVkZWQ1NGY3NDQ3NTliMGE0N2U3Ng==',"Host":"image.baidu.com","Referer":"https://image.baidu.com/search/index?tn=baiduimage&ct=201326592&lm=-1&cl=2&ie=gb18030&word=%B4%F3%D0%DC%C3%A8%CD%BC%C6%AC&fr=ala&ala=1&alatpl=normal&pos=0&dyTabStr=MTEsMCw0LDMsMSw2LDUsMiw4LDcsOQ%3D%3D","Sec-Ch-Ua":'"Microsoft Edge";v="117", "Not;A=Brand";v="8", "Chromium";v="117"',"Sec-Ch-Ua-Mobile":"?0","Sec-Ch-Ua-Platform":'"Windows"',"Sec-Fetch-Dest":"empty","Sec-Fetch-Mode":"cors","Sec-Fetch-Site":"same-origin","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36 Edg/117.0.2045.41","X-Requested-With":"XMLHttpRequest"}params={"tn": "resultjson_com","logid": "11255705298364100810","ipn": "rj","ct": "201326592","fp": "result","word": fold_name,"queryWord": fold_name,"cl": "2","lm":"-1","ie": "utf-8","oe": "utf-8","pn": str(int(i+1)*30),"rn": "30","gsm": "1e",}#   爬取网站的时候 不粘贴header时 网站会以为是爬虫 就会乱码 再从检查那找到header 粘贴下来 先打三个双引号,再加引号和逗号 注意报错 url后不加逗号# 运行完了之后 找到thumbURL 这是爬取图片或者视频的链接# params={}html =get_html(url, headers,params)result= parse_pic_url(html)# 定义图片的名字# pic_name = 0#    使用for循环遍历列表for item in result:# print(item)#调用函数,获取图片的二进制源码pic_content= get_pic_content(item)# 调用函数保存图片# print(pic_content)save_pic(fold_name,pic_content,pic_name)pic_name +=1# 自加等于1print("正在保存第 "+str(pic_name)+"张图片")# 把所有代码放到for循环里面 按tab键
# 执行main函数if __name__ == '__main__':main()

这篇关于爬虫----爬取网页图片(以大熊猫为例)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/525737

相关文章

Java图片压缩三种高效压缩方案详细解析

《Java图片压缩三种高效压缩方案详细解析》图片压缩通常涉及减少图片的尺寸缩放、调整图片的质量(针对JPEG、PNG等)、使用特定的算法来减少图片的数据量等,:本文主要介绍Java图片压缩三种高效... 目录一、基于OpenCV的智能尺寸压缩技术亮点:适用场景:二、JPEG质量参数压缩关键技术:压缩效果对比

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

详解C#如何提取PDF文档中的图片

《详解C#如何提取PDF文档中的图片》提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使用,下面我们就来看看如何使用C#通过代码从PDF文档中提取图片吧... 当 PDF 文件中包含有价值的图片,如艺术画作、设计素材、报告图表等,提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使

Java实现文件图片的预览和下载功能

《Java实现文件图片的预览和下载功能》这篇文章主要为大家详细介绍了如何使用Java实现文件图片的预览和下载功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... Java实现文件(图片)的预览和下载 @ApiOperation("访问文件") @GetMapping("

使用Python实现获取网页指定内容

《使用Python实现获取网页指定内容》在当今互联网时代,网页数据抓取是一项非常重要的技能,本文将带你从零开始学习如何使用Python获取网页中的指定内容,希望对大家有所帮助... 目录引言1. 网页抓取的基本概念2. python中的网页抓取库3. 安装必要的库4. 发送HTTP请求并获取网页内容5. 解

Python使用DrissionPage中ChromiumPage进行自动化网页操作

《Python使用DrissionPage中ChromiumPage进行自动化网页操作》DrissionPage作为一款轻量级且功能强大的浏览器自动化库,为开发者提供了丰富的功能支持,本文将使用Dri... 目录前言一、ChromiumPage基础操作1.初始化Drission 和 ChromiumPage

基于Python开发批量提取Excel图片的小工具

《基于Python开发批量提取Excel图片的小工具》这篇文章主要为大家详细介绍了如何使用Python中的openpyxl库开发一个小工具,可以实现批量提取Excel图片,有需要的小伙伴可以参考一下... 目前有一个需求,就是批量读取当前目录下所有文件夹里的Excel文件,去获取出Excel文件中的图片,并

Java实现数据库图片上传与存储功能

《Java实现数据库图片上传与存储功能》在现代的Web开发中,上传图片并将其存储在数据库中是常见的需求之一,本文将介绍如何通过Java实现图片上传,存储到数据库的完整过程,希望对大家有所帮助... 目录1. 项目结构2. 数据库表设计3. 实现图片上传功能3.1 文件上传控制器3.2 图片上传服务4. 实现