(三)爬取一些网页图片

爬取一些网页图片

1、随机爬取一个网页:


import requests# 1、获取图片网页源码
def Get_Source_Page():url = 'https://pic.netbian.com/index.html'# 当爬虫程序运行爬网站,若不设置header为任意一个名字,会被有些网站检查出是python爬虫,被禁止访问headers = {# 'Host':'image.baidu.com'# 'Cookie':# 'Referer':"User-Agent": "hdy"}# 后去网页get请求response = requests.get(url=url, headers=headers)# 获取数据内容,并打印(获取网页源码很重要,每个网页都不尽相同,可以根据具体返回的网页信息来截取图片信息)text = response.textprint(text)return textif __name__=='__main__':Get_Source_Page()

2、运行,出现部分乱码:

在这里插入图片描述

3、将返回的网页进行编码解码,具体什么编码看开头的“meta charset="gbk“,这里是gbk编码。

    response.encoding = 'gbk'

4、完整代码:

import requests# 1、获取图片网页源码
def Get_Source_Page():url = 'https://pic.netbian.com/index.html'# 当爬虫程序运行爬网站,若不设置header为任意一个名字,会被有些网站检查出是python爬虫,被禁止访问headers = {# 'Host':'image.baidu.com'# 'Cookie':# 'Referer':"User-Agent": "hdy"}# 后去网页get请求response = requests.get(url=url, headers=headers)# gbk编码解码response.encoding = 'gbk'# 获取数据内容,并打印(获取网页源码很重要,每个网页都不尽相同,可以根据具体返回的网页信息来截取图片信息)text = response.textprint(text)return textif __name__=='__main__':Get_Source_Page()

5、运行结果,网页获取成功,乱码解决:

在这里插入图片描述

6、对于需要截取一些特定多行的网页源码,需要进行如下操作:

import rea = '''aabbccdd123456:121313413xxyyzz'''b = re.findall("aa(.*?)zz", a)
c = re.findall("aa(.*?)zz", a, re.S)  # re.S的功能print("b is :", b)
print("c is :", c)# re.S的作用是将多行的字符串a连接成一行,多行中的aa和zz不在同一行,则"aa(.*?)zz"的条件没有
# 需要将多行中aa和zz通过re.S链接在一起

7、运行效果:

在这里插入图片描述

8、查看网页源码信息,定位到图片的URL链接和标题,以备用在程序中获取的网页源码中提取URL链接和图片标题:

在这里插入图片描述

9、在第5步中程序运行获取的网页信息,根据在浏览器上网页源码的图片信息定位到程序请求得到的网页信息。

在这里插入图片描述
在这里插入图片描述

10、设计程序获取图片信息(URL、标题):

import requests
import re# 1、获取图片网页源码
def Get_Source_Page():url = 'https://pic.netbian.com/index.html'# 当爬虫程序运行爬网站,若不设置header为任意一个名字,会被有些网站检查出是python爬虫,被禁止访问headers = {# 'Host':'image.baidu.com'# 'Cookie':# 'Referer':"User-Agent": "hdy"}# 后去网页get请求response = requests.get(url=url, headers=headers)# utf-8编码解码response.encoding = 'gbk'# 获取数据内容,并打印(获取网页源码很重要,每个网页都不尽相同,可以根据具体返回的网页信息来截取图片信息)text = response.textprint(text)return text# 2、从源码中解析出图片地址
def Get_img_link(text):# 对整个网页截取有图片的地址、标题等信息的网页内容# find要求的的内容信息”<ul class="clearfix">(.*?)</ul>“,<ul></ul>中间内容find = re.compile('<ul class="clearfix">(.*?)</ul>', re.S)# 对text网页信息截取符合find要求的的内容信息li_list = re.findall(find, text)print(li_list[0])if __name__=='__main__':Get_Source_Page()Get_img_link(Get_Source_Page())

11、在网页信息中提取得到需要图片信息:

在这里插入图片描述

12、进一步提取图片信息:

