python爬取网站的图片

本次爬取图片所需要用到的库:Requests库,BeautifulSoup库,正则表达式,os库。

思路:先爬一张图片,再爬一个网站的图片

先爬一张图片:

首先要得到这张图片的地址,可以直接找到图片然后复制地址,还可以在网站中右击然后检查(谷歌浏览器快捷键是F12)中找到,这里用后种方式方便后面的理解,如图:

然后就可以把地址复制到代码中去,代码如下:

import requests
import os                               #这是一个和路径相关的库
#图片所在的网址,jpg,png等格式
url="https://files.yande.re/image/f312298021cf93355d185e3e28e5b52c/yande.re%20535947%20berserker_of_black_%28fate_apocrypha%29%20breast_hold%20cleavage%20dress%20fate_apocrypha%20fate_grand_order%20fate_stay_night%20horns%20samsafe%20wedding_dress.jpg"root="F://pic//"                          #需要存储的根目录
path=root+url.split('/')[-1]            #需要存储的路径以及文件名,若要自定义文件名则只需将改为path=root+"文件名.jpgtry:                                   #处理异常用if not os.path.exists(root):          #判断根目录是否存在,不存在就创建os.mkdir(root)if not os.path.exists(path):      #查看文件(文件路径)是否存在r=requests.get(url)              #浏览器向服务器发出请求print(r.status_code)            #查看状态码,结果为200则获取成功 with open(path,'wb') as f:f.write(r.content)            #把获取到的内容以二进制形式写入文件(图片等文件都是二进制存储的)f.close()                    #写完后好像with自己会关,这行代码可要可不要print("文件保存成功")else:print("文件已存在")
except:print("爬取失败")

代码的详细注释都在上面,执行之后的图片如下:


这张图片有2.11M的大小花了71秒,接下来,爬取一个网站的图片。

思路:先爬取网站所有图片的网址,再利用循环像刚刚那样就可以爬整个网站的图片了。代码如下:
#图片等文件爬取全代码
import requests
import os
import re
from bs4 import BeautifulSouphtml="https://yande.re/post?tags=fate%2Fstay_night"
res=requests.get(html)                 #有了网站地址后向服务器发出请求
bs=BeautifulSoup(res.text,'lxml')        #运用解析库解析获取的内容#通过正则表达式和beautifulsoup的find_all函数获取所有图片的地址,并且以列表形式返回给images
images=bs.find_all("a",{"class":"directlink largeimg","href":re.compile(r"\.jpg")})for image in images:                  #在列表中循环url=image["href"]                 root="F://pic//"                     #需要存储的根目录path=root+url.split('/')[-1]       #需要存储的路径以及文件名,若要自定义文件名则只需将改为path=root+"文件名.jpg"try:if not os.path.exists(root):      #查看根目录是否存在,不存在就创建os.mkdir(root)if not os.path.exists(path):  #查看文件(文件路径)是否存在r=requests.get(url)          #浏览器向服务器发出请求        with open(path,'wb') as f:f.write(r.content)      #把获取到的内容以二进制形式写入文件(图片等文件都是二进制存储的)f.close()                #写完后好像with自己会关,这行代码可要可不要print("文件保存成功")        else:print("文件已存在")except:print("爬取失败")
然后执行就可以了,在写博客的时候发现存在一个问题,整个代码向服务器发送了两次请求,一次请求网站地址的内容,一次请求图片网址的内容,降低了运行速度,不知道其他算法写的代码需不需要请求两次,刚开始学爬虫,不懂的还有很多,有意见或者建议请在评论里发言。下面更新后的完整代码,增加了对付反爬虫机制以及计数的代码。
#图片等文件爬取全代码
import requests
import os
import re
from bs4 import BeautifulSoup
import random
import timei=0 #用来计数
#代理ip,针对反爬虫机制
proxylist=[{"http":"http://182.88.122.115:9797"},{"http":"http://183.49.87.142:9000"},{"http":"http://125.32.81.197:8080"}
]
proxy=random.choice(proxylist)
#请求头,针对反爬虫机制
agent1="Mozilla/5.0 (Windows NT 10.0; Win64; x64) \
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36"  #谷歌
agent2="Mozilla/5.0 (Windows NT 6.1; WOW64) \
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36" #360
agent3="Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1;\WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5\.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; \.NET4.0E; QQBrowser/7.0.3698.400)"                                            #qq
agent4="Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 \
(KHTML, like Gecko) Chrome/17.0.963.84 Safari/535.11 SE 2.X MetaSr 1.0"        #搜狗
agent5="Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 \
(KHTML, like Gecko) Chrome/38.0.2125.122 UBrowser/4.0.3214.0 Safari/537.36"    #UC
list1=[agent1,agent2,agent3,agent4,agent5]for x in range(0,10):agent=random.choice(list1)     #随机选一个ip地址header={"User-Agent":agent}        #随机选一个user-agenthtml="https://anime-pictures.net/pictures/view_posts/"+str(x)+"?search_tag=katou%20megumi&order_by=date&ldate=0&lang=en" res=requests.get(html,proxies=proxy,headers=header)time.sleep(1)                 #有了网站地址后向服务器发出请求bs=BeautifulSoup(res.text,'lxml')        #运用解析库解析获取的内容#通过正则表达式和beautifulsoup的find_all函数获取所有图片的地址,并且以列表形式返回给imagesimages=bs.find_all("img",{"src":re.compile(r"\.jpg")})for image in images:                   #在列表中循环url="http:"+image["src"]                   root="F://路人女主1//"                       #需要存储的根目录path=root+url.split('/')[-1]       #需要存储的路径以及文件名,若要自定义文件名则只需将改为path=root+"文件名.jpg"try:if not os.path.exists(root):      #查看根目录是否存在,不存在就创建os.mkdir(root)if not os.path.exists(path):  #查看文件(文件路径)是否存在r=requests.get(url,proxies=proxy,headers=header)           #浏览器向服务器发出请求time.sleep(1)   with open(path,'wb') as f:f.write(r.content)      #把获取到的内容以二进制形式写入文件(图片等文件都是二进制存储的)f.close()                #写完后好像with自己会关,这行代码可要可不要print("文件保存成功"+str(i))    i=i+1 else:print("文件已存在"+str(i))i=i+1except:print("爬取失败"+str(i))i=i+1
print(i)

