用python爬取之后发现果然如此,都说知乎的小姐姐漂亮
前言
文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。
PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取http://t.cn/A6Zvjdun
我们用爬虫爬了下这个问题下的高赞照片。在欣赏小姐姐的美照之前,我们先来分享一下思路。
首先通过浏览器的开发者工具,找到所有回答的链接。知乎的回答都是ajax的方式加载的,一次加载一页。
我们可以通过知乎回答的url,先把回答一页一页的爬下来,存到本地数据库。随后从数据库里读取数据,筛选出高赞的回答,把回答里的图片解析出来。
思路大致就是这样。
def get_answers_by_page(page_no):
offset = page_no * 10
url = "<answer url>&offset={}&limit=10&sort_by=default&platform=desktop".format(offset)
headers = {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36",
}
r = requests.get(url, verify=False, headers=headers)
content = r.content.decode("utf-8")
data = json.loads(content)
is_end = data["paging"]["is_end"]
items = data["data"]
client = pymongo.MongoClient()
db = client["beauty"]
if len(items) > 0:
db.answers.insert_many(items)
return is_end
def get_answers():
page_no = 0
client = pymongo.MongoClient()
while True:
print(page_no)
is_end = get_answers_by_page(page_no)
page_no += 1
if is_end:
break
def query():
client = pymongo.MongoClient()
db = client["beauty"]
items = db.answers.find({"voteup_count": {"$gte": 100}}).sort([("voteup_count", pymongo.DESCENDING)])
count = 0
for item in items:
content = item["content"]
vote_num = item["voteup_count"]
author = item["author"]["name"]
matched = re.findall(r'data-original="([^"]+)"', content)
print("> 来自 {}\n".format(item["url"]))
print("> 作者 {}\n".format(author))
print("> 赞数 {}\n".format(vote_num))
img_urls = []
for img_url in matched:
if img_url not in img_urls:
print("".format(img_url))
img_urls.append(img_url)
count += len(img_urls)
print("\n\n")
print(count)
上面是3个函数。
- get_answers_by_page - 这个函数用于获取一页的回答内容,获取的内容会存到本地MongoDB里
- get_answers - 这个函数用于获取所有页的内容,它会调用上面的函数,循环获取每一页的内容
- query - 这个函数用于从MongoDB里查询数据,筛选高赞回答,并且把结果打印出来
来自 https://www.zhihu.com/api/v4/answers/616931654
作者 不知
赞数 24153
来自 https://www.zhihu.com/api/v4/answers/768553689
作者 一只喝酒的猫Miao
赞数17702
.如果想了解更多关于python的应用,可以私信小编
用python爬取之后发现果然如此,都说知乎的小姐姐漂亮的更多相关文章
- 用Python爬取了考研吧1000条帖子,原来他们都在讨论这些!
写在前面 考研在即,想多了解考研er的想法,就是去找学长学姐或者去网上搜索,贴吧就是一个好地方.而借助强大的工具可以快速从网络鱼龙混杂的信息中得到有价值的信息.虽然网上有很多爬取百度贴吧的教程和例子, ...
- Python爬取跑男的评论,看看大家都在看谁吧
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于菜J学Python,作者: J哥 Python爬取爬取腾讯视频弹幕视频讲解 http ...
- 利用python爬取海量疾病名称百度搜索词条目数的爬虫实现
实验原因: 目前有一个医疗百科检索项目,该项目中对关键词进行检索后,返回的结果很多,可惜结果的排序很不好,影响用户体验.简单来说,搜索出来的所有符合疾病中,有可能是最不常见的疾病是排在第一个的,而最有 ...
- python爬取网站数据
开学前接了一个任务,内容是从网上爬取特定属性的数据.正好之前学了python,练练手. 编码问题 因为涉及到中文,所以必然地涉及到了编码的问题,这一次借这个机会算是彻底搞清楚了. 问题要从文字的编码讲 ...
- 没有内涵段子可以刷了,利用Python爬取段友之家贴吧图片和小视频(含源码)
由于最新的视频整顿风波,内涵段子APP被迫关闭,广大段友无家可归,但是最近发现了一个"段友"的app,版本更新也挺快,正在号召广大段友回家,如下图,有兴趣的可以下载看看(ps:我不 ...
- 萌新学习Python爬取B站弹幕+R语言分词demo说明
代码地址如下:http://www.demodashi.com/demo/11578.html 一.写在前面 之前在简书首页看到了Python爬虫的介绍,于是就想着爬取B站弹幕并绘制词云,因此有了这样 ...
- python爬取网站数据保存使用的方法
这篇文章主要介绍了使用Python从网上爬取特定属性数据保存的方法,其中解决了编码问题和如何使用正则匹配数据的方法,详情看下文 编码问题因为涉及到中文,所以必然地涉及到了编码的问题,这一次借这 ...
- 利用python爬取58同城简历数据
利用python爬取58同城简历数据 利用python爬取58同城简历数据 最近接到一个工作,需要获取58同城上面的简历信息(http://gz.58.com/qzyewu/).最开始想到是用pyth ...
- Python爬取视频指南
摘自:https://www.jianshu.com/p/9ca86becd86d 前言 前两天尔羽说让我爬一下菜鸟窝的教程视频,这次就跟大家来说说Python爬取视频的经验 正文 https://w ...
随机推荐
- sql 语句系列(字符串的遍历嵌入删除与统计)[八百章之第十一章]
遍历字符串 我觉得首先要提出一个疑问: 一个数据库本身就是用于存储的,遍历字符串究竟有何意义? 先看如何实现的,毕竟sql service 是没有for循环,也没有loop和while的. selec ...
- FTP服务器与客户端的安装与配置
FTP服务器安装与配置 1. 切换到root用户: su root 2. 查看系统中是否安装了vsftpd,可以通过执行命令 : rpm -qa | grep vsftpd 3. 如果没有安装 v ...
- Java集合框架要点概括(Core Knowledge of Java Collection)
目录 有哪些集合类 Set类 Queue类 List类 Map类 HashMap的实现原理,是否线程安全,如何使其做到线程安全 HashMap的实现原理 HashMap的数据结构 HashMap的存取 ...
- 关于虚拟机NAT连接外网!!!
点开Virtual Network Editor(开始->VMware),选择vmnet8, NAT setting就可以知道了. 1. 虚拟机NAT和主机的通讯方式,是通过虚拟网关(即NAT ...
- coding++:事务管理 隔离级别
在声明事务时,只需要通过value属性指定配置的事务管理器名即可,例如:@Transactional(value="transactionManagerPrimary"). 除了指 ...
- 下面总结一些在HTML中经常使用到的快捷键
使用的编辑器是VS code: 首先是很基础的: ctrl+s :保存: ctrl+a : 全选: ctrl+c , ctrl+c , ctrl+v : 剪切,复制,粘贴: ctrl+z ,ct ...
- Dubbo与Spring Cloud的比较
区别: ----- 来源(背景): Dubbo,是阿里巴巴服务化治理的核心框架,并被广泛应用于阿里巴巴集团的各成员站点. Spring Cloud,从命名我们就可以知道,它是Spring Source ...
- qt creator源码全方面分析(3-8)
目录 项目文件工作流程 多层目录模式 依赖解析模式 包含,链接和输出 包含 链接 输出 构建目录架构 项目文件工作流程 我们在前面已经讨论了所有的项目文件, qtcreator.pro qtcreat ...
- javascript中的符号 == 和 === 的区别
== 表示相等 即仅仅比较两边变量的数值是否相等. 相等运算符隐藏的类型转换,会带来一些违反直觉的结果. 这就是为什么建议尽量不要使用相等运算符. 至于使用相等运算符会不会对后续代码造成意外影响,答 ...
- P1006 传纸条(二维、三维dp)
P1006 传纸条 输入输出样例 输入 #1 复制 3 3 0 3 9 2 8 5 5 7 0 输出 #1 复制 34 说明/提示 [限制] 对于 30% 的数据,1≤m,n≤10: 对于 100% ...