import requests
import re# 1、获取图片网页源码
def Get_Source_Page():url = 'https://pic.netbian.com/index.html'# 当爬虫程序运行爬网站,若不设置header为任意一个名字,会被有些网站检查出是python爬虫,被禁止访问headers = {# 'Host':'image.baidu.com'# 'Cookie':# 'Referer':"User-Agent": "hdy"}# 后去网页get请求response = requests.get(url=url, headers=headers)# utf-8编码解码response.encoding = 'gbk'# 获取数据内容,并打印(获取网页源码很重要,每个网页都不尽相同,可以根据具体返回的网页信息来截取图片信息)text = response.textprint(text)return text# 2、从源码中解析出图片地址
def Get_img_link(text):# 对整个网页截取有图片的地址、标题等信息的网页内容# find要求的的内容信息”<ul class="clearfix">(.*?)</ul>“,<ul></ul>中间内容find = re.compile('<ul class="clearfix">(.*?)</ul>', re.S)# 对text网页信息截取符合find要求的的内容信息li_list = re.findall(find, text)print(li_list[0])# 截取特定格式的网页信息find_img_link = re.compile('<img src="(.*?)" alt="(.*?)" />', re.S)# 对li_list[0]信息截取符合find_img_link要求的的内容信息img_list = re.findall(find_img_link, li_list[0])# print(img_list)if __name__=='__main__':Get_Source_Page()Get_img_link(Get_Source_Page())

13、运行,从多张的图片的一整段信息,提取得到一张张图片的信息:

在这里插入图片描述

14、分别得到一张张图片信息(URL、标题):

import requests
import re# 1、获取图片网页源码
def Get_Source_Page():url = 'https://pic.netbian.com/index.html'# 当爬虫程序运行爬网站,若不设置header为任意一个名字,会被有些网站检查出是python爬虫,被禁止访问headers = {# 'Host':'image.baidu.com'# 'Cookie':# 'Referer':"User-Agent": "hdy"}# 后去网页get请求response = requests.get(url=url, headers=headers)# utf-8编码解码response.encoding = 'gbk'# 获取数据内容,并打印(获取网页源码很重要,每个网页都不尽相同,可以根据具体返回的网页信息来截取图片信息)text = response.textprint(text)return text# 2、从源码中解析出图片地址
def Get_img_link(text):# 对整个网页截取有图片的地址、标题等信息的网页内容# find要求的的内容信息”<ul class="clearfix">(.*?)</ul>“,<ul></ul>中间内容find = re.compile('<ul class="clearfix">(.*?)</ul>', re.S)# 对text网页信息截取符合find要求的的内容信息li_list = re.findall(find, text)print(li_list[0])# 截取特定格式的网页信息find_img_link = re.compile('<img src="(.*?)" alt="(.*?)" />', re.S)# 对li_list[0]信息截取符合find_img_link要求的的内容信息img_list = re.findall(find_img_link, li_list[0])print(img_list)for i in img_list:print(i)if __name__=='__main__':Get_Source_Page()Get_img_link(Get_Source_Page())

15、更清晰的显示图片信息:

在这里插入图片描述

16、向图片地址发送请求并保存:

import requests
import re# 1、获取图片网页源码
def Get_Source_Page():url = 'https://pic.netbian.com/index.html'# 当爬虫程序运行爬网站,若不设置header为任意一个名字,会被有些网站检查出是python爬虫,被禁止访问headers = {# 'Host':'image.baidu.com'# 'Cookie':# 'Referer':"User-Agent": "hdy"}# 后去网页get请求response = requests.get(url=url, headers=headers)# gbk编码解码response.encoding = 'gbk'# 获取数据内容,并打印(获取网页源码很重要,每个网页都不尽相同,可以根据具体返回的网页信息来截取图片信息)text = response.textprint(text)return text# 2、从源码中解析出图片地址
def Get_img_link(text):# 对整个网页截取有图片的地址、标题等信息的网页内容# find要求的的内容信息”<ul class="clearfix">(.*?)</ul>“,<ul></ul>中间内容find = re.compile('<ul class="clearfix">(.*?)</ul>', re.S)# 对text网页信息截取符合find要求的的内容信息li_list = re.findall(find, text)# print(li_list[0])# 截取特定格式的网页信息find_img_link = re.compile('<img src="(.*?)" alt="(.*?)" />', re.S)# 对li_list[0]信息截取符合find_img_link要求的的内容信息img_list = re.findall(find_img_link, li_list[0])print(img_list)for i in img_list:print(i)# 3、向图片发送请求,并保存图片
def Save_img(link, title):# img_url = f'https://pic.netbian.com/index.html'       # 第一页的图片地址img_url = f'https://pic.netbian.com/{link}'   # 拼接图片地址链接(第23、、# )img_res = requests.get(url=img_url)   # 像图片地址发送请求with open(f'04_fild/{title}.jpg', mode='wb') as f:  # 以二进制方式写入jpg图片f.write(img_res.content)img_res.close()if __name__=='__main__':Get_Source_Page()Get_img_link(Get_Source_Page())# 取需要保存的图片的部分URL链接Save_img('uploads/allimg/210317/001935-16159115757f04.jpg','4k 高清 可爱 女生 动漫 长辫子 双马尾辫 项链 电脑 壁纸')

