- 爬取知乎热榜
- 爬取知乎话题列表,并获取高赞回答
- 使用github workflow自动触发任务
所有回答数据已全部归档再docs分支,请切换分支查看 地址: https://github.com/zhaoweilong007/zhihuCrawler/tree/docs/document
- JDK17
- gradle7.4.2
data文件夹下包含:
项目结构如下:
├─.github
│ └─workflows
├─data
│ ├─answer
│ ├─archives
│ ├─json
│ └─topic
└─src
├─main
│ ├─java
│ │ └─com
│ │ └─zwl
│ │ ├─constant
│ │ ├─listener
│ │ ├─model
│ │ ├─process
│ │ └─util
│ └─resources
└─test
├─java
│ └─com
│ └─zwl
│ └─test
└─resources
部分截图:
- 热榜数据:
- 回答数据:
- 请求方式: POST
- 请求地址: https://www.zhihu.com/node/TopicsPlazzaListV2
- form-data:
method=next¶ms={"topic_id":1761,"offset":20,"hash_id":""}
ps: 话题爬取需要用到cookie,取cookie的值为
z_c0
表达式 | 描述 |
---|---|
nodename | 选取此节点的所有子节点。 |
/ | 从根节点选取(取子节点)。 |
// | 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置(取子孙节点)。 |
. | 选取当前节点。 |
.. | 选取当前节点的父节点。 |
@ | 选取属性。 |
表达式 | 描述 |
---|---|
bookstore | 选取 bookstore 元素的所有子节点。 |
/bookstore | 选取根元素 bookstore |
bookstore/book | 选取属于 bookstore 的子元素的所有 book 元素。 |
//book | 选取所有 book 子元素,而不管它们在文档中的位置。 |
bookstore//book | 选择属于 bookstore 元素的后代的所有 book 元素,而不管它们位于 bookstore 之下的什么位置。 |
//@lang | 选取名为 lang 的所有属性。 |