之前爬一个美女图片网站,因为是动态加载网站,爬下来的图片全是转呀转的GIF图,气死我了,学了selenium之后,龙王归来,势在必得

先看需要的库

from selenium import webdriver
from lxml import etree
import time
import requests

我们使用selenium去打开页面

#实例化了一个浏览器对象(一定要传入浏览器的驱动程序)
wd = webdriver.Chrome(executable_path=r'./chromedriver/chromedriver.exe')
#打开网站
wd.get('这里写你要爬的网址,这里就不方便展示了')# UA伪装请求头
header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chromeh/81.0.4044.138 Safari/537.36'
}

selenium获取网页源码

page_text = wd.page_source

再使xpath去获取图片地址

tree = etree.HTML(page_text)tr = tree.xpath('//div[@class="nbodys"]/img/@src')

爬完之后发现一个问题,依旧出现转呀转的GIF图,是因为这个网站的图片是动态加载,必须要慢慢去滚动页面,才能加载出来

我们使用js的下拉页面,使用for循环一点一点的下拉

for i in range(1,20000,500):wd.execute_script("window.scrollTo(0, %s);"%i)page_text = wd.page_sourcetree = etree.HTML(page_text)

这里又出现问题,图片网址夹杂在一堆相同的GIF图地址之中,而且爬出来的h图网址有重合的地方,是因为selenium下拉500的话,会有地方重合爬取

我们需要使用遍历,将一个一个网址遍历出来,再设定一个列表,然后再去判断是否为转呀转GIF图的网址,不是的话,就存在列表之中,再将列表进行去重,最后得到正确的网址

#创建一个空的列表
num = []
#将爬出东西的遍历
for trr in tr:#去除障碍信息if trr != '/Public/images/tian/loadpic.gif':#将爬取到的图片地址存储到num中um.append(trr)
#去重
num = list(set(num))

最后进行下载图片

for sum in num:#魔鬼细节:网站程序员在jpg后面加了空格防爬,去除即可sum = sum.replace(' ','')#剪切网址序号作为图片名字sy = sum[-6:-4]#去除下划线sy = sy.replace('_', '')img = requests.get(url=sum, headers=header).contentimgpath = './selenium-图片/' + sy + '.jpg'with open(imgpath, 'wb') as fp:# 传入二进制内容fp.write(img)print(sy,'爬取成功!')print("爬取成功")

完整代码

from selenium import webdriver
from lxml import etree
import time
import requests#实例化了一个浏览器对象(一定要传入浏览器的驱动程序)
wd = webdriver.Chrome(executable_path=r'./chromedriver/chromedriver.exe')
#打开网站
wd.get('这里写你要爬的网址,这里就不方便展示了')# UA伪装请求头
header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chromeh/81.0.4044.138 Safari/537.36'
}#创建一个空的列表
num = []print("开始爬取...")for i in range(1,20000,500):wd.execute_script("window.scrollTo(0, %s);"%i)page_text = wd.page_sourcetree = etree.HTML(page_text)tr = tree.xpath('//div[@class="nbodys"]/img/@src')#将爬出东西的遍历for trr in tr:#去除障碍信息if trr != '/Public/images/tian/loadpic.gif':#将爬取到的图片地址存储到num中num.append(trr)time.sleep(1.5)#去重
num = list(set(num))for sum in num:#魔鬼细节:网站程序员在jpg后面加了空格防爬,去除即可sum = sum.replace(' ','')#剪切网址序号作为图片名字sy = sum[-6:-4]#去除下划线sy = sy.replace('_', '')img = requests.get(url=sum, headers=header).contentimgpath = './selenium-图片/' + sy + '.jpg'with open(imgpath, 'wb') as fp:# 传入二进制内容fp.write(img)print(sy,'爬取成功!')print("爬取成功")

最终的图片就不放出来了,反正非常舒服,这里是提供一个思路,大家注意身体[dog]