17、成功爬取一张图片:

在这里插入图片描述

18、改进程序,保存一个网页里面的多张图片:

import requests
import re# 1、获取图片网页源码
def Get_Source_Page():url = 'https://pic.netbian.com/index.html'# 当爬虫程序运行爬网站,若不设置header为任意一个名字,会被有些网站检查出是python爬虫,被禁止访问headers = {# 'Host':'image.baidu.com'# 'Cookie':# 'Referer':"User-Agent": "hdy"}# 后去网页get请求response = requests.get(url=url, headers=headers)# gbk编码解码response.encoding = 'gbk'# 获取数据内容,并打印(获取网页源码很重要,每个网页都不尽相同,可以根据具体返回的网页信息来截取图片信息)text = response.textprint(text)return text# 2、从源码中解析出图片地址
def Get_img_link(text):# 对整个网页截取有图片的地址、标题等信息的网页内容# find要求的的内容信息”<ul class="clearfix">(.*?)</ul>“,<ul></ul>中间内容find = re.compile('<ul class="clearfix">(.*?)</ul>', re.S)# 对text网页信息截取符合find要求的的内容信息li_list = re.findall(find, text)# print(li_list[0])# 截取特定格式的网页信息find_img_link = re.compile('<img src="(.*?)" alt="(.*?)" />', re.S)# 对li_list[0]信息截取符合find_img_link要求的的内容信息img_list = re.findall(find_img_link, li_list[0])print(img_list)for i in img_list:print(i[0], i[1])Save_img(i[0], i[1])# 3、向图片发送请求,并保存图片
def Save_img(link, title):# img_url = f'https://pic.netbian.com/index.html'       # 第一页的图片地址img_url = f'https://pic.netbian.com/{link}'   # 拼接图片地址链接(第23、、# )img_res = requests.get(url=img_url)   # 像图片地址发送请求with open(f'04_fild/{title}.jpg', mode='wb') as f:  # 以二进制方式写入jpg图片f.write(img_res.content)img_res.close()if __name__=='__main__':Get_Source_Page()Get_img_link(Get_Source_Page())# Save_img('uploads/allimg/210317/001935-16159115757f04.jpg','4k 高清 可爱 女生 动漫 长辫子 双马尾辫 项链 电脑 壁纸')

19、代码解析:

在这里插入图片描述

20、进一步改进代码,获取认识页数的全部图片:

import requests
import re# 1、获取图片网页源码
def Get_Source_Page():# 当爬虫程序运行爬网站,若不设置header为任意一个名字,会被有些网站检查出是python爬虫,被禁止访问headers = {# 'Host':'image.baidu.com'# 'Cookie':# 'Referer':"User-Agent": "hdy"}for i in range(2, 5):  # 若想要爬取多个页数的图片,就把这里的5改成想要爬的页数# url = 'https://pic.netbian.com/index.html'     # 首页的网页地址if i == 1:url = f'https://pic.netbian.com/index.html'else:url = f'https://pic.netbian.com/index_{i}.html'   # 第i页的网页地址# 后去网页get请求response = requests.get(url=url, headers=headers)# gbk编码解码response.encoding = 'gbk'# 获取数据内容,并打印(获取网页源码很重要,每个网页都不尽相同,可以根据具体返回的网页信息来截取图片信息)text = response.textprint(text)return text# 2、从源码中解析出图片地址
def Get_img_link(text):# 对整个网页截取有图片的地址、标题等信息的网页内容# find要求的的内容信息”<ul class="clearfix">(.*?)</ul>“,<ul></ul>中间内容find = re.compile('<ul class="clearfix">(.*?)</ul>', re.S)# 对text网页信息截取符合find要求的的内容信息li_list = re.findall(find, text)# print(li_list[0])# 截取特定格式的网页信息find_img_link = re.compile('<img src="(.*?)" alt="(.*?)" />', re.S)# 对li_list[0]信息截取符合find_img_link要求的的内容信息img_list = re.findall(find_img_link, li_list[0])print(img_list)for i in img_list:print(i[0], i[1])Save_img(i[0], i[1])# 3、向图片发送请求,并保存图片
def Save_img(link, title):# img_url = f'https://pic.netbian.com/index.html'       # 第一页的图片地址img_url = f'https://pic.netbian.com/{link}'   # 拼接图片地址链接(第23、、# )img_res = requests.get(url=img_url)   # 像图片地址发送请求with open(f'04_fild/{title}.jpg', mode='wb') as f:  # 以二进制方式写入jpg图片f.write(img_res.content)img_res.close()if __name__=='__main__':Get_Source_Page()Get_img_link(Get_Source_Page())# Save_img('uploads/allimg/210317/001935-16159115757f04.jpg','4k 高清 可爱 女生 动漫 长辫子 双马尾辫 项链 电脑 壁纸')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/32578.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

