【python基础】python爬虫对网页壁纸图片批量抓取下载
本文通过对爬虫进行对网页的抓取,并且下载所需要的壁纸图片
操作流程
- 前言
- 一、目标网页
- 二、操作流程
- 1.引入库
- 2.隐藏爬虫身份
- 3.获取目标地址
- 4.网页抓取
- 5.文本匹配
- 完整代码
前言
通过爬虫技术对图片进行批量爬取可以说是我们必备的爬虫技巧之一,网络爬虫也叫做网络机器人,可以代替人们自动地在互联网中进行数据信息的采集与整理。在大数据时代,信息的采集是一项重要的工作,如果单纯靠人力进行信息采集,不仅低效繁琐,搜集的成本也会提高。
这里先对要运用的第三方库进行安装。
本文选取的函数库主要为requests、lxml、etree。
打开anaconda prompt,这是anaconda的交互界面,很多指令在该界面直接输入,便可直接下载众多函数库。
anaconda下载安装教程
在交互界面中分别输入如下指令:
conda install lxml
conda install requests
提示:以下是本篇文章正文内容,下面案例可供参考
一、目标网页
在你爬取网页图片前,首先应当找到你的目标图片的网页,本文选取的网页为如下:
https://www.vcg.com/creative-image/xigua/
二、操作流程
1.引入库
代码如下(示例):
import os
import requests
from lxml import etree
2.隐藏爬虫身份
如今很多网站设置了反爬系统,我们对爬虫身份进行隐藏,将其隐藏为正常的用户访问,具体操作如下:
首先,我们随意打开一个网站,右键点击检查:
打开后,点击网络,并且ctrl+r刷新:
刷新后随机点一个名称从标头往下翻,一般可以在请求标头上找到User-Agent并且复制(没有就换个名称接着找):
随后在代码中添加如下:
#输入网站的地址
url = https://pic.netbian.com/4kdongman/
#隐藏爬虫身份
header = {'User_Agent':'粘贴复制的user-agent'}
3.获取目标地址
在元素这一栏中找到(在页面中选择一个元素进行检查)这个图标,选择你想要爬取的照片,会自动帮你定位到该图片所在的标签。
还是这张图片,找到要下载的图片地址在a标签下的img src中,再次进行匹配。
4.网页抓取
通过requests库对网页的地址进行访问申请
response = requests.get(url,header)
此时我们可以通过对page的状态码查看来判断是否访问成功(返回值为200代表访问成功)
response_status = response.status_codeprint(response_status)
获取网页文本并将文本解析
page_text = response.text
tree = etree.HTML(page_text)
5.文本匹配
首先观察,发现所有的图片地址都在figure标签中,所有的figure标签又都存在于 div class=“gallery_inner” 中,所以我们先匹配到div这个标签。
在xpath中//表示在该本文中搜索所有的div标签,[@class=“gallery_inner”]则将div标签限定,再通过/figure找到所有的标签。
xpath进行匹配:
figure_list = tree.xpath('//div[@class="gallery_inner"]/figure')
接着我们对所有的li标签进行循环,依次对每个图片地址进行操作。
for figure in figure_list:img_src = figure.xpath('./a/img/@data-src')[0]img_src = 'https:' + img_srcimg_name = img_src.split('/')[-1]img_data = requests.get(url=img_src,headers=header).contentimg_path = 'piclitl/' + img_namewith open(img_path, 'wb') as fp:fp.write(img_data)print(img_name, '下载成功')
大致框架搭好后运行,发现了两个报错:
一、在对figure标签请求时,匹配没有结果出现列表超出范围的报错。
通过对网站的分析,我们发现图中创意视频推荐也在figure标签中,所以但其实际上没有a和img标签,所以匹配没有结果,导致程序直接报错停止。
这里采用try…expect…语句让程序遇到此类报错时直接跳过
try:img_src = figure.xpath('./a/img/@data-src')[0]
except(IndexError):print('未成功匹配到字段')
二、当匹配没有结果时,我们选择跳过,所以此时对图片数据申请时没有结果
这里同样采用try…expect…语句:
try:img_data = requests.get(url=img_src, headers=header).content
except(requests.exceptions.InvalidURL):print('没有访问地址')
以上便是利用python网络爬虫对图片进行批量爬取,如果你对爬虫感兴趣,不妨以本文为案例,打开爬虫世界的大门。
完整代码
from lxml import etree
import requests
import osif __name__ == '__main__':url = 'https://www.vcg.com/creative-image/xigua/'header = {'User_Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36 Edg/102.0.1245.39'}response = requests.get(url=url, headers=header)response.encoding = 'utf-8'page_text = response.texttree = etree.HTML(page_text)figure_list = tree.xpath('//div[@class="gallery_inner"]/figure')if not os.path.exists('./piclitl'):os.makedirs('./piclitl')for figure in figure_list:try:img_src = figure.xpath('./a/img/@data-src')[0]except(IndexError):print('未成功匹配到字段')img_src = 'https:' + img_srcimg_name = img_src.split('/')[-1]try:img_data = requests.get(url=img_src, headers=header).contentexcept(requests.exceptions.InvalidURL):print('没有访问地址')img_path = 'piclitl/' + img_namewith open(img_path, 'wb') as fp:fp.write(img_data)print(img_name, '下载成功')
【python基础】python爬虫对网页壁纸图片批量抓取下载相关推荐
- 笨笨图片批量抓取下载 V0.2 beta[C# | WinForm | 正则表达式 | HttpWebRequest | Async异步编程]...
一. 先贴一张图,这个界面就是程序的主界面了: 二. 部分代码说明(主要讲解异步分析和下载): 异步分析下载采取的策略是同时分析同时下载,即未等待数据全部分析完毕就开始把已经分析出来的 ...
- python爬取新浪微博数据中心_Python爬虫框架Scrapy实战之批量抓取招聘信息
网络爬虫抓取特定网站网页的html数据,但是一个网站有上千上万条数据,我们不可能知道网站网页的url地址,所以,要有个技巧去抓取网站的所有html页面.Scrapy是纯Python实现的爬虫框架,用户 ...
- python获取渲染之后的网页_使用Pyppeteer抓取渲染网页
Pyppeteer是Puppeteer的非官方Python支持,Puppeteer是一个无头JavaScript的基于Chrome/Chromium浏览器自动化库,可以用于对渲染网页的抓取. 比较了P ...
- 爬虫-某直播平台图片批量爬取url并下载
后续技术类文档更新到微信公众号-------->>喜欢的扫码关注 import json import time import requests from selenium import ...
- python爬虫学习基础教程,批量抓取美女图片!
python的抓取功能其实是非常强大的,当然不能浪费,呵呵.下面就与大家分享一个python写的美女图自动抓取程序吧! 其中用到urllib2模块和正则表达式模块.下面直接上代码: 用python批量 ...
- Python爬虫实践(入门篇)——抓取《天使降临到我身边》图片
今天就学了一下Python爬虫,于是想实践一下.刚好一周前在B站补完番<天使降临到我身边>--里面的小学生特可爱.情节也不错,心里就比较喜欢这部漫画,所以就想扒一些图片当壁纸.刚好,Pyt ...
- python获取网页图片_python抓取网页中的图片示例
python抓取网页中的图片示例 代码如下: #coding:utf8 import re import urllib def getHTML(url): page = urllib.urlopen( ...
- python基础与爬虫笔记
做java项目毕设前想通过爬虫爬取些数据存入数据库,从而在毕设中使用到,所以大致学习了一下python和爬虫做了下笔记. 大致过了一遍视频:https://www.bilibili.com/video ...
- python批量读取图片并批量保存_Python爬虫:批量抓取花瓣网高清美图并保存
原标题:Python爬虫:批量抓取花瓣网高清美图并保存 昨天看到了不错的图片分享网--花瓣,里面的图片质量还不错,所以利用selenium+xpath我把它的妹子的栏目下爬取了下来,以图片栏目名称给文 ...
- Python利用bs4批量抓取网页图片并下载保存至本地
Python利用bs4批量抓取网页图片并下载保存至本地 使用bs4抓取网页图片,bs4解析比较简单,需要预先了解一些html知识,bs4的逻辑简单,编写难度较低.本例以抓取某壁纸网站中的壁纸为例.(b ...
最新文章
- 字符间距加宽5磅怎么设置_11层以下住宅小区——消防车道设置及答疑
- 用Python爬取WordPress官网所有插件
- C#使用Gecko实现浏览器
- 深入浅出之虚函数原理篇(笔记三)
- 【剑指offer】面试题65:不用加减乘除做加法(Java)
- day4-mysql数据关系
- C语言记录元音字母的位置,求元音字母
- python爬取金庸小说全集
- 使用TinyPng来压缩图片
- 指数分布的极大似然估计
- 笔记本电脑光驱位置装固态硬盘流程
- 为知笔记——使用第三方Markdown的Typora编辑器编辑为知笔记
- 浅谈自适应滤波器---(快速RLS算法)
- java的键盘输入交互
- 5个可用提高Godaddy主机速度的第三方CDN加速服务商
- php图片点阵,HTML5边玩边学(八)-砖块贴图点阵字
- PHP网站漏洞poc,phpyun某处SQL注入漏洞含POC
- 超简单的HTML5圣诞树代码哦
- 入门UI设计要学习什么内容?
- 数字孪生风机设备,智慧风电 3D 可视化智能运维
热门文章
- H5的video用法
- php excel自适应列宽,PHPExcel自动调整列宽
- 结构化程序设计知识点总结
- 金庸:为什么历史上没有一个国家能成功吞并中国?
- 朋友python多个逻辑条件判断_Python小课笔记--Python控制流:if逻辑判断
- C语言-Switch 语句
- 计算机显卡型号中数字含义详解,显卡型号中字母和数字都是什么意思?
- 无线网卡dhcp服务器,ubuntu11.10配置无线网卡dhcp服务器记录(not authoritative for subnet 192.168.1.0问题解决)...
- 最新码支付源码+全套的程序+三网监控+易支付H5接口 2022年6月22号
- 百度指数、淘宝指数学习笔记