睡觉也在爬虫之一(爬一张图片)
爬一张图片
- 使用环境
- 爬虫思路
- 找一个图片网站
- 找到图片的源地址
- 下载图片
- 实现过程
- 完整代码
- 效果
使用环境
- chrome
- windows10
- python3
- requests (需要pip)
- lxml (需要pip)
爬虫思路
只提供思路,不提供网站
找一个图片网站
找到图片的源地址
打开开发者工具,按F12
点一下小箭头,然后再点一下图片,就会自动索引到该图片的html,然后从html中找出图片的源地址
图片源地址一般格式xxx.jpg
下载图片
这一步,只需要请求一下xxx.jpg
,将其二进制数据写入到本地一个文件里,就相当于下载了那张图片
实现过程
import requests
from lxml import etree
import osheaders = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36','cookie':'Hm_lvt_c08bad6ac66a035b30e72722f365229b=1642073389; Hm_lpvt_c08bad6ac66a035b30e72722f365229b=1642073420','referer':'https://www.tupianzj.com/meinv/mm/meizitu/',
}url = 'https://xxx.com/meinv/20211208/236000.html'
先把http请求头设置好,不设置服务器一下就能识别到你是爬虫,从而屏蔽你的请求
请求头可以在开发者工具的网络
里查看
接着用requests.get(url)
请求网站数据,etree.HTML
将字符串解析成html,方便使用xpath匹配图片元素
# 将源码解析成html
r = requests.get(url,headers=headers)
html = etree.HTML(r.content.decode('gb2312'))
xpath语法匹配图片元素,为了获得该元素中的某些属性或文本
xpath语法
//a 匹配所有的a元素
//a[@class=“b”] 匹配所有class属性为b的a元素
//a/b 匹配所有a元素下的b元素
//a/b/@c 匹配所有a元素下的b元素的c属性值
#用xpath选择器匹配指定元素
pic_tag = html.xpath('//ul[@class="d1 ico3"]/li/a/img/@src') #列表
pic_src = pic_tag[1]
所以这里可以匹配到xxx.jpg
这个地址
获得图片的二进制数据
pic_content = requests.get(pic_src,headers=headers)
创建文件夹用于保存图片
dir_path = 'e:/meizitu'
if not os.path.exists(dir_path):os.mkdir(dir_path)print(f"[+] 创建{dir_path.split('/')[1]}文件夹")
将二进制数据写入文件
pic_name = 'pic1.jpeg'
pic_path = dir_path+'/'+pic_name
with open(pic_path,'wb') as f:f.write(pic_content.content)print(f'[+] {pic_name}下载完毕')
完整代码
import requests
from lxml import etree
import osheaders = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36','cookie':'Hm_lvt_c08bad6ac66a035b30e72722f365229b=1642073389; Hm_lpvt_c08bad6ac66a035b30e72722f365229b=1642073420','referer':'https://www.tupianzj.com/meinv/mm/meizitu/',
}url = 'https://xxx.com/meinv/20211208/236000.html'# 将源码解析成html
r = requests.get(url,headers=headers)
html = etree.HTML(r.content.decode('gb2312'))# 用xpath选择器匹配指定元素
pic_tag = html.xpath('//div[@id="bigpic"]//img/@src') #列表
pic_src = pic_tag[0]
# 获得图片的二进制数据
pic_content = requests.get(pic_src,headers=headers)#创建文件夹用于保存图片
dir_path = 'e:/meizitu'
if not os.path.exists(dir_path):os.mkdir(dir_path)print(f"[+] 创建{dir_path.split('/')[1]}文件夹")pic_name = 'pic1.jpeg'
pic_path = dir_path+'/'+pic_name
with open(pic_path,'wb') as f:f.write(pic_content.content)print(f'[+] {pic_name}下载完毕')
效果
自动创建了一个目录并写入一张图片
睡觉也在爬虫之一(爬一张图片)相关推荐
- python爬虫反爬机制_Python Scrapy突破反爬虫机制(项目实践)
对于 BOSS 直聘这种网站,当程序请求网页后,服务器响应内容包含了整个页面的 HTML 源代码,这样就可以使用爬虫来爬取数据.但有些网站做了一些"反爬虫"处理,其网页内容不是静态 ...
- Python爬虫:爬取instagram,破解js加密参数
Python爬虫:爬取instagram,破解js加密参数 instagram 是国外非常流行的一款社交网站,类似的还有像facebook.twitter,这些社交网站对于掌握时事热点.电商数据来源和 ...
- Go语言并发爬虫,爬取空姐网所有相册图片
转载地址:Go语言中文网 说到爬虫,不得不提到我自己写的<Python网络爬虫requests.bs4爬取空姐网图片>,可以在我的csdn看到这篇文章.这个爬虫很简洁,使用requests ...
- python网络爬虫_爬图片
python网络爬虫_爬图片 1.安装 Beautifulsoup4 #解析返回的html与json数据pip install Beautifulsoup4 使用 : 运行后输入要 ...
- 《爬虫》爬取谷歌网页“人脸”图片
爬取谷歌网页搜索的关于"人脸"的图片 目标:谷歌搜索"人脸" 网页搜索出现的图片 selenium:模拟浏览器的工具.(还需要下载ChromeDriver 放到 ...
- lofter 爬虫_Python网络爬虫1 - 爬取网易LOFTER图片
LOFTER是网易出品的优质轻博客,灵感源于国外的tumblr,但比之更加文艺,更加本地化.本人非常喜欢LOFTER的UI设计,以及其中的优质用户和内容,似乎网易并不擅长推广,所以受众并不广泛.这都是 ...
- python爬虫爬取百度图片总结_爬虫篇| 爬取百度图片(一)
什么是爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引.模 ...
- Python爬虫之爬取淘女郎照片示例详解
更多编程教程请到:菜鸟教程 https://www.piaodoo.com/ 友情链接: 高州阳光论坛https://www.hnthzk.com/ 人人影视http://www.op-kg.com/ ...
- 用Python爬虫来爬写真网图片
用Python爬虫来爬写真网图片 1.我们先要知道Python爬虫的原理 基本的Python爬虫原理很简单,分为三步 获取网页源码 通过分析源码并通过代码来获取其中想要的内容 进行下载或其他操作 话不 ...
最新文章
- LeetCode实战:二叉树的最大深度
- 主键需要键索引吗_MySQL 索引的知识点都在这里了,建议收藏!
- include,require,include_once,require_once区别
- 轻量级web富文本框——wangEditor使用手册(2)——扩展一个“缩进”功能 demo
- mysql sql 字符串字段保留数字_sql中取字符串中的数字语句_MySQL
- 2、MySQL主键(PRIMARY KEY)
- Weex Workshop 挑战赛,等你来战!
- hdu-3015 Disharmony Trees---离散化+两个树状数组
- rhel6.2安装oracle11g,RHEL 6.2 x86_64 下安装Oracle 11g步骤
- Android low memory killer 机制
- Java文件类boolean setLastModified(long set_new_time)方法,包含示例
- /etc/fstab文件分析(第二版)
- 【今日所得】1.29。。。
- matable的作用
- python123练习六+练习七
- Ubuntu安装开发版pidgin支持lwqq插件
- 标志寄存器FLAGS----小总结
- Neo4j图数据库高级应用系列 / 服务器扩展指南 APOC - apoc.periodic.iterate()过程在4.0版本中的重大变化
- 基于STM32单片机智能RFID刷卡汽车位锁设计(论文
- UVA(WA) 10815 安迪的第一个字典