模拟双色球

投注号码由6个红色球号码和1个蓝色球号码组成。红色球号码从1 - 33选择;蓝色球号码从1 - 16中选择。 package com;import java.util.Random; import java.util.Scanner;public class Test {public static void main(String[] args) {// 1.随机一组中奖号码,6个红球号码不重复(1…

年轻人的第一支牙刷,“少年”国风定制,BYCOOMagic电动牙刷体验

刷牙是每个人每天必做的事&#xff0c;普通牙刷由于清洁力度不够&#xff0c;无法做到深层次刷牙清理&#xff0c;加上刷牙时间不足&#xff0c;因此大多数人属于敷衍式刷牙。欲善其事、先利其器&#xff0c;要想科学刷牙&#xff0c;电动牙刷必不可少&#xff0c;最近我就入手…

第三方ipad笔哪个牌子好用?ipad触控笔推荐平价

至于选择苹果原装的电容笔&#xff0c;还是平替的电容笔&#xff0c;要看个人的需求而定&#xff0c;比如画图用的&#xff0c;可以用Apple Pencil&#xff1b;比如学习记笔记用的&#xff0c;可以用平替电容笔&#xff0c;目前的平替电容笔无论是品质还是性能&#xff0c;都非…

咦?智能颈部按摩仪还能语音播报,快搞起来!

一、档位切换实现 1、档位实现原理 按摩仪共设置15个档位&#xff0c;可以控制按摩的力度&#xff0c;通过BOOST升压电路实现。 通过P8口产生PWM波&#xff0c;调节PWM输出的正占空比来实现升压&#xff0c;详细的硬件原理可参考硬件部分关于升压原理的介绍&#xff0c;具体数…

电动牙刷/洗牙器出口欧盟CE认证测试标准EN 60335

电动牙刷/洗牙器在这两年开始被很多厂家看中这块的发展&#xff0c;因为据调查了解到&#xff0c;电动牙刷比普通牙刷更能够清除牙菌减少牙龈&#xff0c;更好的做到了清洁的作用。 在欧美国家几乎所有的人都使用电动牙刷&#xff0c;是一款普遍流行的日用品&#xff0c;因此在…

oh-my-posh - 终端个性化工具 - 美化PowerShell / cmd - 好物分享,真香~

一. 什么是oh-my-posh? Oh My Posh 是一款终端个性化工具&#xff0c;支持 Windows、Linux&#xff08;WSL&#xff09;、macOS 系统上的 PowerShell、bash、zsh 等终端&#xff0c;可以配置不同主题达到个性化的效果。 本篇文章&#xff0c;将以PowerShell终端为例&#xff0…

酷科技 | Amabrush电动牙刷:10秒就可以完成刷牙

刷牙是我们每天都要做的事情&#xff0c;虽然整个过程不过两三分钟&#xff0c;但无论是早上急急忙忙的起床&#xff0c;还是晚上困意来袭&#xff0c;忘记刷牙或者随便糊弄一下&#xff0c;已经成为了很多人经常会做的事情。 牙齿的健康很重要&#xff0c;因此刷牙这件事虽小但…

PaddleSpeech 流式语音识别系统 PP-ASR

(以下内容搬运自 PaddleSpeech) PP-ASR 目录 1. 简介2. 特点3. 使用教程 3.1 预训练模型3.2 模型训练3.3 模型推理3.4 服务部署3.5 支持个性化场景部署 4. 快速开始 1. 简介 PP-ASR 是一个 提供 ASR 功能的工具。其提供了多种中文和英文的模型&#xff0c;支持模型的训练&a…

飞利浦 PHILIPS 电动牙刷HX6730 拆解

今日&#xff0c;一直比较喜欢用的电动牙刷&#xff0c;飞利浦HX6730坏掉了&#xff0c;初步感觉考虑飞利浦的保修&#xff0c;但是发现发票找不到了。飞利浦的客服也说&#xff0c;电动牙刷的两年保修依据分别是&#xff1a;1、发票开据日期&#xff1b;2、在无发票的情况下&a…

CES Asia:藏在儿童电动牙刷里的科技

科技巨头苹果公司常常对外表达的观念是&#xff0c;产品的核心是使用者&#xff0c;科技是用来解决问题&#xff0c;让产品设计得能帮助使用者生活得更美好&#xff0c;科技要做的是帮助人们拥有完成原本无法做到的事的能力。苹果公司认为科技应当藏身幕后&#xff0c;而不是走…

两款黑科技、高颜值电动牙刷正面PK,如何选择性价比是关键

随着人们生活水平的提升,近年来,各种黑科技层出不穷,对我们的生活带来了巨大的改变,甚至可以说是“武装到了牙齿”——例如目前不少厂商推出了智能声波电动牙刷(以下简称:电动牙刷),让刷牙也变得极具科技感。 目前市面上的电动牙刷品牌众多、鱼龙混杂,但在性能、质量…

WTV380语音芯片在儿童电动牙刷应用,可降低企业30% BOM成本!

概述&#xff1a;儿童电动牙刷控制的组成&#xff0c;需要一颗丰富资源的MCU芯片&#xff0c;主要起到按键信号采集、压力传感器信号采集、电机控制、音乐/提示功能&#xff0c;而需要实现电动牙刷的这些功能&#xff0c;产品开发设计工程师需要用到一颗IO资源丰富&#xff0c;…

2021年中国电动牙刷销售及发展趋势分析:国产品牌崛起[图]

一、电动牙刷产业链 电动牙刷是利用振动的机芯带动刷头旋转或振动以达到洁牙的效果。电动牙刷产业链随着市场产品的不断推出&#xff0c;产业链生态逐步完善&#xff0c;推动市场稳步发展。电动牙刷上游主要是牙刷丝、塑料外壳材料和电机、电池等&#xff0c;中游各类别电动牙刷…

文华财经数据导出工具

软件用于文华财经数据的格式化导出&#xff0c;通过简单设置文华财经的安装路径即可。当第一次打开工具时&#xff0c;出现文华财经的安装路径设置。请点击浏览并定位到文华财经的安装目录&#xff0c;如&#xff1a;D:\Tools\wh6通用版&#xff0c;确认后进入主程序。 第二次更…

如何用python爬取新浪财经

通过python爬取新浪财经的股票历史成交明细 要求 通过新浪财经爬取历史数据&#xff1a;http://market.finance.sina.com.cn/transHis.php?symbolsz000001&date2021-04-27&page60 要求&#xff1a;输入日期和股票代码后将一天所有的记录存入一个csv文件&#xff0c;…

文华财经期货K线多周期画线技术,多重短线技术共振通道线指标公式——多周期主图自动画线

期货指标公式是通过数学逻辑角度计算而来&#xff0c;仅是期货分析环节中的一个辅助工具。期货市场具有不确定性和不可预测性的&#xff0c;请正常对待和使用指标公式! 期货指标公式信号本身就有滞后性&#xff0c;周期越大&#xff0c;滞后性越久。指标公式不是100%稳赚的工具…

文华财经期货指标短线精灵,期货多空信号5分钟K线战法短线操作技巧

期货指标公式是通过数学逻辑角度计算而来&#xff0c;仅是期货分析环节中的一个辅助工具。期货市场具有不确定性和不可预测性的&#xff0c;请正常对待和使用指标公式! 期货指标公式信号本身就有滞后性&#xff0c;周期越大&#xff0c;滞后性越久。指标公式不是100%稳赚的工具…

文华财经指标公式源码学习

HJ_1:(HHV(HIGH,36)-CLOSE)/(HHV(HIGH,36)-LLV(LOW,36))*100; HJ_2:SMA(HJ_1,3,1); HJ_3:(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100; HJ_4:SMA(HJ_3,5,1)-8; 常态能量监控:HJ_4-HJ_2,COLORYELLOW,LINETHICK0; 狂飙临界能量:HJ_4-HJ_2,COLORRED,LINETHICK0; 0; STICKLIN…

财经郎眼:区块链是陷阱还是馅饼?颠覆性概念技术如何真正落地

2014年1月27日&#xff0c;财经郎眼首次聊比特币&#xff0c;题目是《比特币真相》&#xff1b;那时比特币的市场价是800美元。 2017年1月23日&#xff0c;财经郎眼再次聊比特币&#xff0c;题目是《五问比特币》&#xff1b;那时比特币的市场价是900美元。 2017年11月20日&…