利用Selenium爬取煎蛋网妹纸图原来是这么简单!!!
上期说到,下期更新爬取煎蛋网妹纸的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!!')
注释:
- 本文采用了selenium进行页面的自动化爬取,它是一个自动化测试工具。本文以Firefox进行爬取,在使用之前请确保安装好Firefox浏览器并配置好geckodriver。另外,还需要正确安装好Python的Selenium库。
- selenium的安装
最简单的方法使用pip安装:pip install selenium - GeckoDriver的安装
下载地址:https://github.com/mozilla/geckodriver/releases
下载完成之后,将geckodriver.exe文件拖拽到Python的Scripts目录下面。 - 上全部源代码。
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爬取煎蛋网妹纸图原来是这么简单!!!相关推荐
- selenium爬取煎蛋网
selenium爬取煎蛋网 直接上代码 from selenium import webdriver from selenium.webdriver.support.ui import WebDriv ...
- python 爬虫爬取煎蛋网妹子图,我1T的硬盘装满了!
前言 大家好,这里是「brucepk」爬虫 系列教程.此系列教程以实例项目为材料进行分析,从项目中学习 python 爬虫,跟着我一起学习,每天进步一点点. 煎蛋网站 image 很多朋友都反应学 p ...
- python爬取煎蛋网妹子图
看了小甲鱼的python教学视频,爬取煎蛋网妹子图的代码已经不适用了,网上其它人的代码多有报错,本萌新结合其他人的方法,终于写出一个可行的,在此分享_(:з)∠)_(运行非常慢就是了) import ...
- 利用C#爬取煎蛋网图片
本程序还有待优化,我只爬取了每个页面的第一张图片,你们可以自己更新优化代码以实现全站爬取的功能. 主要用到的命名空间有: using System; using System.Collections. ...
- python爬取煎蛋网妹子图,已解密图片~~~~~
本来想爬一波无聊图,唉,竟然加密了.... 还好是base64 不说了,代码献上 2018.12.14 有效..... import requests from bs4 import Beautifu ...
- Python Scrapy 爬取煎蛋网妹子图实例(一)
前面介绍了爬虫框架的一个实例,那个比较简单,这里在介绍一个实例 爬取 煎蛋网 妹子图,遗憾的是 上周煎蛋网还有妹子图了,但是这周妹子图变成了 随手拍, 不过没关系,我们爬图的目的是为了加强实战应用,管 ...
- 爬取煎蛋网中的妹子图
看了小甲鱼爬取煎蛋网的视频,但是当时无论怎么写都写不出来,后来又看了一点其他视频,心血来潮把那段代码重写了一次,总算成功了,也算是解决一个心病吧,唯一美中不住的是还是不太会使用find函数,慢慢来吧, ...
- python爬虫图片实例-Python爬虫爬取煎蛋网图片代码实例
这篇文章主要介绍了Python爬虫爬取煎蛋网图片代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 今天,试着爬取了煎蛋网的图片. 用到的包: ...
- python爬图代码实例_Python爬虫爬取煎蛋网图片代码实例
这篇文章主要介绍了Python爬虫爬取煎蛋网图片代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 今天,试着爬取了煎蛋网的图片. 用到的包: ...
最新文章
- pandas 字符串数据类型转换成数字型
- 关于文档的基本操作---ElasticSearch
- php 判断页面加载完,所有ajax执行完且页面加载完判断
- matlab 数值格式转换,Matlab字符串转换及数值格式转换
- 钉钉一个人怎么多部门 钉钉一个人加入多个部门的技巧
- C#中Font类详解
- 百练6183-人民币支付-2014正式A题
- 数据分析的步骤和常用方法
- [转]一淘网是如何实现系统架构的
- 什么是CAD?制图CAD要怎么开始学习?
- 软文发稿推广要怎么做?
- Strings and Runes
- 串级PID及角度过零处理
- mysql强行结束程_如何强制结束进程?
- 计算机一级office考试大纲,计算机一级考试MSoffice考试大纲
- ProcessDefinition是干这个用的
- 车牌输入法 车牌号快捷输入法 支持普通车牌新能源车牌
- 淘宝、飞猪、闲鱼全都挂了!阿里程序员要被祭天了?
- oracle服务启动自动关闭,oracle启动服务时,启动之后又立即自动停止
- div盒子水平垂直居中的几种方式