python 爬LOFTER 稍微升级,能够爬下一个人的所有上传的图片。

2023-10-31 00:30

本文主要是介绍python 爬LOFTER 稍微升级,能够爬下一个人的所有上传的图片。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

环境:见上一篇博客
这次以http://beautyimg001.lofter.com/该用户的图片为例,如有侵权,请及时联系我。
上次我们能够爬下单独网页上面的图片,以这个为基础,我们准备爬取他主页里的所有图片。(有点不厚道~~~~)
工具,这次用了selenium包里的webdriver。具体介绍大家可以去找一下,主要功能能模拟我们点击网页上的按钮。话不多说上码

import requests
from bs4 import BeautifulSoup
from selenium import webdriver
import os
import random
import re
import timechromepath = os.path.abspath("/Users/xxxx/Downloads/chromedriver")#使用selenium时注意要下载浏览器驱动,把他的路径写对。headers = {'User-Agent': 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)',# 'Referer': 'http://www.lofter.com'}def get_img_url(url):response = requests.get(url,headers=headers)soup = BeautifulSoup(response.text,'html.parser')title = soup.title.stringimg_list = soup.select('img')print(img_list)src = [i.get('src') for i in img_list]return src,titledef get_img(src,title):index = 0for i in src:current_time = time.time()random_tag = random.randint(0,200)finnal_tag = str(current_time)[6:-7]+ str(random_tag)#主要是防止每次调用get_img()时,会把同一个title的照片给重写了,每个图片名字打个独一无二的名字res = requests.get(i,headers= headers)f = open("/Users/xxxx/Desktop/craw/images/" + title + finnal_tag + "%d.jpg"  % index,'wb')#注意这里路径要写对f.write(res.content)f.close()index += 1return 0def get_type2_user_all_url_list(base_url,page):#这里是最关键的,叫type2是因为LOFTER上面,每个人的主页格式不同,这个适合上文提到的那个人的主页类型all_page_url_list = []all_page_url_list.append(base_url)#先把第一页的网址给listbrowser = webdriver.Chrome(chromepath)browser.get(base_url)#模拟打开该人的主页browser.find_element_by_xpath('/html/body/div[3]/div[11]/div[2]/a').click()#让浏览器点击下一页browser.find_element_by_xpath('/html/body/div[5]/div/div[3]/a').click()#这里是最关键也是耗费我很长时间才用明白的地方。这个在下文中专门作解释,这个操作的功能是,由于我们没有登录账号,第二页会弹出一个框,让你登录,不过你不把这个框叉掉,这就后面对浏览器就无法操作。all_page_url_list.append(browser.current_url)time.sleep(2)#这个主要是根据网速而定,因为如果第二页没有加载完全,你后面点击下一页那块没加载出来,程序会报错,说找不到点击下一页那个elementwhile page-2>0:browser.find_element_by_xpath('/html/body/div[3]/div[11]/div[2]/a').click()time.sleep(0.5)all_page_url_list.append(browser.current_url)page -= 1return all_page_url_list#这样就获取了你想要的page内的所有page的urlpage = input("Please enter how many page you want to craw:")
base_url = "http://beautyimg001.lofter.com/"
url_list = get_type2_user_all_url_list(base_url,int(page))
for url in url_list:src,title = get_img_url(url)get_img(src,title)
    讲一下具体怎么找到那个点击下一页的操作(浏览器源码大概知道一些,但是不熟),所以如果你觉得我的方法很low,那请移步至比较吊的人那。我用的Chrome,给大家讲一下Chrome的步骤,点击chrome窗口右上角的数着的省略号(学名:自定义及控制),然后选择"更多工具",在选择“开发者工具”,如下图所示:

