上期说到,下期更新爬取煎蛋网妹纸的selenium版本,它来了!!!

  • 获取页面url信息
    • 获取图片url信息
      • 永久性保存图片
    • 注释:
    • 想要获取GeckoDriver安装包的小伙伴,可以给博主留言或者搜索公众号 *Crawler 乐趣* 。

本文代码依旧采用模块化程序设计思想,设计了三个模块来完成不同的功能,分别是上述三个模块,接下来,简单干脆,进入主题,一起分析完成代码操作吧!!

获取页面url信息

  • 也许还是思考这个模块有什么作用呢,噢,是这样子的!本模块是将基本的页面所包含的几个页面的链接解析并保存下来。
  • 下面我们就要对网页进行分析,首先打开开发者模式(快捷键为F2),对需要解析的页面进行定位,也就是点击左上角的符号,将鼠标拖拽到页码的位置,就会在页面源码中发现页面保存的位置,得到页码保存的位置,就可以将其解析出来。
  • 上面我们发现了页码其实对应的是url链接,我们将其解析出来,在后面的模块中将逐一获取每一个url对应的图片的信息。我们通过观察发现所有的url都保存在div class = “cp-pagenavi” 下面的 a 标签里面。所以我们只要将 a 标签里买你的 href 属性里面的内容解析出来,就是我们需要的url 链接。
    那么我们直接上代码,都已经说得很清楚了~~~~~
def get_url_list():try:browser = webdriver.Firefox()browser.get('http://jandan.net/ooxx')url = browser.find_element_by_class_name('cp-pagenavi')href = url.find_elements_by_tag_name('a')href_list = []for idx,ele in enumerate(href):url = ele.get_attribute('href')href_list.append(url)print(f'url_{idx}: {ele.get_attribute("href")}')time.sleep(1 + random.random())#print(href_list)return href_listexcept NoSuchAttributeException:print('No Element!')finally:browser.close()

获取图片url信息

  • 这个模块将每一个url链接中的所有图片的链接保存下来,在后面的模块中将其进行保存。那么来看 ,我们打算保存的是图片的原图,所有的图片连接都保存在文本内容是 [查看原图]a 标签里面。我们只要将 a 标签的 href 属性里面的内容解析出来,就是我们需要的图片的地址链接,而且这样做的话也不需要进行异常处理,程序只是检测所有的【查看原图】,更加具有稳定性。
    还是来直接看代码~~~~~~
def get_img_list(url):try:browser = webdriver.Firefox()browser.get(url)ol = browser.find_elements_by_partial_link_text('[查看原图]')img_list = []for idx,ele in enumerate(ol):url = ele.get_attribute('href')img_list.append(url)print(f'ol_{idx}:{ele.get_attribute("href")}')#print(img_url)return img_listfinally:browser.close()

永久性保存图片

  • 这个模块是将保存下来的图片的链接地址进行请求,将二进制的图片进行可视化存储。我们首先通过os库在根目录下面创建一个文件夹保存所有的图片,其次将图片的链接进行请求,保存图片。
    原理就是这么一个原理,直接上代码!!!
def save_img_list(message):if not os.path.exists('./img_Libs'):os.mkdir('./img_Libs')headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}for img in message:try:response = requests.get(url=img, headers=headers)if response.status_code == 200:response.encoding = response.apparent_encodingimg_data = response.contentexcept TimeoutError:print('请求超时!!!')img_path = './img_Libs/' + img.split('/')[-1]#print(img_path)with open(img_path,'wb') as fp:fp.write(img_data)print('All pictures is successfully!!')

注释:

  1. 本文采用了selenium进行页面的自动化爬取,它是一个自动化测试工具。本文以Firefox进行爬取,在使用之前请确保安装好Firefox浏览器并配置好geckodriver。另外,还需要正确安装好Python的Selenium库。
  2. selenium的安装
    最简单的方法使用pip安装:pip install selenium
  3. GeckoDriver的安装
    下载地址:https://github.com/mozilla/geckodriver/releases
    下载完成之后,将geckodriver.exe文件拖拽到Python的Scripts目录下面。
  4. 上全部源代码。
import time
import random
import requests
import os
from selenium import webdriver
from selenium.common.exceptions import NoSuchAttributeExceptiondef get_url_list():try:browser = webdriver.Firefox()browser.get('http://jandan.net/ooxx')url = browser.find_element_by_class_name('cp-pagenavi')href = url.find_elements_by_tag_name('a')href_list = []for idx,ele in enumerate(href):url = ele.get_attribute('href')href_list.append(url)print(f'url_{idx}: {ele.get_attribute("href")}')time.sleep(1 + random.random())#print(href_list)return href_listexcept NoSuchAttributeException:print('No Element!')finally:browser.close()def get_img_list(url):try:browser = webdriver.Firefox()browser.get(url)ol = browser.find_elements_by_partial_link_text('[查看原图]')img_list = []for idx,ele in enumerate(ol):url = ele.get_attribute('href')img_list.append(url)print(f'ol_{idx}:{ele.get_attribute("href")}')#print(img_url)return img_listfinally:browser.close()def save_img_list(message):if not os.path.exists('./img_Libs'):os.mkdir('./img_Libs')headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}for img in message:try:response = requests.get(url=img, headers=headers)if response.status_code == 200:response.encoding = response.apparent_encodingimg_data = response.contentexcept TimeoutError:print('请求超时!!!')img_path = './img_Libs/' + img.split('/')[-1]#print(img_path)with open(img_path,'wb') as fp:fp.write(img_data)print('All pictures is successfully!!')def main():href_list = get_url_list()for url in href_list:img_list = get_img_list(url)save_img_list(img_list)print('Everything is done!!!')if __name__ == '__main__':main()

