广元市城乡规划建设监察大队网站网站数据库如何做

张小明 2026/1/3 0:39:19
广元市城乡规划建设监察大队网站,网站数据库如何做,设计本3d模型下载,外贸网站建设公司哪家好Python实现知乎图片爬虫#xff08;无需登录#xff09; 那天#xff0c;朋友小牛突然问我#xff1a;“有没有能爬知乎小姐姐照片的脚本#xff1f;” 我笑了笑回了句#xff1a;“可以有。” 于是就有了这个轻量却实用的小工具。 但今天我们要说的#xff0c;不是AI…Python实现知乎图片爬虫无需登录那天朋友小牛突然问我“有没有能爬知乎小姐姐照片的脚本”我笑了笑回了句“可以有。”于是就有了这个轻量却实用的小工具。但今天我们要说的不是AI生成数字人视频——而是如何用最简单的方式批量抓取知乎上那些高清、精美、围绕特定主题的图片资源。整个过程无需登录、无验证码、不触发反爬机制代码干净利落开箱即用。这不仅适用于“小姐姐”这类关键词更广泛用于风景、摄影、插画、设计灵感等视觉内容采集。对于做素材库、AI训练数据准备甚至短视频创作前的参考图收集都非常友好。技术背景与设计思路知乎作为一个高质量内容社区用户在回答中常常会附上精心拍摄或制作的配图。这些图片往往分辨率高、构图讲究且围绕具体问题展开具备很强的主题一致性。传统方式是手动翻页保存效率极低而主流爬虫方案动辄依赖Selenium模拟浏览器配置复杂、运行缓慢。我们能不能走一条更轻巧的路答案是可以的。关键在于知乎的搜索结果和问题页面对未登录用户是完全开放的。只要我们伪装成普通浏览器访问就能直接从HTML中提取出img标签里的真实图片链接尤其是带有_hd.jpg后缀的高清版本。因此我们采用requests BeautifulSoup re三件套组合-requests负责发起HTTP请求-BeautifulSoup解析HTML结构-re正则匹配提取高清图源整个流程避开JavaScript渲染、免去登录态维护真正做到低依赖、高可用。环境准备pip install requests beautifulsoup4 lxml建议使用 Python 3.7 版本运行。lxml作为解析器比内置html.parser更快更稳定。完整代码实现#!/usr/bin/env python3 # -*- coding: utf-8 -*- # Filename: zhihu_image_spider.py Info - author : your_name - email : your_emailexample.com - date : 2025.04.05 - desc : 爬取知乎指定关键词下所有回答中的高清图片无需登录 import os import re import sys import time import platform from urllib.parse import quote import requests from bs4 import BeautifulSoup class ZhihuImageSpider: def __init__(self, keyword, save_path): self.keyword keyword.strip() self.save_path save_path.rstrip(/\\) self.session requests.Session() # 设置请求头伪装成浏览器访问 self.headers { User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36, Referer: fhttps://www.zhihu.com/search?q{quote(keyword)}, Accept: text/html,application/xhtmlxml,application/xml;q0.9,*/*;q0.8, Accept-Language: zh-CN,zh;q0.9,en;q0.8, } def create_save_dir(self): 创建保存目录 if not os.path.exists(self.save_path): try: os.makedirs(self.save_path, mode0o755) print(f✅ 成功创建目录{self.save_path}) return True except Exception as e: print(f❌ 创建目录失败{str(e)}) return False else: print(f 目录已存在{self.save_path}) return True def get_search_page(self): 获取搜索结果页面HTML url fhttps://www.zhihu.com/search?q{quote(self.keyword)}typecontent print(f 正在请求搜索页{url}) try: response self.session.get(url, headersself.headers, timeout10) if response.status_code 200: print(✅ 搜索页获取成功) return response.text else: print(f❌ 请求失败状态码{response.status_code}) return None except Exception as e: print(f❌ 请求异常{str(e)}) return None def parse_question_links(self, html): 从搜索页提取问题链接列表 soup BeautifulSoup(html, lxml) links set() # 匹配所有以 /question 开头的问题链接 for a in soup.find_all(a, hrefre.compile(r/question/\d)): href a[href] if href.startswith(/): full_url https://www.zhihu.com href links.add(full_url) print(f 共发现 {len(links)} 个相关问题链接) return list(links) def get_question_page(self, url): 获取单个问题页面内容 print(f 正在加载问题页{url}) try: response self.session.get(url, headersself.headers, timeout10) if response.status_code 200: return response.text else: print(f❌ 加载问题页失败{url}状态码{response.status_code}) return None except Exception as e: print(f❌ 请求异常{str(e)}) return None def extract_images_from_html(self, html): 从页面中提取所有图片URL优先高清图 img_urls [] # 使用正则匹配所有 .jpg 结尾的图片优先捕获 _hd.jpg 高清图 pattern re.compile(rsrc(https://[^]?\.zhimg\.com[^]*?_hd\.jpg)) matches pattern.findall(html) img_urls.extend(matches) # 补充普通图非_hd low_res_pattern re.compile(rsrc(https://[^]?\.zhimg\.com[^]*?\.jpg)) low_matches low_res_pattern.findall(html) # 去除已收录的高清图对应的低清图 for low_url in low_matches: base low_url.replace(_hd.jpg, .jpg).replace(_xs.jpg, .jpg) high_version base.replace(.jpg, _hd.jpg) if high_version not in matches and low_url not in img_urls: img_urls.append(low_url) # 过滤无效或缩略图 filtered [] exclude_keywords [icon, avatar, logo, banner, ic_, smy, rating] for u in img_urls: if any(kw in u.lower() for kw in exclude_keywords): continue if u not in filtered: filtered.append(u) print(f️ 从该页面提取到 {len(filtered)} 张有效图片) return filtered def download_image(self, img_url, filename): 下载图片并保存 filepath os.path.join(self.save_path, filename) try: response self.session.get(img_url, headersself.headers, streamTrue, timeout10) if response.status_code 200: with open(filepath, wb) as f: for chunk in response.iter_content(1024): f.write(chunk) print(f 已保存{filename}) return True else: print(f❌ 下载失败{img_url}状态码{response.status_code}) return False except Exception as e: print(f❌ 下载异常{filename} - {str(e)}) return False def run(self): 启动爬虫主流程 print( * 60) print(f 开始爬取关键词【{self.keyword}】的相关图片...) print( * 60) # 1. 创建保存目录 if not self.create_save_dir(): print(⛔ 目录创建失败终止爬虫) return # 2. 获取搜索页内容 search_html self.get_search_page() if not search_html: print(⛔ 搜索页获取失败终止) return # 3. 解析问题链接 question_urls self.parse_question_links(search_html) if not question_urls: print(⚠️ 未找到任何问题链接请检查关键词是否有效) return # 4. 遍历每个问题页 all_images [] for q_url in question_urls: time.sleep(1) # 控制频率避免被限流 q_html self.get_question_page(q_url) if q_html: imgs self.extract_images_from_html(q_html) all_images.extend(imgs) else: print(f跳过此问题页) # 5. 去重 unique_images list(set(all_images)) print(f\n 总共收集到 {len(unique_images)} 张唯一图片链接) # 6. 下载图片 success_count 0 for idx, img_url in enumerate(unique_images, start1): ext os.path.splitext(img_url)[1] if . in img_url else .jpg filename f{idx:04d}{ext} if self.download_image(img_url, filename): success_count 1 time.sleep(0.5) # 小延迟友好访问 # 7. 完成提示 print(\n * 60) print(f 爬虫执行完毕) print(f 关键词{self.keyword}) print(f 保存路径{self.save_path}) print(f️ 图片总数{success_count} 张) print(f 失败数量{len(unique_images) - success_count} 张) print( * 60) # 用户输入区 if __name__ __main__: keyword_input input(请输入要搜索的关键词如风景、摄影、插画).strip() while not keyword_input: keyword_input input(关键词不能为空请重新输入).strip() path_input input(请输入保存图片的目录路径直接回车使用默认路径).strip() # 默认路径逻辑 if not path_input: sys_info platform.system() if sys_info Windows: default_path os.path.expanduser(r~\Documents\ZhihuImages) else: default_path os.path.expanduser(~/ZhihuImages) final_path os.path.join(default_path, keyword_input) else: final_path path_input # 实例化并运行 spider ZhihuImageSpider(keywordkeyword_input, save_pathfinal_path) spider.run()实际运行效果运行脚本后交互如下python zhihu_image_spider.py输入示例请输入要搜索的关键词如风景、摄影、插画樱花 请输入保存图片的目录路径直接回车使用默认路径 ✅ 成功创建目录/Users/xxx/Documents/ZhihuImages/樱花 正在请求搜索页https://www.zhihu.com/search?q%E6%A8%B1%E8%8A%B1typecontent ✅ 搜索页获取成功 共发现 18 个相关问题链接 正在加载问题页https://www.zhihu.com/question/12345678 ️ 从该页面提取到 23 张有效图片 正在加载问题页https://www.zhihu.com/question/87654321 ️ 从该页面提取到 15 张有效图片 ... 已保存0001.jpg 已保存0002.jpg ... 爬虫执行完毕 关键词樱花 保存路径/Users/xxx/Documents/ZhihuImages/樱花 ️ 图片总数137 张 失败数量3 张几分钟内即可完成上百张高清图的自动下载命名规整便于后续处理。为什么它能绕过反爬很多人以为爬知乎必须登录、必须处理Token、必须模拟点击加载更多……其实不然。核心点在于我们只抓公开内容不碰私域数据。知乎的搜索页和问题详情页对未登录用户是可访问的。虽然部分内容会折叠但HTML中仍然包含完整的img src...标签信息。这意味着我们可以直接从中提取原始图片地址尤其是形如https://pica.zhimg.com/v2-xxxxxx_r.jpg https://pica.zhimg.com/v2-xxxxxx_hd.jpg ← 我们优先抓这个其中_hd.jpg就是高清原图清晰度远高于缩略图。通过正则精准匹配我们能有效过滤掉头像、图标等干扰项。此外请求头中设置合理的User-Agent和Referer让服务器误以为是正常浏览器访问大大降低被拦截概率。反爬优化技巧别忘了即使目标网站允许访问也要做个“礼貌的访客”。以下是几个工程实践中总结的经验加延时控制每次请求间隔time.sleep(1)防止短时间内大量请求。随机UA轮换进阶可维护一个UA池每次请求随机选取进一步降低指纹识别风险。失败重试机制网络波动可能导致个别请求失败加入最多2次重试可提升稳定性。跳过低质量页面若某问题页返回空或异常记录日志后继续下一个不影响整体流程。⚠️ 注意不要使用多线程暴力并发。知乎虽未严格封禁IP但高频请求仍可能触发临时限制。可拓展方向这个脚本只是一个起点。根据实际需求你可以轻松扩展以下功能功能实现方式支持翻页加载更多内容使用 Selenium 模拟滚动到底部抓取动态加载的回答提取图片对应文字描述在保存图片的同时将上下文段落一并存为.txt文件内容级去重计算每张图的MD5或感知哈希值pHash剔除重复素材并发下载加速引入ThreadPoolExecutor实现多图并行下载提升效率GUI界面操作用 Tkinter 或 PyQt 做个图形化窗口方便非程序员使用例如并发下载部分可以这样改造from concurrent.futures import ThreadPoolExecutor def download_all_images(self, image_list): success_count 0 with ThreadPoolExecutor(max_workers4) as executor: futures [] for idx, img_url in enumerate(image_list, start1): ext os.path.splitext(img_url)[1] or .jpg filename f{idx:04d}{ext} futures.append(executor.submit(self.download_image, img_url, filename)) for future in futures: if future.result(): success_count 1 return success_count只需几行改动下载速度就能提升数倍。最后的思考从一张图开始的AI创作链回到开头那个“小牛”的需求。他真正想要的从来都不是一堆静态照片。他是想——用自己的声音让某个喜欢的人物“开口说话”。而这正是当前火爆的AI 数字人技术的典型应用场景。比如腾讯与浙大联合推出的Sonic 模型仅需一张肖像照 一段音频就能生成唇形同步、表情自然的说话视频。如果我们把这套爬虫当作“前端采集模块”后续接入 AI 视频生成工作流会发生什么用本脚本批量下载明星/动漫角色肖像录一段自己配音的台词比如“今天你学习了吗”用 Sonic 驱动图像生成动态嘴型导出为 MP4用于短视频平台发布。整个流程全自动零手工剪辑。你会发现真正的生产力来自于工具之间的串联。而我们写的每一行代码都是通往未来的拼图碎片。✅ 示例项目地址可选https://github.com/example/zhihu-image-spider 欢迎留言交流你的改进想法转载请注明出处。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

