python正则获取站长之家风景图,保存到本地
# -*- coding: utf-8 -*-
# !/usr/bin/env python
# 获取站长之家风景图:https://sc.chinaz.com/tupian/fengjingtupian.html,长时间爬取会出现图片响应超时的问题。
# 首先从第一页中获取第一页所有图片详情页链接和下一页的链接
# 对详情页就行解析下载,下载完毕请求下一页,并重复上一步操作,直到最后一页为止。
# 在下载图片前,先获取所有已下载的图片名字,如果存在则不下载import os, re, time
import requests
# 导入自定义随机请求头的包
from utils.header import get_uaclass Chinaz():def __init__(self):self.url = "https://sc.chinaz.com/tupian/fengjingtupian.html"self.base_url = "https://sc.chinaz.com/tupian/"self.img_file = "imgs"if not os.path.exists(self.img_file):os.makedirs(self.img_file)else:# 如果文件夹存在,则获取里面所有的文件名字,也有可能文件夹里什么都没有for root, dirs, files in os.walk(self.img_file):self.files= files# 专注于发送请求,并返回响应对象def get_html(self, url):resp = requests.get(url, headers={"User-Agent": get_ua()})resp.encoding = 'utf-8'if resp.status_code == 200:return resp# 获取所有图片网页地址和下一页链接def get_all(self, html):# 图片列表页的规则img_url_list_patt = re.compile(r'<p><a target="_blank" href="(.*?)" alt=".*?">')all_img_urls = img_url_list_patt.findall(html)all_img_urls = ["https:" + i for i in all_img_urls]# 图片详情页的规则img_url_patt = re.compile(r'<a href="(.*?)" title="(.*?)" class="image_gall">')for img_url in all_img_urls:img_html = self.get_html(img_url)if img_html:res_img_urls = img_url_patt.findall(img_html.text)res_img_url = "https:" + res_img_urls[0][0]res_img_title = res_img_urls[0][1]# 图片名字:江面风景唯美意境图片zzpic9603.jpgres_img_title += res_img_url.split("/")[-1]# 如果文件夹为空或者图片名字不存在则下载if not self.files or self.img_exist(res_img_title):try:self.download_img(res_img_url, res_img_title)except Exception as e:print("%s,该图片下载失败,跳过,出错原因:%s" % (res_img_title,e))continueelse:print("该图片已存在,无需下载:%s" % res_img_title)# 图片列表页获取下一页规则next_patt = re.compile(r'(fengjing.*?)"\s+class="nextpage">下一页</a>')next_page = next_patt.findall(html)try:next_page = self.base_url + next_page[0].split('"')[-1]print("即将处理链接:", next_page)resp = self.get_html(next_page)if resp:self.get_all(resp.text)except IndexError:print("没有下一页了!")except Exception as e:print("出错了:", e)# 获取图片地址并下载def download_img(self, img_url, res_img_title):time.sleep(1)print("下载图片:", res_img_title)resp = self.get_html(img_url)if resp:with open(self.img_file + "/" + res_img_title, 'wb')as f:f.write(resp.content)else:print("%s下载图片失败,忽略~" % res_img_title)# 下载图片之前先判断,即将要下载的图片名字是否存在,如果存在则不再下载def img_exist(self, res_img_title):if res_img_title not in self.files:return True# for root, dirs, files in os.walk(self.img_file):# if res_img_title not in files:# return Trueif __name__ == '__main__':cz = Chinaz()html = cz.get_html(cz.url)cz.get_all(html.text)
get_ua请求头可以自己随机设置一个,或者参考:https://blog.csdn.net/z564359805/article/details/111354241
python正则获取站长之家风景图,保存到本地相关推荐
- python获取站长之家素材
python获取站长之家素材 本文以获取站长之家动物图片为例,演示了请求对象的定制. import urllib.request as ur import os from lxml import et ...
- php如何接收ap端上传的图片_用php获取远程图片并把它保存到本地的代码
用php获取远程图片并把它保存到本地的代码 更新时间:2008年04月07日 20:43:26 作者: Function: 获取远程图片并把它保存到本地 确定您有把文件写入本地服务器的权限变量说明 ...
- php 无法获取远程图片,本地连接受限制或无法连接 用php获取远程图片并把它保存到本地的代码...
function GrabImage($url,$filename="") { if($url==""):return false;endif; if($fil ...
- JAVA快速获取网络图片或者URL图片并保存到本地
JAVA快速获取网络图片或者URL图片并保存到本地,直接上代码: import java.io.ByteArrayOutputStream; import java.io.File; import j ...
- python爬虫,站长之家
主要目标 爬取下图信息,上图更简单直观. 分析思路 首先找到我们要得数据在那,我们先去站长之家去看看;站长之家 这里的"全部行业"就是我们要得一级分类,我们来研究一下他的html源 ...
- Python下载微信公众号文章和图片保存至本地
思路 获取到微信公众号的文章之后,使用 BeautifulSoup 和正则表达式 解析出文章标题和包含正文的html. 获取到html之后,用正则表达式获取图片下载链接,下载成功后将微信的链接替换成本 ...
- python正则获取豆瓣排行250
1.添加请求头,防止被拦截 dic = {"User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleW ...
- python正则获取网页标签里面的内容
# -*- coding:utf-8 -*- import re str = "<option value=2018010401>2018级播音与主持艺术1班</optio ...
- Python:opencv库实现调用摄像头拍照并保存到本地
导入 opencv-python库,复制代码即可运行 import cv2def picture_shoot(image_name='img.png', image_path=r'E:/') -> ...
最新文章
- 刻意练习:LeetCode实战 -- Task15. 有效的括号
- Android之如何以最简单方式开启闪光灯
- 小技巧:让linux程序在后台运行
- 菜鸟学习数据科学家 5 大误区
- Nonblocking I/O 与 Asynchronous I/O
- Android笔记-雷电模拟器(Android5.1.1)安装Xposed
- (数据库系统概论|王珊)第一章绪论-第三节:数据库系统的结构
- 图像主观质量评价 评分_图像质量分析工具哪家强?
- MYSQL----(3)SQL 基本操作
- JavaScript 函数(方法)的封装技巧要领及其重要性
- 基于FreeFEM++的有限元编程--2
- html5图片高斯模糊,CSS实现图片高斯模糊但边界清楚的效果
- 编译选项默认关闭adb RSA指纹认证
- axios封装需要注意的增删改查传参易混淆点
- 北邮计算机通信网第一阶段作业,北邮计算机通信网阶段作业.doc
- (145)光线追踪距离场柔和阴影
- html+css 制作小米商城主体内容的商品展示
- Linux系统软件工程师/嵌入式Linux应用开发工程师 知识体系构建 500篇(持续更新)
- AL遮天传 DL-深度学习模型的训练技巧
- 老友记剧本台词全十季下载
热门文章
- oracle10g可视化界面,GUI图形化界面工具
- Wireshark简介
- 前端资源(css,js,图片,接口等)加载过程
- pytorch 自定义卷积核进行卷积--卷积核订制
- Dubbo之Activate
- python最强表白神器_「含蓄优雅表白神器」程序员式用python代码画爱心(附详细教程)...
- Java实现 LeetCode 173 二叉搜索树迭代器
- 【NodeJS】nodejs | 缓存设置
- centos7+sendmail+dovecot配置邮件服务
- 一致性(Consistency)介绍