爬一张图片

  • 使用环境
  • 爬虫思路
    • 找一个图片网站
    • 找到图片的源地址
    • 下载图片
  • 实现过程
  • 完整代码
  • 效果

使用环境

  1. chrome
  2. windows10
  3. python3
  4. requests (需要pip)
  5. 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}下载完毕')

效果

自动创建了一个目录并写入一张图片

睡觉也在爬虫之一(爬一张图片)相关推荐

  1. python爬虫反爬机制_Python Scrapy突破反爬虫机制(项目实践)

    对于 BOSS 直聘这种网站,当程序请求网页后,服务器响应内容包含了整个页面的 HTML 源代码,这样就可以使用爬虫来爬取数据.但有些网站做了一些"反爬虫"处理,其网页内容不是静态 ...

  2. Python爬虫:爬取instagram,破解js加密参数

    Python爬虫:爬取instagram,破解js加密参数 instagram 是国外非常流行的一款社交网站,类似的还有像facebook.twitter,这些社交网站对于掌握时事热点.电商数据来源和 ...

  3. Go语言并发爬虫,爬取空姐网所有相册图片

    转载地址:Go语言中文网 说到爬虫,不得不提到我自己写的<Python网络爬虫requests.bs4爬取空姐网图片>,可以在我的csdn看到这篇文章.这个爬虫很简洁,使用requests ...

  4. python网络爬虫_爬图片

    python网络爬虫_爬图片 1.安装 Beautifulsoup4 #解析返回的html与json数据pip install Beautifulsoup4 使用 :           运行后输入要 ...

  5. 《爬虫》爬取谷歌网页“人脸”图片

    爬取谷歌网页搜索的关于"人脸"的图片 目标:谷歌搜索"人脸" 网页搜索出现的图片 selenium:模拟浏览器的工具.(还需要下载ChromeDriver 放到 ...

  6. lofter 爬虫_Python网络爬虫1 - 爬取网易LOFTER图片

    LOFTER是网易出品的优质轻博客,灵感源于国外的tumblr,但比之更加文艺,更加本地化.本人非常喜欢LOFTER的UI设计,以及其中的优质用户和内容,似乎网易并不擅长推广,所以受众并不广泛.这都是 ...

  7. python爬虫爬取百度图片总结_爬虫篇| 爬取百度图片(一)

    什么是爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引.模 ...

  8. Python爬虫之爬取淘女郎照片示例详解

    更多编程教程请到:菜鸟教程 https://www.piaodoo.com/ 友情链接: 高州阳光论坛https://www.hnthzk.com/ 人人影视http://www.op-kg.com/ ...

  9. 用Python爬虫来爬写真网图片

    用Python爬虫来爬写真网图片 1.我们先要知道Python爬虫的原理 基本的Python爬虫原理很简单,分为三步 获取网页源码 通过分析源码并通过代码来获取其中想要的内容 进行下载或其他操作 话不 ...

最新文章

  1. LeetCode实战:二叉树的最大深度
  2. 主键需要键索引吗_MySQL 索引的知识点都在这里了,建议收藏!
  3. include,require,include_once,require_once区别
  4. 轻量级web富文本框——wangEditor使用手册(2)——扩展一个“缩进”功能 demo
  5. mysql sql 字符串字段保留数字_sql中取字符串中的数字语句_MySQL
  6. 2、MySQL主键(PRIMARY KEY)
  7. Weex Workshop 挑战赛,等你来战!
  8. hdu-3015 Disharmony Trees---离散化+两个树状数组
  9. rhel6.2安装oracle11g,RHEL 6.2 x86_64 下安装Oracle 11g步骤
  10. Android low memory killer 机制
  11. Java文件类boolean setLastModified(long set_new_time)方法,包含示例
  12. /etc/fstab文件分析(第二版)
  13. 【今日所得】1.29。。。
  14. matable的作用
  15. python123练习六+练习七
  16. Ubuntu安装开发版pidgin支持lwqq插件
  17. 标志寄存器FLAGS----小总结
  18. Neo4j图数据库高级应用系列 / 服务器扩展指南 APOC - apoc.periodic.iterate()过程在4.0版本中的重大变化
  19. 基于STM32单片机智能RFID刷卡汽车位锁设计(论文
  20. UVA(WA) 10815 安迪的第一个字典

热门文章

  1. 牛客小白月赛2 H.武
  2. 两行CSS代码实现瀑布流
  3. 网站本地化建设文章自动批量翻译工具
  4. python分析就业率_Python就业行情和前景分析之一
  5. Hadoop HA HDFS启动 NameNode启动失败解析
  6. 用Python画向日葵
  7. Vue 滚动事件穿透解决方案
  8. 杭州卫星地图 百度卫星地图(含道路、标签信息叠加)
  9. 操作系统 图形窗口 子系统
  10. oracle open hang 等待cursor: pin S wait on X---惜分飞