喜欢去知乎炸鱼?用python吧
知乎高赞贴:
有一双大长腿是什么体验?
有一副迷人的身材是什么体验?
别用手机费劲的翻了,python帮你一臂之力
import re
import requests
import os
import urllib.request
import ssl from urllib.parse import urlsplit
from os.path import basename # 全局禁用证书验证
ssl._create_default_https_context = ssl._create_unverified_context headers = {
'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 True
else:
print(u"图片存放于:", os.getcwd() + os.sep + path)
return False def download_pic2(img_lists, dir_name):
print("一共有{num}张照片".format(num=len(img_lists))) # 标记下载进度
index = for image_url in img_lists:
file_name = dir_name + os.sep + basename(urlsplit(image_url)[]) # 已经下载的文件跳过
if os.path.exists(file_name):
print("文件{file_name}已存在。".format(file_name=file_name))
index +=
continue auto_download(image_url, file_name) print("下载{pic_name}完成!({index}/{sum})".format(pic_name=file_name, index=index, sum=len(img_lists)))
index += def 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 == :
image = response.content
else:
continue file_name = dir_name + os.sep + basename(urlsplit(image_url)[]) try:
with open(file_name, "wb") as picture:
picture.write(image)
except IOError:
print("IO Error\n")
continue
finally:
picture.close() print("下载{pic_name}完成!".format(pic_name=file_name)) def get_image_url(qid, headers):
# 利用正则表达式把源代码中的图片地址过滤出来
# reg = r'data-actualsrc="(.*?)">'
tmp_url = "https://www.zhihu.com/node/QuestionAnswerListV2"
size =
image_urls = [] 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 += if not answers:
print("图片 URL 获取完毕, 页数: ", (size - ) / )
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 = # title = '身材好是一种怎样的体验?'
# question_id = # title = '女孩子胸大是什么体验?'
# question_id = # title = '女生什么样的腿是美腿?'
# question_id = # title = '你的择偶标准是怎样的?'
# question_id = # title = '什么样才叫好看的腿?'
# question_id = # title = '身材对女生很重要吗?'
# question_id = # title = '女生腿长是什么样的体验?'
# question_id = # title = '女生腕线过裆是怎样一种体验?'
# question_id = # title = '有着一双大长腿是什么感觉?'
# question_id = # title = '拥有一双大长腿是怎样的体验?'
# question_id = # title = '大胸女生如何穿衣搭配?'
# question_id = # title = '胸大到底怎么穿衣服好看?'
# question_id = zhihu_url = "https://www.zhihu.com/question/{qid}".format(qid=question_id)
path = str(question_id) + '_' + title
mkdir(path) # 创建本地文件夹
img_list = get_image_url(question_id, headers) # 获取图片的地址列表
download_pic2(img_list, path) # 保存图片
喜欢去知乎炸鱼?用python吧的更多相关文章
- 爬去知乎百万用户信息之UserTask
UserTask是获取用户信息的爬虫模块 public class UserManage { private string html; private string url_token; } 构造函数 ...
- 遇到自己喜欢的视频无法下载,python帮你解决
问题描述 python是一种非常好用的爬虫工具.对于大多数的爬虫小白来说,python是更加简洁,高效的代码.今天就用实际案例讲解如何爬取动态的网站视频. 环境配置:python3:爬虫库reques ...
- 如何让程序像人一样的去批量下载歌曲?Python爬取付费歌曲
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 今天来教大家一个自动化爬虫的工具 selenium selenium Se ...
- 我用python爬取了知乎Top沙雕问题排行榜
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 数据森麟 PS:如有需要Python学习资料的小伙伴可以加点击下方 ...
- 用Python做一个知乎沙雕问题总结
用Python做一个知乎沙雕问题总结 松鼠爱吃饼干2020-04-01 13:40 前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以 ...
- 为什么我不建议你通过 Python 去找工作?
二哥,你好,我是一名大专生,学校把 Python 做为主语言教给我们,但是我也去了解过,其实 Python 门槛挺高的,所以我在自学 Java,但是我现在并不清楚到底要不要全心的去学 Java,学校里 ...
- 教程+资源,python scrapy实战爬取知乎最性感妹子的爆照合集(12G)!
一.出发点: 之前在知乎看到一位大牛(二胖)写的一篇文章:python爬取知乎最受欢迎的妹子(大概题目是这个,具体记不清了),但是这位二胖哥没有给出源码,而我也没用过python,正好顺便学一学,所以 ...
- python爬虫16 | 你,快去试试用多进程的方式重新去爬取豆瓣上的电影
我们在之前的文章谈到了高效爬虫 在 python 中 多线程下的 GIL 锁会让多线程显得有点鸡肋 特别是在 CPU 密集型的代码下 多线程被 GIL 锁搞得效率不高 特别是对于多核的 CPU 来说 ...
- 知乎Python后端面试总结
一面 写个快速排序热热身,分析一下复杂度,如果不使用额外的空间,应该怎么写? 说一下Flask中g是怎么实现的,原理是什么? 说一下浏览器从输入url到页面渲染的过程,越详细越好: 了解web安全吗? ...
随机推荐
- Linux查找文件夹下包含某字符的所有文件
Linux grep 命令用于查找文件里符合条件的字符串.grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示 ...
- Python机器学习笔记 Grid SearchCV(网格搜索)
在机器学习模型中,需要人工选择的参数称为超参数.比如随机森林中决策树的个数,人工神经网络模型中隐藏层层数和每层的节点个数,正则项中常数大小等等,他们都需要事先指定.超参数选择不恰当,就会出现欠拟合或者 ...
- Spring-AOP源码分析随手记(二)
这次来分析下切面的执行过程. 1.怎么看? 怎么开始看源码呢?就直接从被增强的方法调用那里打断点,看看怎么执行的: 然后就来到了这: 2.初步分析 里面有段: if (this.advised.exp ...
- 安装win10和ubuntu双系统
2019-06-22 最近找了一份新的工作,要用到linux,由于之前基本上没有接触过这方面的东西,所以今天捣鼓一下,安装win10和linux双系统,办公研发双不误. 如果在安装的过程中遇到什么 ...
- Winform中设置ZedGraph的X轴与Y轴的刻度不在对面显示
场景 C#窗体应用中使用ZedGraph曲线插件绘制图表: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/99716066 Win ...
- JZOJ.2117. 【2016-12-30普及组模拟】台风
题目大意: 天气预报频道每天从卫星上接受卫星云图.图片被看作是一个矩阵,每个位置上要么是”#”,要么”.”,”#”表示该位置没有云,”.”表示有云,地图上每个位置有多达8个相邻位置,分别是,左上.上. ...
- EurekaServer自动装配及启动流程解析
在开始本篇文章之前,我想你对SpringCloud和SpringBoot的基本使用已经比较熟悉了,如果不熟悉的话可以参考我之前写过的文章 本篇文章的源码基于SpringBoot2.0,SpringCl ...
- SAP MM 同一个序列号可以被多次用在交货单发货过账?
SAP MM 同一个序列号可以被多次用在交货单发货过账? 如下公司间转储订单,从公司代码CSAS转入公司代码HKCS, 物料有启用序列号管理. 转储数量为5 PC.该STO单据共计有2个外向交货单 8 ...
- Docker 清理日志
docker 长时间运行后,日志文件会逐渐变大可以使用下面命令进行清除 #!/bin/bash echo "==================== start clean docker c ...
- LINUX内核CPU负载均衡机制【转】
转自:http://oenhan.com/cpu-load-balance 还是神奇的进程调度问题引发的,参看Linux进程组调度机制分析,组调度机制是看清楚了,发现在重启过程中,很多内核调用栈阻塞在 ...