爬取知乎美女照片,通过话题搜索
import re
import requests
import os
import urllib.request
import sslfrom urllib.parse import urlsplit
from os.path import basename# 全局禁用证书验证
ssl._create_default_https_context = ssl._create_unverified_contextheaders = {'User-Agent': "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36",'Accept-Encoding': 'gzip, deflate'
}def mkdir(path):if not os.path.exists(path):print('新建文件夹:', path)os.makedirs(path)return Trueelse:print(u"图片存放于:", os.getcwd() + os.sep + path)return Falsedef download_pic2(img_lists, dir_name):print("一共有{num}张照片".format(num=len(img_lists)))# 标记下载进度index = 1for image_url in img_lists:file_name = dir_name + os.sep + basename(urlsplit(image_url)[2])# 已经下载的文件跳过if os.path.exists(file_name):print("文件{file_name}已存在。".format(file_name=file_name))index += 1continueauto_download(image_url, file_name)print("下载{pic_name}完成!({index}/{sum})".format(pic_name=file_name, index=index, sum=len(img_lists)))index += 1def auto_download(url, file_name):# 递归下载,直到文件下载成功try:urllib.request.urlretrieve(url, file_name)except urllib.request.ContentTooShortError:print("文件下载不完整,重新下载。")auto_download(url, file_name)except urllib.request.URLError:print("网络连接出错,尝试重新下载。")auto_download(url, file_name)def download_pic(img_lists, dir_name):print("一共有{num}张照片".format(num=len(img_lists)))for image_url in img_lists:response = requests.get(image_url, stream=True)if response.status_code == 200:image = response.contentelse:continuefile_name = dir_name + os.sep + basename(urlsplit(image_url)[2])try:with open(file_name, "wb") as picture:picture.write(image)except IOError:print("IO Error\n")continuefinally:picture.close()print("下载{pic_name}完成!".format(pic_name=file_name))def get_image_url(qid, headers):# 利用正则表达式把源代码中的图片地址过滤出来tmp_url = "https://www.zhihu.com/node/QuestionAnswerListV2"size = 10image_urls = []filst_url = "https://www.zhihu.com/question/{}".format(qid)page = requests.get(filst_url, headers=headers)ret = page.content.decode()ret = re.sub(r'\\', '', ret)# print(ret)resp = re.findall(r'<img data-rawheight="\d+" src="(https:.*?)"\sdata', ret)response = re.findall(r'<img src="(https:.*?)"\sdata', ret)res2 = re.findall(r'u003Cimg src="(https:.*?)"\sdata', ret)res3 = re.findall(r'u003Cimg data-rawheight="\d+" src="(https:.*?)"\sdata', ret)for i in resp:image_urls.append(i)for ik in response:image_urls.append(ik)for i in res2:img_res = re.sub(r'u002F', '', i)if "50v2" in img_res:img_res = re.sub(r'pic', '//pic', img_res)img_res = re.sub(r'com50v2', 'com/50/v2', img_res)image_urls.append(img_res)for i in res3:img_res = re.sub(r'u002F', '', i)if "50v2" in img_res:img_re = re.sub(r'pic', '//pic', img_res)img_re = re.sub(r'com50v2', 'com/50/v2', img_re)image_urls.append(img_re)session = requests.Session()while True:postdata = {'method': 'next','params': '{"url_token":' + str(qid) + ',"pagesize": "10",' + '"offset":' + str(size) + "}"}page = session.post(tmp_url, headers=headers, data=postdata)ret = eval(page.text)answers = ret['msg']print(u"答案数:%d" % (len(answers)))size += 10if not answers:print("图片 URL 获取完毕, 页数: ", (size - 10) / 10)return image_urls# reg = r'https://pic\d.zhimg.com/[a-fA-F0-9]{5,32}_\w+.jpg'imgreg = re.compile('data-original="(.*?)"', re.S)for answer in answers:tmp_list = []url_items = re.findall(imgreg, answer)for item in url_items: # 这里去掉得到的图片 URL 中的转义字符'\\'image_url = item.replace("\\", "")tmp_list.append(image_url)# 清理掉头像和去重 获取 data-original 的内容tmp_list = list(set(tmp_list)) # 去重for item in tmp_list:if item.endswith('r.jpg'):print(item)image_urls.append(item)print('size: %d, num : %d' % (size, len(image_urls)))if __name__ == '__main__':title = '大胸女生如何穿衣搭配?'question_id = 26297181# title = '胸大到底怎么穿衣服'# question_id = 293482116# title = '你见过最漂亮的东亚女性长什么样子?'# question_id = 271680368# title = '肉感'# question_id = 22721518# title = '陈都灵?'# question_id = 60603618# title = '刘亦菲'# question_id = 307758291# title = '你见过最美的欧美人'# question_id = 67226894zhihu_url = "https://www.zhihu.com/question/{qid}".format(qid=question_id)path = str(question_id)+titlemkdir(path) # 创建本地文件夹img_list = get_image_url(question_id, headers) # 获取图片的地址列表download_pic2(img_list, path) # 保存图片
爬取知乎美女照片,通过话题搜索相关推荐
- python 知乎美女_知乎大神用Python爬取高颜值美女(爬虫+人脸检测+颜值检测)
原标题:知乎大神用Python爬取高颜值美女(爬虫+人脸检测+颜值检测) 1 数据源 知乎话题『美女』下所有问题中回答所出现的图片 2 抓取工具 Python 3,并使用第三方库 Requests.l ...
- 爬取知乎“凡尔赛语录”话题下的所有回答,我知道点开看你的很帅气,但还是没我帅
凡尔赛文学火了.这种特殊的网络文体,常出现在朋友圈或微博,以波澜不惊的口吻,假装不经意地炫富.秀恩爱. 普通的炫耀,无非在社交网络发发跑车照片,或不经意露出名牌包包 logo,但凡尔赛文学还不这么直接 ...
- python爬取知乎话题广场_知乎一共有多少个话题?
上图可知,它是通过请求POST接口来取得知乎话题数据,接口信息: 其中topic_id指大分类下的id,offset是指偏移量,指每次执行next方法加载的子话题数量,hash_id可以为空我们暂时忽 ...
- python爬虫实战(一)--爬取知乎话题图片
原文链接python爬虫实战(一)–爬取知乎话题图片 前言 在学习了python基础之后,该尝试用python做一些有趣的事情了–爬虫. 知识准备: 1.python基础知识 2.urllib库使用 ...
- 数据挖掘 文本分类 知乎问题单分类(二):爬取知乎某话题下的问题(数据爬取)
数据挖掘 文本分类 知乎问题单分类(二):爬取知乎某话题下的问题(数据爬取) 爬虫目标 Scrapy框架介绍 Scrapy框架原理 [^1] Scrapy工作流程 [^2] 具体实现 安装Scrapy ...
- Python爬取知乎电影话题回答,采集提及次数前50的电影
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 以下文章来源于苏生不惑,作者苏生不惑 如果在家无聊推荐几部经典电影给你看看. 这 ...
- 60行代码爬取知乎“神回复”,句句戳中泪点
作者 | shenzhongqiang 转载自Python与数据分析(ID:PythonML) 之前的一篇文章<爬了下知乎神回复,笑死人了~>发布后,引发了大家热烈的反响.很多朋友觉得很神 ...
- python 数据分析 书籍推荐 知乎_Python 爬取知乎 9674 个问答,揭秘最受欢迎的 98 本书!...
原标题:Python 爬取知乎 9674 个问答,揭秘最受欢迎的 98 本书! 作者 | Yura 责编 | 胡巍巍 高尔基这话有没有道理我不知道, 咱也不敢问, 主要是现在也问不了. 那对我来说,读 ...
- 如何用 60 行代码爬取知乎神回复?
作者 | 强哥 责编 | 郭芮 知乎上经常会有很多令人忍俊不禁的神回复,初看之下拍案叫绝,细思之下更是回味无穷.本文就来介绍下如何爬取知乎的神回复,揭晓其背后的原理. 知乎神回复都有些什么特点呢?我们 ...
最新文章
- 当前国内有哪些公司是做OKR管理软件做的比较好的?
- 常用算法25讲,拿走不谢!
- bugku ——杂项
- 使用 fail2ban 防御 SSH 暴力破解
- drop table中cascade的含义及用法
- php 即时到账,paypal即时到账php实现代码
- Android activity启动模式
- 主动出击,马斯克欲用 430 亿美元拿下 Twitter
- td自动换行:设置table布局固定,td根据设定宽度自动换行
- 又见n/i下取整+分块
- 发那科程序全部输出_如何拷贝FANUC系统全部程序
- 中国医科大学2021年12月《医学遗传学》作业考核试题
- ICE 3.7.4 实现客户服务端hello world
- doctrine 关系
- GOM引擎脚本 时间段内调整人物属性
- c语言作文的题目_C语言入门题
- Android 动画方案
- python数据处理--按照数据差值大小进行聚类(归类)
- ICDE-2020 论文简析:空间众包中的预测任务分配 : 一种数据驱动的方法 Predictive Task Assignment in Spatial Crowdsourcing
- 11 个最佳免费安全网站
热门文章
- SAECCE 2021展位预定已过半,观众预登记系统上线啦!
- android 获取当前应用的userid
- linux下malloc申请大内存,Linux malloc大内存的方法
- SQL server数据库的操作步骤·图形界面工具
- servlet属于php,Servlet是什么?
- CSS——(CSS样式规则,CSS样式表单,选择器,常用的CSS属性)
- 黄油刀——ButterKnife
- vim编辑器配置文件
- Windows(win)10安装JDK并配置环境变量(附网盘下载地址)
- 2020.10.17--PS--淌泪表情、翻白眼、摇晃脑袋