新手爬虫教程:Python爬取知乎文章中的图片

前言

知乎,与世界分享你刚编好的故事.......

今天咱们就爬取一下知乎文章上面的图片,突然发现知乎上面的小姐姐图片还是挺好看的

基本环境配置

版本:Python3

系统:Windows

相关模块:requests

储存:MongoDB

本人对于Python学习创建了一个小小的学习圈子,为各位提供了一个平台,大家一起来讨论学习Python。欢迎各位到来Python学习群:960410445一起讨论视频分享学习。Python是未来的发展方向,正在挑战我们的分析能力及对世界的认知方式,因此,我们与时俱进,迎接变化,并不断的成长,掌握Python核心技术,才是掌握真正的价值所在。

关于pymongo的一些操作

导入pymongo,使用MongClient连接数据库,连接到myinfo数据库

insert,insert_one()只能插入一条数据,插入多条数据的格式是db.user.insert([,]),一定要加[],否则只会添加进去第一条(user是一个集合,除了用db["collection"]外也可以用db.collection来对集合进行操作

update,$set:更新操作,multi=True:是否对查询到的全部数据进行操作,upsert=True:如果找不到查询的结果是否插入一条数据

db.user.update_one({"age":"2"},{"$set":{"name":"qian","age":2}})

db.user.update({"name":"sun"},{"$set":{"name":"qian"}},upsert=True)

update_one也是只能对一条数据进行操作,$set是update操作的$操作符,也可以用$inc或$push,前两个操作速度差不多,$push操作速度较慢。

打印出查询结果

from bson import json_util as jsonb

print(jsonb.dumps(list(db.user.find({"name":"wu"}))))

print(db.user.find({"name":"wu"}))

可以看到上面两种方式,不转换与转换后的结果对比如下:

*jsonb.dumps()将查询出来的结果转换成了可以读的list的格式,否则打印出来的是

这种格式的

遍历col1=db.user.find()查询到的所有结果,以及它key=name的value

for i in col1:

print(i)

print(i["name"])

知乎文章图片选取操作库和爬取地址

爬取使用requests 存储使用 mongodb 就可以了

爬取地址经过分析之后,找到了一个可以返回json的数据接口

提取链接,方便我们程序模拟,连接进行了URL编码,去找个解码工具解析一下,编程下面的URL就比较好解释了,answers后面跟了一堆的参数,应该是返回的关键字,找到limit每页显示的数据量,offset偏移量,我们下拉滚动条,发现这个在不断的叠加+5,sort_by 就是排序。

做好上面的工作,接下来就是爬取了,我简化了一下爬取的地址,只保留了一些关键的信息

知乎文章图片代码

运行结果为

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190117A0E5DF00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券