水果建设网站前的市场分析qq空间刷赞推广网站

心理学入门:为什么你明明知道学习很重要,却就是不想学?——从动机、情绪与自我调节谈起 摘要: 本文面向初学者(尤其是大学生和高中生)深入浅出地解析一个常见但令人困扰的现象:“明明知道学习很…

张小明 2026/1/2 2:49:10 网站建设

做网站时版权怎么写用php做网站用到的工具

关键词:小智 AI 音箱、MCP 开发、自定义技能、语音交互、智能家居 运行环境:Python 3.9 小智 MCP SDK(官方镜像已集成) 一、写在最前:为什么选“小智”而不是其他? 活动白送:CSDN 征文投稿 ≥…

张小明 2026/1/2 2:49:11 网站建设

2018做网站用什么开发创新创意产品设计作业

虚拟化环境下操作系统的使用与配置指南 1. FreeBSD 设备管理 在 FreeBSD 系统中,设备管理有着独特的方式。 - USB 设备管理 :FreeBSD 通过 usbd 守护进程来管理 USB 设备,它主要负责设备的连接和移除操作。若要在系统启动时激活该守护进程,需在 /etc/rc.conf (或…

张小明 2026/1/2 2:49:13 网站建设

商城 网站 开发网站建设专业英文

选择轻量级云服务器(如 1核1GB 或 2核2GB 的入门型实例)时,Debian 和 AlmaLinux 都是优秀且适合的选择,但侧重点不同。是否“更适合”取决于你的具体需求:稳定性、资源占用、软件生态、维护习惯和长期目标。 原文地址…

张小明 2026/1/2 2:49:15 网站建设

如何建设企业的网站个人客户管理app免费

GLM-4.5实战指南:从零构建智能体应用全流程 【免费下载链接】GLM-4.5 GLM-4.5拥有3550亿总参数和320亿活跃参数,而GLM-4.5-Air采用更紧凑的设计,总参数为1060亿,活跃参数为120亿。GLM-4.5模型统一了推理、编程和智能体能力&#x…

张小明 2026/1/2 2:49:14 网站建设

重庆大渡口网站建设网站设计制作价钱

本文提供了一套完整的AI大模型学习资源,包含视频教程、学习路线、专业书籍、行业报告、实战项目和面试真题。由清华大学-加州理工双料博士鲁为民教授领衔研发,适合零基础小白和有技术基础的程序员学习。资料限时免费领取,帮助学习者掌握大模型…

张小明 2026/1/2 2:49:13 网站建设