在这里插入图片描述
` 然后就会弹出如下图所示:
在这里插入图片描述
在html里查找page,你就会发现class=“next active”,这个右键点击在那一行,然后copy,copy时有选项,选择xpath,然后用find_element_by_xpath(‘你复制的xpath’).click()。运用类似思路可以解决因为我们没有登录LOFTER导致在刷第二页时,弹出登录对话框。在源码里找‘close’你会搜到close的那个xpath,然后实现点掉弹出对话框的目的。

run,等结果,看下结果:(如有侵权(图片的),请及时联系删除)
在这里插入图片描述

这篇关于python 爬LOFTER 稍微升级,能够爬下一个人的所有上传的图片。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/311575

相关文章

Python实现终端清屏的几种方式详解

《Python实现终端清屏的几种方式详解》在使用Python进行终端交互式编程时,我们经常需要清空当前终端屏幕的内容,本文为大家整理了几种常见的实现方法,有需要的小伙伴可以参考下... 目录方法一:使用 `os` 模块调用系统命令方法二:使用 `subprocess` 模块执行命令方法三:打印多个换行符模拟

Python实现MQTT通信的示例代码

《Python实现MQTT通信的示例代码》本文主要介绍了Python实现MQTT通信的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 安装paho-mqtt库‌2. 搭建MQTT代理服务器(Broker)‌‌3. pytho

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自

从入门到进阶讲解Python自动化Playwright实战指南

《从入门到进阶讲解Python自动化Playwright实战指南》Playwright是针对Python语言的纯自动化工具,它可以通过单个API自动执行Chromium,Firefox和WebKit... 目录Playwright 简介核心优势安装步骤观点与案例结合Playwright 核心功能从零开始学习

升级至三频BE12000! 华硕ROG魔盒Pro路由器首发拆解评测

《升级至三频BE12000!华硕ROG魔盒Pro路由器首发拆解评测》华硕前两天推出新一代电竞无线路由器——ROG魔盒Pro(StrixGR7Pro),该产品在无线规格、硬件配置及功能设计上实现全... 作为路由器行业的T1梯队厂商,华硕近期发布了新旗舰华硕ROG魔盒Pro,除了保留DIY属性以外,高达120

Python 字典 (Dictionary)使用详解

《Python字典(Dictionary)使用详解》字典是python中最重要,最常用的数据结构之一,它提供了高效的键值对存储和查找能力,:本文主要介绍Python字典(Dictionary)... 目录字典1.基本特性2.创建字典3.访问元素4.修改字典5.删除元素6.字典遍历7.字典的高级特性默认字典

Python自动化批量重命名与整理文件系统

《Python自动化批量重命名与整理文件系统》这篇文章主要为大家详细介绍了如何使用Python实现一个强大的文件批量重命名与整理工具,帮助开发者自动化这一繁琐过程,有需要的小伙伴可以了解下... 目录简介环境准备项目功能概述代码详细解析1. 导入必要的库2. 配置参数设置3. 创建日志系统4. 安全文件名处

使用Python构建一个高效的日志处理系统

《使用Python构建一个高效的日志处理系统》这篇文章主要为大家详细讲解了如何使用Python开发一个专业的日志分析工具,能够自动化处理、分析和可视化各类日志文件,大幅提升运维效率,需要的可以了解下... 目录环境准备工具功能概述完整代码实现代码深度解析1. 类设计与初始化2. 日志解析核心逻辑3. 文件处

python生成随机唯一id的几种实现方法

《python生成随机唯一id的几种实现方法》在Python中生成随机唯一ID有多种方法,根据不同的需求场景可以选择最适合的方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习... 目录方法 1:使用 UUID 模块(推荐)方法 2:使用 Secrets 模块(安全敏感场景)方法

Spring Boot 结合 WxJava 实现文章上传微信公众号草稿箱与群发

《SpringBoot结合WxJava实现文章上传微信公众号草稿箱与群发》本文将详细介绍如何使用SpringBoot框架结合WxJava开发工具包,实现文章上传到微信公众号草稿箱以及群发功能,... 目录一、项目环境准备1.1 开发环境1.2 微信公众号准备二、Spring Boot 项目搭建2.1 创建