python爬虫爬取美女图片(selenium)相关推荐

  1. Python爬虫爬取美女写真实例

    Python爬虫爬取美女写真实例 微信关注公众号:夜寒信息 致力于为每一位用户免费提供更优质技术帮助与资源供给,感谢支持!     这是我写的一个较为简单的爬虫代码,用于爬取美女写真(咳咳,当然是正规 ...

  2. python爬虫,爬取下载图片

    python爬虫,爬取下载图片 分别引入以下三个包 from urllib.request import urlopen from bs4 import BeautifulSoup import re ...

  3. Python爬虫爬取相关图片

    简要的实现实现Python爬虫爬取百度贴吧页面上的图片,下面的网页就是本篇博客所要爬的网页,当然看到的只是其中的一部分图片,是所要爬取的页面, 而下图则是最终的爬取的图片: 接下来就简要的讲讲爬取的整 ...

  4. python爬虫爬取网页图片_Python爬虫:爬取网页图片

    先分析查找要爬取图片的路径 在浏览器F12 审查元素 整体实现代码 # -- coding:UTF-8 -- import requests from bs4 import BeautifulSoup ...

  5. 上手快!!福利局!新手如何使用python爬虫爬取网页图片(使用正则进行数据解析)当然这个新手是我自己

    作为一个python新入门小白,突然就想发个博客,一方面为了记录学习历程,一方面能分享给新入门的同学经验,更多的是想和大家一起学习和交流.以下是我以小白的角度分享的爬虫的相关知识和一个简单的爬取网页图 ...

  6. python爬虫爬取百度图片总结_python爬虫如何批量爬取百度图片

    当我们想要获取百度图片的时候,面对一张张图片,一次次的点击右键下载十分麻烦.python爬虫可以实现批量下载,根据我们下载网站位置.图片位置.图片下载数量.图片下载位置等需求进行批量下载,本文演示py ...

  7. python爬虫爬取百度图片,python爬虫篇2:爬取百度图片

    入门级 import requests import re import os from urllib import error def main(): dirPath = "E:\pyth ...

  8. 利用python爬虫爬取斗鱼图片(简单详细)

    关于 在一个安静的夜晚,我缓慢的打开了电脑,望着已经睡着的父母,我轻轻的把门关上,看着斗鱼颜值主播的魅力,我不尽感叹,要是每天都可以不需要那么麻烦的去看那该有多好! 于是我想起了最近刚学的爬虫,嘴角露 ...

  9. Python爬虫爬取src图片

    Python爬虫爬取图片 需要用到的库: os time request lxml 代码源码如下: import os import time import requests from lxml im ...

最新文章

  1. Linux用户必须知道的常用终端快捷键
  2. 汉军Hundre考勤数据库数据表分析总结
  3. Docker之Docker网络讲解
  4. SpringBoot集成MyBatisPlus
  5. 5、WPF实现简单计算器-非常适合初学者练习
  6. 使用深度学习技术进行水印去除
  7. 值得一生收藏的经典台词
  8. 微信html5电子相册,如何快速制作微信H5电子相册?
  9. kylinserverv10部署dm8单实例命令行方式安装
  10. dfema规则_六步搞定DFMEA表格
  11. ICLR2020论文阅读笔记reformer: THE EFFICIENT TRANSFORMER
  12. 如何下载、使用英文期刊的LaTeX模板(以TIE为例)
  13. 宠物领养系统C语言代码,宠物领养软件的设计与实现.docx
  14. 黑盒测试用例的设计与编写
  15. 思必驰俞凯图解认知计算是什么?
  16. 利用bitmap处理海量数据问题:43亿QQ号所占内存大小为什么是512M?40亿个QQ号如何去重?
  17. invalidateProperties
  18. 【Cubase】Cubase编曲时声卡没有声音的解决方法
  19. UWP应用的标题修改
  20. postmain报400_Postman测试@RequestBody发送请求时报400错误

热门文章

  1. CAD版本转换器有哪些?这些工具轻松转换CAD版本
  2. js中click 和onclick之间的区别
  3. SP 导出 PS 有缝隙的问题
  4. 058 业务逻辑漏洞
  5. 初学Python实训心得以及一个爬虫例子
  6. miniconda下载安装
  7. python函数定义和调用顺序
  8. 开源“瘦身”,惠普WebOS团队裁员275人
  9. 阿里拼多多争夺百万外贸厂长背后,藏着中国消费的基本盘
  10. 机器学习中的数学——Jacobian矩阵和Hessian矩阵