去年我们做过一个叫「学长问答」的社群活动,里面沉淀了大量有价值的互动信息,后来因为各种原因终止了。今天和涂腾聊起来,觉得这些信息就这么沉寂了太浪费。所以就试着用python爬取了知识星球的内容。

这个过程又学习了一些新的知识,已经在代码中以批注的形式写出。但还有一个没有解决的问题,就是一个提问底下可以跟好几个评论,我暂时还不能在输出结果里将「一个提问+n个评论」以整体的形式给出,而只能把评论的信息以一个字典的形式展现,这算是没有爬取的太彻底。将来再看看有没有新的解决方法。

import requests
import json
import urllib
import csv#头信息。网站只提供扫码登陆的方式,没有账号密码。我以为应该比较麻烦,但在header信息里找到了Authorization信息之后,直接可以保持登陆状态了。
# 令一个标志是直接在浏览器里访问内页网址的话,浏览器的报错是“{"succeeded":false,"code":401,"info":"","resp_data":{}}”,这个很像原来node.js的数据中心没有登陆的报错,而数据中心的模拟登陆也是通过在header中添加Authorization来实现的。
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36','Referer': 'https://wx.zsxq.com/dweb/','Authorization': '51EC09CA-6BCC-8847-4419-FA04A2FC9E00'
}#打开并写入csv文件f = open('/Users/damo/Desktop/wendatuan.csv', 'w+')
writer = csv.writer(f)
writer.writerow(['created_time','ask_name','ask_content','comment'])#定义爬取信息的函数主体def get_info(url):res = requests.get(url,headers = headers)json_data = json.loads(res.text)datas = json_data['resp_data']['topics']for data in datas:if 'talk' in data.keys(): # 判断json中是否包含 talk 这个键ask_name = data['talk']['owner']['name']ask_content = data['talk']['text']else:ask_name = ''ask_content = ''if 'show_comments' in data.keys():comment = data['show_comments']else:comment = ''created_time = data['create_time']writer.writerow([created_time,ask_name,ask_content,comment])# 截止到前面的代码,已经可以实现一个页面的爬取。下面的代码内容主要任务是实现“如何自动实现多页面爬取”# 多页面的爬取是通过Network中Query String Parameters来实现的:这里提供两个参数,观察之后发现count是固定值,而end_time和网址最后的时间是一样的。# 只不过在网页中用到了 urlencode的转化,这部分是新学习的知识。# 在这个爬虫案例中,网页构造的核心逻辑是“上一组最后一个数据的创建时间刚好是下一组数据访问网址中的一个参数”,以此来构造循环抓取的网址end_time = datas[19]['create_time']url_encode = urllib.parse.quote(end_time) # urlencode,将网址中的文本转化next_url = 'https://api.zsxq.com/v1.10/groups/518282858584/topics?count=20&end_time='+url_encode # 通过观察构造下一组数据的网址get_info(next_url) # 这里比较巧,直接在函数内部再次调用函数,从而实现不断的自循环if __name__ == '__main__':url = 'https://api.zsxq.com/v1.10/groups/518282858584/topics?count=20'get_info(url)

用python爬取知识星球相关推荐

  1. python爬知识星球付费数据_用python爬取知识星球

    去年我们做过一个叫「学长问答」的社群活动,里面沉淀了大量有价值的互动信息,后来因为各种原因终止了.今天和涂腾聊起来,觉得这些信息就这么沉寂了太浪费.所以就试着用python爬取了知识星球的内容. 这个 ...

  2. Python爬取知识星球文件

    1.Chrome浏览器按F12,在星球页面点击文件,获取"全部文件"的request URL,同时获取user_agent,cookie等headers,此作为requests.g ...

  3. 爬取知识星球,并制作成 PDF 电子书

    GitHub 地址:github.com/96chh/crawl- 功能 爬取知识星球的精华区,并制作成 PDF 电子书. 效果图 用法 if __name__ == '__main__':start ...

  4. Python 抓取知识星球内容生成词云并生成 PDF

    知识星球是什么? 知识星球是创作者连接铁杆粉丝,做出高品质社群,实现知识变现的工具.创作者可以用知识星球连接铁杆粉丝,做出高品质社群,实现知识变现. 以上来自知识星球官网的介绍 https://hel ...

  5. 记录一次爬取知识星球的word文档

    加入了知识星球,星主之前发了很多的word文档,如下图 一个一个的下载太麻烦,弄个python统一爬下来. F12看下路径和请求头,如下 用postman请求下接口,一切正常,能返回所有json信息. ...

  6. python爬知识星球付费数据_python抓取知识星球精选帖,制作为pdf文件

    版权声明:本文为xing_star原创文章,转载请注明出处! 背景: 这两年知识付费越来越热,我也加入了不少知识星球,总觉得信息有些过载了.一天不看,就有500+的内容显示未读,弄的自己格外的焦虑.感 ...

  7. python爬取路况信息查询_如何一键获取高德交通态势数据

    发送原创文章至admin@caup.net,可申请注册邀请码 您需要 登录 才可以下载或查看,没有帐号?注册方式 x W56N8WNYzvv0Yeow.jpg (86.04 KB, 下载次数: 25) ...

  8. Python 爬取北京二手房数据,分析北漂族买得起房吗?(附完整源码)

    来源:CSDN 本文约3500字,建议阅读9分钟. 本文根据Python爬取了赶集网北京二手房数据,R对爬取的二手房房价做线性回归分析,适合刚刚接触Python&R的同学们学习参考. 房价高是 ...

  9. 学python能赚什么外卖-python爬取外卖

    广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! time.sleep(1)d:pythonvenvscriptspython.ex ...

最新文章

  1. Python学习笔记第五周
  2. Jodd 工具包之StringUtil
  3. 清空 visual studio 查找和替换的历史记录
  4. word不能插入压缩包等文件的解决办法
  5. javascript时间戳转换成yyyy-MM-DD格式
  6. NWT失败反思:公司都死了,还怕得罪人
  7. 数码大师2013破解补丁|数码大师2013白金版注册破解补丁下载(附数码大师2013白金版注册码)
  8. Camtasia Studio2022卡塔莎(专业的电脑屏幕录像软件)
  9. 【Excel】按百分比随机抽取excel中数据
  10. 测试hadoop服务器NodeManager无法连接ResourceManager问题
  11. JavaScript获取浏览器可视区域的宽高
  12. 【深度访问】Cocos2d-JS精品《航海王启航》:我们是要成为游戏王的团队
  13. 神经网络算法和人工智能,神经网络的算法有哪些
  14. python网课期中答案_中国大学python答案网课期末慕课MOOC答案
  15. C语言%lld、%llu无法正常输出比long long长整数小的数
  16. doo14 视图和js的按钮上面的交互
  17. html怎么做qq空间主页,QQ空间首页布局
  18. 怎样谈网站建设项目需求
  19. kendoui 时间选择框
  20. graphics.h 的下载及安装

热门文章

  1. veket linux软件下载6,veket linux官方
  2. ajax传递复选框的参数,ajax将table复选框的数组值传递到后台
  3. java 动手动脑之父子继承
  4. 【bzoj 4390】 [Usaco2015 dec]Max Flow(树上差分)
  5. 【网络流】 HDU 4309 Seikimatsu Occult Tonneru 状压枚举边
  6. 开源社区合入patch的步骤
  7. JS格式化时间之后少了8个小时
  8. 字符串 读取西门子_【必学技能】自己动手——基于C#实现手机APP远程访问西门子PLC...
  9. 高考成绩查询2021年莆田市,2021年莆田高考志愿填报系统入口
  10. java memcmp_C 库函数