python爬取网站的图片相关推荐

  1. python爬取网站源代码+图片

    python爬取网站源代码+图片 需求分析 基础知识 正则表达式 python网络请求 文件读写 实现 基本思路 具体实现 结果 总结 需求分析 大部分有志青年都想建立属于自己的个人网站,从零开始设计 ...

  2. python爬虫怎么爬取图片_怎么用python爬取网站Jpg图片

    用python爬取网站图片,通过引用requests库就可完成.下面,小编将以爬取百度图片为例 工具/原料 python环境,网络 安装requests库 1 cmd打开命令行界面,输入pip ins ...

  3. python爬取网站美女图片

    今天周五,项目刚刚上线完,有些时间,闲着无聊,继续复习爬虫,这次打算爬取网站的美女图片.得先找到目标,然后目标网站还不会反爬虫,因为自己只是小白,好了开始. 寻找目标,发现了目标,哈哈 http:// ...

  4. python如何爬取网页视频_快就完事了!10分钟用python爬取网站视频和图片

    原标题:快就完事了!10分钟用python爬取网站视频和图片 话不多说,直接开讲!教你如何用Python爬虫爬取各大网站视频和图片. 638855753 网站分析: 我们点视频按钮,可以看到的链接是: ...

  5. Python爬取网站图片并保存,超级简单

    Python爬取网站图片并保存,超级简单 先看看结果吧,去bilibili上拿到的图片=-= 第一步,导入模块 import requests from bs4 import BeautifulSou ...

  6. Python爬虫实战之爬取网站全部图片(一)

    Python爬虫实战之爬取网站全部图片(二) Python爬虫实战之通过ajax获得图片地址实现全站图片下载(三) 一.获得图片地址 和 图片名称 1.进入网址之后 按F12  打开开发人员工具点击e ...

  7. Python爬取网站图片数据

    Python爬取网站图片数据 找到需要爬取的网站地址 模拟网站http请求 根据调试模式获取的了解读取到真实的地址url,读取请求头数据和参数信息,模拟http请求调用 import requests ...

  8. python爬取动态网页图片

    爬取某知名网站图片(爬取动态网页) python爬取动态网页图片 python爬取动态网页图片 环境: python3.pycharm 库: requests.urllib.json 思路: 1.分析 ...

  9. Python爬取小姐姐图片

    使用Python爬取小姐姐图片 首先上网站链接 唯美女生 爬取图片主要分为一下几步: 1.打开一个你喜欢的小姐姐的网站 E.g xiaojiejie web 2.下载并安装python环境 pytho ...

最新文章

  1. 解决莫名其妙出现connection closed的错误
  2. Android导入工程提示Invalid project description
  3. bg和fg指令(整理)以及 Linux中Ctrl+C、Ctrl+D等按键操作进程相关命令
  4. java转换音频采样率_转换音频采样率
  5. html美化file按钮,css 美化file按钮
  6. mysql数据库txt备份linux_linux备份mysql数据库
  7. Linux echo
  8. Java compiler level does not match the version of the installed Java project fac
  9. Java 程序员中位数薪资达 1.45 万,但面试屡屡被拒?
  10. LVM逻辑卷使用手册
  11. 使用yum方式安装mysql5.6
  12. 多视角子空间学习系列之 MCCA (Multi-view CCA) 多视角CCA Horst算法
  13. “iPad 上不可错过的应用有哪些?”
  14. FlashPaper Win2003部署
  15. php风格模板,phpwind冷色调整站风格模板
  16. 导出word如何默认打开为页面视图
  17. P12-Windows与网络基础-Windows组管理
  18. 后台架构设计—数据存储层
  19. python画微信表情_python画微信表情符的实例代码
  20. 服装智能供应链管理系统和企业以需要为导向

热门文章

  1. 【LaTeX】子图和图片并排
  2. java 相关论坛或网站
  3. Keras Tuner模型自动超参数调优
  4. 在pe下怎样重装服务器系统,PE怎么重装系统|PE系统重装图文教程
  5. Qt入门-QLabel类
  6. java常用设计模式之多例模式
  7. python给我做500份问卷
  8. 8通道CAN FD,更强大的数据记录仪GL3400
  9. 《ESP32》Adafruit_GFX、u8g2驱动ssd1306
  10. 你妈给你介绍对象,你说自己new一个 | 程序员母亲节快乐