想要获取GeckoDriver安装包的小伙伴,可以给博主留言或者搜索公众号 Crawler 乐趣

利用Selenium爬取煎蛋网妹纸图原来是这么简单!!!相关推荐

  1. selenium爬取煎蛋网

    selenium爬取煎蛋网 直接上代码 from selenium import webdriver from selenium.webdriver.support.ui import WebDriv ...

  2. python 爬虫爬取煎蛋网妹子图,我1T的硬盘装满了!

    前言 大家好,这里是「brucepk」爬虫 系列教程.此系列教程以实例项目为材料进行分析,从项目中学习 python 爬虫,跟着我一起学习,每天进步一点点. 煎蛋网站 image 很多朋友都反应学 p ...

  3. python爬取煎蛋网妹子图

    看了小甲鱼的python教学视频,爬取煎蛋网妹子图的代码已经不适用了,网上其它人的代码多有报错,本萌新结合其他人的方法,终于写出一个可行的,在此分享_(:з)∠)_(运行非常慢就是了) import ...

  4. 利用C#爬取煎蛋网图片

    本程序还有待优化,我只爬取了每个页面的第一张图片,你们可以自己更新优化代码以实现全站爬取的功能. 主要用到的命名空间有: using System; using System.Collections. ...

  5. python爬取煎蛋网妹子图,已解密图片~~~~~

    本来想爬一波无聊图,唉,竟然加密了.... 还好是base64 不说了,代码献上 2018.12.14 有效..... import requests from bs4 import Beautifu ...

  6. Python Scrapy 爬取煎蛋网妹子图实例(一)

    前面介绍了爬虫框架的一个实例,那个比较简单,这里在介绍一个实例 爬取 煎蛋网 妹子图,遗憾的是 上周煎蛋网还有妹子图了,但是这周妹子图变成了 随手拍, 不过没关系,我们爬图的目的是为了加强实战应用,管 ...

  7. 爬取煎蛋网中的妹子图

    看了小甲鱼爬取煎蛋网的视频,但是当时无论怎么写都写不出来,后来又看了一点其他视频,心血来潮把那段代码重写了一次,总算成功了,也算是解决一个心病吧,唯一美中不住的是还是不太会使用find函数,慢慢来吧, ...

  8. python爬虫图片实例-Python爬虫爬取煎蛋网图片代码实例

    这篇文章主要介绍了Python爬虫爬取煎蛋网图片代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 今天,试着爬取了煎蛋网的图片. 用到的包: ...

  9. python爬图代码实例_Python爬虫爬取煎蛋网图片代码实例

    这篇文章主要介绍了Python爬虫爬取煎蛋网图片代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 今天,试着爬取了煎蛋网的图片. 用到的包: ...

最新文章

  1. pandas 字符串数据类型转换成数字型
  2. 关于文档的基本操作---ElasticSearch
  3. php 判断页面加载完,所有ajax执行完且页面加载完判断
  4. matlab 数值格式转换,Matlab字符串转换及数值格式转换
  5. 钉钉一个人怎么多部门 钉钉一个人加入多个部门的技巧
  6. C#中Font类详解
  7. 百练6183-人民币支付-2014正式A题
  8. 数据分析的步骤和常用方法
  9. [转]一淘网是如何实现系统架构的
  10. 什么是CAD?制图CAD要怎么开始学习?
  11. 软文发稿推广要怎么做?
  12. Strings and Runes
  13. 串级PID及角度过零处理
  14. mysql强行结束程_如何强制结束进程?
  15. 计算机一级office考试大纲,计算机一级考试MSoffice考试大纲
  16. ProcessDefinition是干这个用的
  17. 车牌输入法 车牌号快捷输入法 支持普通车牌新能源车牌
  18. 淘宝、飞猪、闲鱼全都挂了!阿里程序员要被祭天了?
  19. oracle服务启动自动关闭,oracle启动服务时,启动之后又立即自动停止
  20. div盒子水平垂直居中的几种方式

热门文章

  1. 音源分享:Spectrasonics Trilian贝司 优化整合版下载
  2. fillcolor是什么意思_CSS3 text-fill-color简介及应用展示
  3. 文献速递第1期:fNIRS 的近期研究
  4. 01云计算与大数据之大数据环境下的云计算架构
  5. EDIUS实现跟踪马赛克效果的教程
  6. 华为HCNA实验11-配置直连路由
  7. ampak正基RF定频手动测试命令
  8. 职高计算机班主任工作计划,职业中学计算机班班主任工作计划.doc
  9. win10系统解决便签无法打开问题
  10. adams优化设计移动副_副车架多学科优化及轻量化优化设计