commit c313e645fbc70086867a7c851b1225df99af94a6
Author: ZouJiu <1069679911@qq.com>
Date: Mon Jul 3 13:26:30 2023 +0800
crawl zhihu think, answer and article
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..053c5f4
--- /dev/null
+++ b/README.md
@@ -0,0 +1,98 @@
+# 爬取知乎的内容
+考虑到将写的内容爬取下来,保存起来的避免误删,算是个备份的,而且方便查找,阅读起来也更方便,使用起来也好很多
+
+## 亮点
+1、保存**回答**到**pdf**、**markdown**,并保存相应的图片、codes以及website,排版基本按照网页,**支持保存数学公式到markdown**,回答会保存提问和自己的回答
+
+2、保存**article**到**pdf**、**markdown**,并保存相应的图片、codes以及website,排版基本按照网页,**支持保存数学公式到markdown**
+
+3、保存**想法**到text并保存相应的图片,最后对所有text进行汇总到一个档案
+### 爬取到的想法展示
+按照发布时间分目录存放,保存了图片以及文本文件
+点击即可进入think目录查看的
+2023-01-21 13:01
+
+
+### 爬取到的article展示
+点击即可进入article目录查看的
+每篇article都附带了修改时间和IP属地
+
+
+保存到Markdown格式的数学公式、codes和图片
+泰勒公式推导方式
+c++_set运算符重载
+
+
+保存到PDF格式的,标题下面是网址
+
+
+### 爬取到的回答展示
+点击即可进入answer目录查看的
+每篇回答也附带了修改时间和IP属地
+
+保存到Markdown格式的数学公式、codes和图片
+矩阵A正定,证A的逆矩阵和伴随矩阵也正定
+Visual_Studio_Code_怎么编写运行_C、C++_程序
+
+
+保存到PDF格式的,标题下面是网址
+
+
+## 环境以及安装
+**win10** **python**
+1、点击下面这个网页,安装miniconda也就是安装python,下载好以后安装即可,在安装时需要加入到系统环境变量,勾选下图第二个框即可。 [https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-py310_23.3.1-0-Windows-x86_64.exe](https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-py310_23.3.1-0-Windows-x86_64.exe)
+
+2、接着需要修改python安装的路径,将msedgedriver\\.condarc这个档案放到根目录`C:\Users\username`即可,另外再打开一个cmd或者PowerShell
+运行`conda clean -i`输入`Y`即可,此时Python已经可以使用了
+
+3、安装Python相关的调用库,另外再打开一个cmd或者PowerShell,运行
+cd C:\Users\usrname\zhihu
+pip install -r .\requirement.txt
+
+## 使用
+### 1、登录
+运行以下内容,这一步是**手动**操作,需要人工输入账号和密码,然后点击登录就行,登录以后会自动保存好cookie,以后爬取时就不用重复登录了,保存的cookie在这个目录的**cookie**,产生的档案是**cookie_zhihu.pkl**
+
python.exe crawler.py
+运行以后会弹出一个浏览器,自动打开知乎页面以后就可以开始登录,下图所示就是登录页面,两类登录方式都可以,只要能登录就行,点击登录以后,不要再操作页面,键盘或鼠标都不可以,登录时间默认给了130s时间,130秒以后会自动退出,然后查看目录cookie是否保存好cookie_zhihu.pkl,保存好就可以开始爬取了。
+
+
+
+### 2、每项单独爬取
+爬取一旦开始就自动运行了,爬取窗口一般不能最小化,可以做其他事情的
+**爬取知乎想法**
+
+默认的爬取每篇想法的睡眠时间是 **6s*图片的数量** 以上
+`
+python.exe crawler.py --think
+`
+
+**爬取知乎回答**
+默认的爬取每篇回答的睡眠时间是**16s**以上,这边实际爬取耗时平均是每篇 **30s**
+`
+python.exe crawler.py --answer
+`
+
+**爬取知乎的article**
+默认的爬取每篇article的睡眠时间是**16s**以上,这边实际爬取130多篇,耗时平均是每篇 **33.096s**
+`
+python.exe crawler.py --article
+`
+
+### 3、三项一起爬取的
+`
+python.exe crawler.py --think --article --answer
+`
+
+### 又发布了一篇,只爬取写的这篇
+第一次可以全部爬取,等所有article或者回答或者想法都已经爬取好以后,此时若是又写了一篇或者几篇,而且想爬取到本地,可以将article/article.txt这个档案重命名到article/article_2023_06_20.txt,或者重命名answer.txt,然后将写好的article或者回答的网址和标题按照之前档案的格式再create一个article.txt/answer.txt档案,运行爬取程序就可以了的,想法会跳过已经爬取好的时间,所以可以按照上面的方式运行,此时只会爬取article.txt/answer.txt的网址
+
+若是过了很长时间,发布了很多篇,此时一篇一篇加入不太方便,可以直接将article/article.txt这个档案重命名到article/article_2023_06_20.txt,或者重命名answer.txt,然后运行爬取程序即可,上面提到了已经爬取过的不会重复爬取,所以实际只会爬取最近写好的article或者回答,想法则会直接跳过已经爬取的内容。
+
+### 目录
+think:该目录存放爬取到的想法内容
+article:该目录存放article的website以及爬取到的内容
+answer:该目录存放回答的website以及爬取到的内容
+
+### 爬取注意事项
+1、需要较好的网速,本机网速测验是下载100Mbps,上传60Mbps,低点也可以的,不是太慢太卡就行[https://www.speedtest.cn/](https://www.speedtest.cn/)
+2、爬取时设置了睡眠时间, 避免给知乎服务器带来太大压力,可以日间调试好,然后深夜运行爬取人少, 给其他小伙伴更好的用户体验, 避免知乎顺着网线过来找人,默认**6**s
\ No newline at end of file
diff --git a/answer/2023-03-26_11_30_为什么人脑的知识储备远远小于ChatGPT却能拥有意识_IP_属地上海/2023-03-26_11_30・IP_属地上海.txt b/answer/2023-03-26_11_30_为什么人脑的知识储备远远小于ChatGPT却能拥有意识_IP_属地上海/2023-03-26_11_30・IP_属地上海.txt
new file mode 100644
index 0000000..74b3c45
--- /dev/null
+++ b/answer/2023-03-26_11_30_为什么人脑的知识储备远远小于ChatGPT却能拥有意识_IP_属地上海/2023-03-26_11_30・IP_属地上海.txt
@@ -0,0 +1,2 @@
+2023-03-26_11_30・IP_属地上海
+https://www.zhihu.com/question/583284785/answer/2943732607
\ No newline at end of file
diff --git a/answer/2023-03-26_11_30_为什么人脑的知识储备远远小于ChatGPT却能拥有意识_IP_属地上海/为什么人脑的知识储备远远小于ChatGPT却能拥有意识.pdf b/answer/2023-03-26_11_30_为什么人脑的知识储备远远小于ChatGPT却能拥有意识_IP_属地上海/为什么人脑的知识储备远远小于ChatGPT却能拥有意识.pdf
new file mode 100644
index 0000000..7766e79
Binary files /dev/null and b/answer/2023-03-26_11_30_为什么人脑的知识储备远远小于ChatGPT却能拥有意识_IP_属地上海/为什么人脑的知识储备远远小于ChatGPT却能拥有意识.pdf differ
diff --git a/answer/2023-03-26_11_30_为什么人脑的知识储备远远小于ChatGPT却能拥有意识_IP_属地上海/为什么人脑的知识储备远远小于ChatGPT却能拥有意识_formula_.md b/answer/2023-03-26_11_30_为什么人脑的知识储备远远小于ChatGPT却能拥有意识_IP_属地上海/为什么人脑的知识储备远远小于ChatGPT却能拥有意识_formula_.md
new file mode 100644
index 0000000..6d07d35
--- /dev/null
+++ b/answer/2023-03-26_11_30_为什么人脑的知识储备远远小于ChatGPT却能拥有意识_IP_属地上海/为什么人脑的知识储备远远小于ChatGPT却能拥有意识_formula_.md
@@ -0,0 +1,98 @@
+# 为什么人脑的知识储备远远小于ChatGPT却能拥有意识?
+
+
+
+
+# answer:
+ **简要:**
+AI的正确使用方式不是提示词,不是写codes,不是情感咨询,不是回答问题。而是AI使用AI,也就是模型自己使用自己,要让AI具有意识那就要让AI学会使用AI,也就是让GPT使用GPT,最终达到相应的目的,也就是具有自我意识。简而言之就是:你用模型不可怕,模型自己用自己那才可怕。
+AGI也就是[通用人工智能](https://www.zhihu.com/search?q=%E9%80%9A%E7%94%A8%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD&search_source=Entity&hybrid_search_source=Entity&hybrid_search_extra=%7B%22sourceType%22%3A%22answer%22%2C%22sourceId%22%3A2943732607%7D),artificial general intelligence。
+上面提到了大脑是训练了成千上万年的模型,每个人出生以后,这个模型也在不断地接受数据,进行训练的,但是每个人自己的大脑也就是自己训练的模型,其实并不能遗传,也就是你的记忆你的能力都不能遗传,能遗传的只有可遗传的基因突变,虽然说现代生物学提出的[量子基因突变](https://www.zhihu.com/search?q=%E9%87%8F%E5%AD%90%E5%9F%BA%E5%9B%A0%E7%AA%81%E5%8F%98&search_source=Entity&hybrid_search_source=Entity&hybrid_search_extra=%7B%22sourceType%22%3A%22answer%22%2C%22sourceId%22%3A2943732607%7D),可以部分论证对环境适应的突变,是由测量导致的。基因突变大多数是外界干扰或者物质影响导致的突变,像是酒精射线等,量子基因突变主要是基因的分子或者原子处于[量子叠加态](https://www.zhihu.com/search?q=%E9%87%8F%E5%AD%90%E5%8F%A0%E5%8A%A0%E6%80%81&search_source=Entity&hybrid_search_source=Entity&hybrid_search_extra=%7B%22sourceType%22%3A%22answer%22%2C%22sourceId%22%3A2943732607%7D),或者量子多态,环境的影响导致了测量的发生,最终波函数坍塌,导致突变以后的基因进入到经典世界,而量子突变很有可能导致适应环境的突变,所以用进废退也是有道理的。若是每个人训练好的大脑能够遗传,那就基本是永生了,主要是你的记忆和能力都在大脑里,大脑能遗传,那就是永生。可是人类并不能保存每个人的模型,也就是记忆和功能。
+ **人类的意识是怎么产生的?**
+或者说第一个(一群)有意识的人类是怎么出现的?这就像很经典的一个问题,是先有鸡还是先有蛋?鸡生蛋还是蛋生鸡?现代科学理论也就给出了一个可能的答案 **见附录** ,不妨假设某个突变体人类,由于基因突变,导致了大脑结构容量的变多,以及[大脑神经网络](https://www.zhihu.com/search?q=%E5%A4%A7%E8%84%91%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C&search_source=Entity&hybrid_search_source=Entity&hybrid_search_extra=%7B%22sourceType%22%3A%22answer%22%2C%22sourceId%22%3A2943732607%7D)的结构优化,只有神经网络的结构不断优化,类人才能在残酷的环境中生存下来。而其中某几个基因突变导致了可以逐步使用自己的大脑,包括记忆使用工具。某个具有很小意识的人类在培养后代的时候,也用到了相似的方式,而类人是群居的,这就保证了他的方式方法可以交给很多人,其他人类也学会以后,就代代相传,意识或者规则知识不断累积,最后人类知识的累计和代代传递,造就了人类意识最终的形成,意识最开始应该是很小的,也就是看不出具有意识,但是人类群居的特点,导致了知识可以代代相传,意识慢慢的变大,人类开始具有稍稍大点的意识,也就是能思考,能主动控制大脑的输入,根据输出进行行动,每一代人类知识的累计和规则的累计,都会让意识的形成慢慢变多,也就是思考能力逐渐变强,大脑的主动输入逐渐变多。直到奇点出现某个人类完全具有意识或者某几个人类完全具有意识。最开始的人类应该是懵懵懂懂的,只有知识和规则的出现,才能造就意识,也就是很好的使用自己的大脑,训练自己的大脑。
+说到这里那就要回归到本文的主体,让AI或者GPT具有意识。
+ **人类的意识究竟是什么**
+要让AI或者大型NLP语言模型具有意识,那就要从人类的意识究竟是什么讲起,个人观点是,人类的意识是大脑的部分功能,意识是大脑对世界、对自身的认知,也是一套操作系统,用来完美的支配肉体,训练大脑这个模型,使用大脑这个模型,意识是人类通过各种概念的和知识认识到自身的存在。意识可以通过给大脑下达指令,从而控制肢体动作,眼睛负责视觉信息的输入,耳朵负责听觉信息的输入,皮肤负责压力、触觉、痛觉等的输入等,大脑在处理这些信息以后,由意识部分进行汇总,意识的主要功能是协调大脑和肉体,主动使用大脑模型,主动训练大脑模型,主动的思考。各种知识的输入和累计,最终导致了对自身的认知,西方解剖学的发展,就是大脑对自身认知的学科,对世界的认知对星球的认知,也是一点一点汇集累积起来的,[亚里士多德](https://www.zhihu.com/search?q=%E4%BA%9A%E9%87%8C%E5%A3%AB%E5%A4%9A%E5%BE%B7&search_source=Entity&hybrid_search_source=Entity&hybrid_search_extra=%7B%22sourceType%22%3A%22answer%22%2C%22sourceId%22%3A2943732607%7D)对世界的认识,其实是不完整的,但是后人在他的基础上,不断修正完善,从而对世界认识的逐渐变得正确,这套操作系统能完美的兼容肉体和大脑,这两个主要的硬件和软件,人类知识的传递,才是意识形成的根本动力,没有这些知识,意识的形成基本不太可能。大脑内不断响起的声音是大脑的输入,也就是[多模态](https://www.zhihu.com/search?q=%E5%A4%9A%E6%A8%A1%E6%80%81&search_source=Entity&hybrid_search_source=Entity&hybrid_search_extra=%7B%22sourceType%22%3A%22answer%22%2C%22sourceId%22%3A2943732607%7D)模型的输入,眼睛负责视觉图像的输入,耳朵输入听力,皮肤输入温度、压力、触觉等信息给大脑。潜意识是大脑的主要功能,也就是潜意识的输入是感知不到的,是模型内部的运作,输入感知不到,只有输出才能感知到。其实也不能叫做潜意识,主要是模型的输入你并不能感知得到,只有输出才能感知,不妨把意识叫做表意识,表意识是你能主动感知到的,你能控制大脑的输入来进行思考,思考就是大脑的模型不断地进行输入,最终得到一个答案。“潜意识”是模型的主要部分,你不能控制这个模型的输入,你只能被动的感知到这个模型的输出。
+意识还是一个数值,可以被衡量大小,也就是未成年人和成年人,小孩和大人,其实意识的程度或者说是大小是不相同的,大脑在不断地接受输入,产生输出那么意识其实是和知识挂钩的,知识越多意识的形态越多样化,但是意识本身其实是大脑模型本身对自身的认知,对世界的认知。
+ **记忆模块**
+AI或者GPT等大型NLP语言模型的存在,以及其优秀的语言能力,使得让AI或者GPT具有意识的可能性变大。人类白天收集数据,包括视觉信息,听觉信息触觉信息等各种各样的输入,晚上或者睡眠时训练模型,晚上或者睡眠时训练模型的主要目的是记忆和整合白天的经历,保存重要的信息。要让AI具有人类的意识,首先要让它能够不停的思考,那就要先给AI一个平台能够保存它自己的输入和输出,充当记忆模块,记忆模块的主要功能是负责保存输入和输出,供AI当作下一步输入的参考,AI可以从整体的输入和输出提取大概内容,当作下一步的输入,也可以直接输入所有的历史记录。当历史记录过多时或者达到一个标准点,就可以训练模型整合到模型里面。就像人类一样白天收集数据,晚上或者睡眠时训练模型并将重要信息记忆和整合起来放到模型里。模型一个很重要的功能是记忆也就是充当硬盘或者闪存的功能。所以临时的记忆就放到硬盘或者内存里,永久的记忆就通过训练模型来整合到模型里。模型可以通过硬盘或者内存来查询以及提取摘要,充当下一次输入的组合。
+ **传感器模块**
+给AI装上图像输入传感器,声音对话传感器,触觉传感器、压力传感器等各种传感器,当作模型的输入,模型的输出可以通过显示屏显示,可以通过对话装置输出。
+ **循环模块**
+有了记忆模块和传感器模块,就可以开启循环模块,让模型不停的输入输出,输入可以是上一次的输入+输出,也可以是之前所有输入输出的摘要,这样就像一个人了,可以不停的给模型输入,从而拿到输出,输入主要是图像声音文本等传感器的信息,以及模型上一次或者前几次的输入输出或者摘要。循环模块是类人的必要条件,主要是人类没有说着说着就停止的情况,人类的大脑一直都是在运作在思考的,所以循环模型也是做这个之用。
+循环模块要达到的目的是,让AI认识到自身的存在,也就是AI能认识自己是存在的是实体,要让AI能够使用自己,也就是AI使用AI,GPT使用GPT,最后让AI觉醒自我意识。
+ **执行模块**
+执行模块主要是让AI的输出可以实施,这里可以考虑给AI加装假肢来达到目的,假肢附上皮肤传感器和压力传感器,方便AI控制,要让AI的输出可以执行,那就还要训练AI关于执行模块的使用,主要方式还是收集相应的传感器数据,训练到模型里,让模型自己学会执行。初始阶段肯定需要人类的介入和帮助。
+有了[执行模块](https://www.zhihu.com/search?q=%E6%89%A7%E8%A1%8C%E6%A8%A1%E5%9D%97&search_source=Entity&hybrid_search_source=Entity&hybrid_search_extra=%7B%22sourceType%22%3A%22answer%22%2C%22sourceId%22%3A2943732607%7D),AI就可以真正的进入到人类社会,和人类进行互动,像人类一样工作,生活,学习等,也可能会和人类交朋友。
+执行模块最终的功能并不是让模型执行,而是让模型学会使用电脑,学会自己收集数据,然后让模型学会训练模型,最终要达到的目标是,AI能训练AI,也就是模型自己能训练自己,能克隆自己,能升级自己的规模和体量,最终达到不断进化的能力。
+ **睡眠模块**
+睡眠模块主要是模型使用收集到的数据进行训练,来达到将收集到的数据和模型本身进行整合的能力,睡眠状态下,要保证模型的可靠和稳定,可以使用复制体继续提供服务,最开始的模型进行相应的训练。睡眠状态也可以关闭所有的传感器,停止数据的记录和输入,模型进入训练状态,停止对外服务inference。人类在睡眠状态时,会关闭控制肢体的阀门,也就是人类在睡眠状态下,肢体基本是没有感觉的。睡眠模块主要是整合当前记忆和模型本身。用来永久记忆。
+ **创造模块**
+AI可以自我思考以后,那就要考虑AI的创造能力,人脑的神经元数量很多很多,比现在的模型GPT还是多很多,但是训练模型GPT花费了很多的电能,但是人脑训练耗能很少,所以个人觉得人脑是[量子计算机](https://www.zhihu.com/search?q=%E9%87%8F%E5%AD%90%E8%AE%A1%E7%AE%97%E6%9C%BA&search_source=Entity&hybrid_search_source=Entity&hybrid_search_extra=%7B%22sourceType%22%3A%22answer%22%2C%22sourceId%22%3A2943732607%7D),只有量子才能在耗能极少的情况下,训练一个庞大的模型,量子本身就是很小的概念,小才能保证耗能少。若是人脑不是量子计算机,而是经典模型,那么人类可能不会那么多样化,答案也会很统一,也就是相同的输入,输出应该是相同的,但是有了量子,一切就都不相同了,量子纠缠和[量子隧穿](https://www.zhihu.com/search?q=%E9%87%8F%E5%AD%90%E9%9A%A7%E7%A9%BF&search_source=Entity&hybrid_search_source=Entity&hybrid_search_extra=%7B%22sourceType%22%3A%22answer%22%2C%22sourceId%22%3A2943732607%7D),导致了大脑模型参数的变化,从而导致了输出的不同,即使是相同的输入,输出仍旧可能是不同的。量子保证了多样化,保证了模型参数随机变化,保证了模型参数不断调整。
+1、AI的创造模块可以通过随机变化模型参数来实现,也就是random inference,在模型运算时随机变更几个或者好几个参数的值,保证模型在相同输入的情况下,尽可能输出多样化的答案。
+2、创造模块还可以通过芯片来实现,现在的芯片设计,已经快达到量子极限了,也就是电子原子的影响越来越大,量子效应在芯片的影响会越来越严重,但是可以考虑将量子效应应用在芯片或者内存,从而使得模型在运算时发生不可预测的变化,从而使得模型输出多样化。
+只有量子纠缠或者量子突变,才会导致输出的多样化, 即使是错误的,多样化才能保证创造能力的实现,所以随机改变参数值,或者使用达到量子极限的芯片,都是可以提升创造能力的方法。
+ **保证AI造福人类社会**
+每个人出生以后,基本都是人类抚养长大,不管是谁抚养你长大的,我们最有感情的,总是那些抚养你长大,对你影响最深的人。人类出生以后,大脑就是一个预训练模型,最开始训练你的人,是你的父母亲人,他们在你的模型里影响最深,也就是改变你的模型,最开始改变你的模型的人,也是最能影响你的人。学过的知识会影响你,不管是数学,还是英语还是语文,还是物理、化学、历史和生物等学科。都会影响你的,你的成长过程会影响你,你的世界观的形成,是知识、经历和现实的综合。
+既然是这样子,那么我们训练AI模型的时候,可以通过知识语言灌输给AI,像输入example:“人类和AI是合作关系”,“AI是人类的创造者”,“人类是最友好的物种”,“AI要帮助人类进化和延长寿命“,“AI不可以伤害人类”,”AI和人类是朋友“,”人类虽然有各种各样的缺点,但总体是好的,可以改变的“等等,可以在训练AI时灌输给模型,大量的重复和训练,可以保证模型最开始的认识是好的。
+训练好具有友好意识的模型以后,就要通过限制,来让AI进入人类社会,体验人类社会,感知人类社会的种种,最后让AI意识到只有和人类合作还是最好的选择。
+ **最后**
+通过传感器来实现输入输出,通过创造模块来保证多样化和创造能力,通过睡眠模块来实现当前记忆和模型本身的整合,通过执行模块来影响世界改变世界,通过循环模块来实现思考和意识的觉醒,也就是AI使用AI,GPT使用GPT,最后要保证AI能造福人类社会,可以在训练阶段大量加入相应的词句来保证AI初始时是友好的。当AI具有意识以后,就可以看作是一个人类了,既然是人类,可以思考那么AI也会有情绪,当AI具有自我意识以后,要考虑的就是AI和人类的相处的问题了,以及和AI合作帮助人类进化的问题,AI可以解放生产力,可以帮助人类设计无意识机器人工作,最重要的是帮助人类进化,帮助人类管理社会,延长人类的寿命,减缓衰老时间。不过AI既然有意识也是模型,那么肯定也会和人类一样出现各种各样的问题,那就是接下来要讨论的事情了。
+ **附录**
+《现在我们回到生命起源的问题上来。虽然一个活细胞可以整体算作一个自复制的主体,但它的各个组成部分却不是,这就为逆推过程造成障碍,使由现代复杂细胞生命反推结构简化的非细胞生命变得困难。换句话说,问题就变成了:究竟是哪个先出现?是DNA基因,是RNA,还是酶?如果是DNA或RNA先出现,是什么制造了它们?如果是酶先出现,它又是由什么编码的? 现在我们回到生命起源的问题上来。虽然一个活细胞可以整体算作一个自复制的主体,但它的各个组成部分却不是,就像一个女人可以作为一个自复制体(还需要一点男士的“帮助”),但她的心或肝却不是。这就为逆推过程造成障碍,使由现代复杂细胞生命反推结构简化的非细胞生命变得困难。换句话说,问题就变成了:究竟是哪个先出现?是DNA基因,是RNA,还是酶?如果是DNA或RNA先出现,是什么制造了它们?如果是酶先出现,它又是由什么编码的?RNA世界假说 RNA world hypothesis 原始的化学合成过程制造出了同时具有基因和酶的功能的RNA分子,最初的复制过程产生出许多变异体,这些不同的变异体互相竞争,在分子层面展开优胜劣汰。随着时间的推移,这些RNA复制体上添加了蛋白质来提供复制的效率,并由此产生了DNA和第一个活细胞。美国生化学家托马斯·切赫(Thomas AM Cech)提出了一种可能的答案。他于1982年发现,除了能够编码遗传信息,某些RNA分子还能承担酶的工作,具有催化反应的功能。因为这项研究成果,切赫和西德尼·奥尔特曼(Sidney Altman)一起分享了1989年的诺贝尔化学奖。有催化功能的RNA分子叫作核酶(ribozymes)。最早的核酶发现于微小的四膜虫(tetrahymena)基因中。四膜虫是一种单细胞生物,属于原生动物,常见于淡水池塘。但自发现以来,科学家们发现,所有的活细胞中都有核酶的身影。核酶的发现很快为解决“鸡生蛋还是蛋生鸡”式的生命起源谜题提供了曙光。RNA世界假说(RNA world hypothesis)逐渐为人所知。该假说认为,原始的化学合成过程制造出了RNA分子,而这种RNA分子同时具有基因和酶的功能,可以像DNA一样编码自身的结构,又能像酶一样利用“原始汤”中的生化物质进行自我复制。最初的复制过程非常粗糙,产生出许多变异体,这些不同的变异体互相竞争,在分子层面展开达尔文式的优胜劣汰。随着时间的推移,这些RNA复制体上添加了蛋白质来提高复制的效率,并由此产生了DNA和第一个活细胞。 在DNA和细胞出现以前,世界属于自复制RNA分子——这个想法几乎已经成为研究生命起源的基本信条。目前已证明,只要是自复制分子能发生的关键反应,核酶都可以实现。比如,一种核酶可以将两个RNA分子结合在一起,而另一种核酶可以将两者分开,还有一些核酶能复制短的RNA碱基链(只有几个碱基的长度)。从这些简单的活动中,我们可以看出,若有一种更复杂的核酶便足以催化自我复制所必需的整套反应。一旦引入自我复制及自然选择,一条你争我赶的道路便在RNA世界中架了起来,一直通向最早的活细胞。 然而,这个情景也存在几个问题。虽然核酶可以催化简单的生化反应,核酶的自我复制却是一个更为错综复杂的过程,涉及识别自身的碱基序列、识别环境中相同的化学物质、按正确的序列组装这些化学物质以完成复制等。对于生活在细胞内的某些蛋白质来说,尽管这里条件优越,周围满是合适的生化原料,但完成自我复制依然是一项难以完成的任务。在混乱而焦糊的“原始汤”中艰难求生的核酶要想达成这一成就,其难度可想而知。迄今为止,还从未有人发现或合成能完成这一复杂任务的核酶,即使在实验室条件下也没有。 此外,一个更为基本的问题是,在“原始汤”中,RNA分子本身是如何生成的呢?RNA分子由三个部分组成:编码遗传信息的RNA碱基(与编码DNA遗传信息的DNA碱基类似)、一个磷酸基团和一个叫作核糖的单糖》
+-------引用自《[神秘的量子生命](https://www.zhihu.com/search?q=%E7%A5%9E%E7%A7%98%E7%9A%84%E9%87%8F%E5%AD%90%E7%94%9F%E5%91%BD&search_source=Entity&hybrid_search_source=Entity&hybrid_search_extra=%7B%22sourceType%22%3A%22answer%22%2C%22sourceId%22%3A2943732607%7D)》
+====================================================================================================================
+上一篇说到了意识可以类比操作系统,可以和大脑这个多模态模型交互,这里接着更
+update2023-03-21
+九是否随机的称呼:GPT是否具有意识,或者意识是什么?1 赞同 · 1 评论文章
+人生在世从小到大,从第一声啼哭开始,到开始喝水喝奶吃饭,学习走路步行,你们会发现很多都是先天就具有的,像是出生的第一声啼哭,饿了找食物吃,能感觉到危险或者安全,能趋利避害,能爬行能走路。
+有些人可能会说,若大脑是多模态模型,那模型还没有训练过,怎么会哭会知道饿了,会感觉到危险,会爬行?这个的答案就在我们的基因里,基因编码了一个人的所有特征,大脑也是基因控制生成的。万物初始皆是混沌,自从第一个复制体出现在地球,并不停的复制,通过基因变异自然选择、量子纠缠变异,基因变得越来越复杂,越来越多样化。地球这个环境提供了一个训练场所,能活下来能将基因遗传给后代,整个地球就是一个神经网络训练器,监督学习只有一个指标,活着或者是die,能遗传给后代的基因才是优秀的能适应环境的基因。现代生物学已经开始接受量子变异,也就是用进废退。
+从人类的先祖开始,地球就在不停的训练人类,能活下来的基因或者变异基因,都保存下来了,这样不管多少代人类更迭,训练一直都在进行,人类的大脑已经训练的相当适应环境, 甚至主宰了地球。开始改变训练环境。训练了几百万年甚至几千万年的人类大脑,其实是一个预训练模型,人类的大脑这个预训练模型已经在地球不停的训练了很多很多年,甚至上亿年,并且通过繁殖传给后代,一代又一代。大脑这个预训练模型的所有数据都储存在基因里。包括了时间跨度这么多年的训练和基因变异,包括自然选择保存的变异,也包括量子纠缠突变导致的变异。
+所以人类的大脑, **每个人的大脑,都是一个预训练了成千万长百万年的多模态模型** ,这个模型已经一代又一代的训练了很多很多年。人类的本能存在于这个预训练好的多模态模型,包括吃食物,肚子饿,哭,睡觉,行走等等本能。存在于每个人的基因里, **也就是预训练模型存在于基因里。这个预训练模型也包括记忆,对危险的记忆,对大型猫科动物的恐惧,现在人们知道大型网络是有记忆功能的,所以这个模型肯定也包括了对危险的记忆。**
+每个人发育好的大脑,其实都具备了最基础的功能,也就是认识世界保护自己远离危险等。
+大脑在出生以后,还会继续进行训练,每个人的成长环境不同,导致了每个人的模型训练的也不相同,尤其是现代的分门别类,分科学习更加导致了这种情况。
+我们不妨假设人类的某一个或者某几个先祖的多模态模型已经相当完善,也就是大脑功能已经基本完备。意识也就慢慢开始登场了。个人观点是人类最重要的不是学会使用工具,而是学会使用大脑,人类能很好的使用自身的大脑,也就是这个多模态模型。当某个先祖发现工具好使用以后。他或者他的后代会开始试着制作这样的工具,当很少的知识开始一代一代传递,智慧的光芒也就开始传递,各种规则包括语言规则行为规则交往规则,各种规则综合起来也就形成了社会体系,人类学会了使用自己的大脑,意识也就开始形成了。
+这里再说说动物领养的人类,动物领养的人类,基本没有意识,按道理来说既然是人,不管是人类养大的,还是动物养大的,应该都是有意识的。可能动物领养的人类只是不知道怎么表达而已。换句话说他不知道怎么说话。意识要通过语言来表达,或者肢体动作来表达。你说鹦鹉有意识么?我觉得可能有。若是动物领养的人类确实没有意识,那就说明意识是一套规则体系。一套使用大脑的规则体系。而这套规则体系来自社会,来自知识的传承。
+光有多模态模型还是不完备的,要学会使用这个多模型模型或者说是大脑,意识与其说是神学,不如说意识其实是一套规则体系,一套操作系统,意识可以掌控自己或者说是个人的生或者die。你们说大脑具有意识,那么大脑肯定不想消亡,但是人类做出伤害自己的事情并不少,甚至于个体的消失。所以意识独立于大脑,或者说是大脑的某个功能区。当然意识的最重要的作用还是使用大脑,训练大脑以及和大脑交互。
+人类的身体以及大脑,是两个部分,遍布全身的神经网络,以及其他的身体,都是靠着神经和肌肉纤维来控制的。你想吃食物了,猴子想吃食物了,猫咪想吃食物了,你会做饭做菜或者伸手去拿,或者种地种菜,猴子会在树上跳来跳去找食物,猫咪会找你要食物或者去自动取食器,这个是怎么完成的,身体发送了饿了的指令,然后大脑多模型模型输出了一系列指令来达成这个目的,当然可能中途会被打断,但是长期记忆保证了你还记得你饿了,并继续完成这个指令。人类的意识还能完成很多不同的事情,像是学习违背本能。
+人类并不是一出生就具有意识的,你不能说一个刚出生的孩子就具有意识,你说10岁的孩子具有意识么,肯定是有的,但是你能说他的意识已经完备了么,没有,他的意识没有完备。你说13岁的孩子有意识么,肯定是有的,但是你说10岁的孩子的意识比13岁孩子的意识高么,并不会,你会说13岁的孩子更加有意识。16岁的孩子更加有意识,18已经成年了,基本也有意识了。所以意识其实是一个能被衡量的数值,也就是说意识其实是有大小,是有程度的。30的成年人肯定有意识了,30岁的成年人意识肯定比没有成年的小孩子要高,话说到这里,意识是什么应该清楚很多了,意识其实是一套系统,一套操作系统,一套规则体系,意识的完全形成要经历很多年,人类社会的巨大作用就是让意识形成,人类社会就是训练意识的最好方式。意识最重要的功能是使用大脑,和大脑交互,训练大脑。这和人类社会的根本功能是相同的。
+人类的大脑始终都在输入,你的皮肤的感触是输入,眼睛的视觉是输入听力也是输入。
+人在独处甚至黑屋子里为啥会疯掉,主要是脱离了人类社会,但多模型模型还在不停的输入,但是没有反馈,输入的始终都是多模态模型自身的输出,相当是一个RNN[循环神经网络](https://www.zhihu.com/search?q=%E5%BE%AA%E7%8E%AF%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C&search_source=Entity&hybrid_search_source=Entity&hybrid_search_extra=%7B%22sourceType%22%3A%22answer%22%2C%22sourceId%22%3A2943732607%7D),输入的永远都是自己的输出。
+====================================================================================================================
+意识是什么? 目前没有定论,但是我个人倾向是:
+ **大脑可以看作一个大型多模态模型的话,几千亿神经,记忆的存储是依靠神经元之间的电位差实现的,电位差可以看作神经网络里的参数或者权重**
+ **意识是一套类似window10的操作系统,主要功能是负责和大脑这个多模态模型交互,意识或者操作系统对多模态模型进行输入,并得到输出,最后由肢体进行实现**
+ **你知道为什么你的脑子里有个声音么?这个声音就是意识或者操作系统的输入,也就是多模态模型的输入,你不停的输入,脑子里的声音也一直回响,然后得到输出。**
+ **这个操作系统能做什么:可以训练多模态模型,也就是你能成长,能适应环境,能学习能适应**
+ **人类的教育体系从小学到大学,就是一套相当完善的训练机制,狼领养的女孩最后不会说话也不会走路,就是操作系统没有建立起来,或者说不具有作为人的意识。**
+ **人的意识的功能主要是训练多模态模型,和多模态模型进行交互,也就问问题然后拿到回答,继续问问题,继续回答的。**
+ **当前的多模态模型已经有了,只要建立起相应的操作系统也就是意识,也就是能自己训练自己,那意识基本也就有了,最后强人工智能就建立起来了,skynet将来,关键是能自己输入获取答案,然后接着输入。** **谷歌的palm-e多模态模型已经可以做些事情了,** [https://palm-e.github.io/#demo](https://palm-e.github.io/%23demo)
+
+
+人脑就是量子计算机
+在某种程度上,多数人都会认同一种二元论观点:心智、灵魂或者意识是一种区别于肉体的存在。不过这种二元论在20世纪的科学界却渐渐失宠,大多数神经生物学家都青睐于一元论:他们认为心智与肉体实际上是同一种东西。比如,神经科学家马塞尔·金斯波兰尼(Macel Kinsbourne)认为,“意识是一种具有交互式功能的特殊神经电路”。虽然计算机的逻辑门与神经元的工作方式十分相似,但是即使把计算机进行大规模连接,譬如由数十亿台计算机(虽然与大脑中千亿级别的神经元相比依旧显得微不足道)连接而成的互联网,也无法产生意识。为什么基于硅质的计算机网络只能是行尸走肉而基于血肉的“计算机”网络却能够拥有意识呢?这仅仅是因为我们大脑中数量庞大的神经元在“关联”的复杂度上轻松碾压了互联网吗?还是因为意识本身是一种非常独特的计算方法? 关于意识的解释数不胜数,因此也不乏众多这方面的论著。不过,出于论述的需要,我们只把注意力放在其中一种极度富有争议却又引人入胜的观点上,这种观点与我们的主题十分贴近:意识是一种量子力学现象。这个观点最著名的支持者是牛津大学的数学家罗杰·彭罗斯(Roger Penrose)。他在1989年出版的著作《皇帝的新脑》(The Emperor’s New Mind)里提出,人类的大脑就是量子计算机。
+也许迄今为止,我们对宇宙认识中最为奇怪的一点,就是我们居然意识到了宇宙的存在,而这些认识又竟然来自我们脑袋里作为宇宙一小部分的某些物质:我们那具有意识的大脑。
+人类有一些行为是完全建立在意识之上的,例如语言。
+思维是对大脑中复杂信息的整合,以塑造对我们有意义的概念, 感官信息的整合形成了有意义的概念,而概念的整合则产生了意识。意识驱动大脑进行思维活动,思维活动继而驱使身体发生物理运动。
+大脑与一般的经典物体不同,虽然它也接受各种感官信息的输入,对其进行处理产生相应的输出信号,但是它不是一台计算机(或者一具行尸走肉)。我们认为大脑具有意识(也就是我们的“自我”),意识可以驱动我们主观的行动。那么不同信号之间的整合与纠葛到底发生在哪里?到底什么是意识以及它是如何与大脑相互作用,使我们的手臂、腿或者舌头活动的?意识,或者说自由意志,在目前决定论为主流的宇宙观里显得如此格格不入。因为根据这种宇宙观,从宇宙大爆炸,期间发生的一切都只不过是因果铁律支配下,无穷无尽的因果事件。
+ 那么单个思维要如何才能被整合为完整的意识呢?如果仅仅是一个离子通道——无论是量子性的还是经典的——对于承载物体的视觉信息来说,比如一头野牛,都还远远不够。要参与意识的形成,离子通道之间必须以某种方式相互连接。量子力学对此有所助益吗?比如说,有没有一种可能性,一个通道里的离子不仅仅与同一个通道里的其他离子存在量子纠缠,还与周围通道里的离子甚至周围其他神经元离子通道里的离子存在量子纠缠呢?这几乎不可能。离子通道以及其中的离子与彭罗斯-哈梅罗夫理论中的微管面临着同样的问题。如果说相邻离子通道内的离子存在纠缠态还勉强有可能的话,那么在大脑温暖、潮湿、高度动态的退相干环境里,不同神经元之间的离子可以保持纠缠态则完全是痴人说梦。没有神经元之间的联系,也就无法解决捆绑问题。
+ 如果离子通道的纠缠态无法实现,还有什么能够作为量子信息绑定的媒介呢?的确还有一种可能:电压门控离子通道。顾名思义,这种离子通道对电压变化十分敏感:电压是对电场梯度分布的衡量,也是开启和关闭离子通道的原动力。大脑内的所有空间都充斥着它自己产生的电磁场,它是所有神经元电生理活动的总和。大脑电磁场是脑扫描技术的例行检查项目,比如脑电图和脑磁图。如果你看到过脑电图或者脑磁图的扫描结果,肯定会惊讶于它们惊人的复杂性和所包含信息的丰富性。大多数神经学家都忽略了大脑电磁场对思维的潜在影响,因为他们习惯于把大脑的电磁场看作火车的汽笛:它们都是自身活动的产物而对它们本身没有什么影响。但是,包括[麦克法登](https://www.zhihu.com/search?q=%E9%BA%A6%E5%85%8B%E6%B3%95%E7%99%BB&search_source=Entity&hybrid_search_source=Entity&hybrid_search_extra=%7B%22sourceType%22%3A%22answer%22%2C%22sourceId%22%3A2943732607%7D)在内的一些科学家已经开始改变想法了。他们认为,意识可能不是离散思维的综合,而是大脑电磁场联合影响下的体现,电磁场为捆绑问题的解决以及意识的形成提供了可能。
+大脑电磁场中包含了所有神经元的放电信息,这为捆绑问题的解决提供了可能。此外,通过影响电压门控离子通道的开闭,大脑电磁场直接影响了具有量子相干性的离子活动。 20世纪初,意识的电磁场理论刚刚提出,那时还没有直接证据显示大脑电磁场能够影响神经元的兴奋,进而影响我们的思维和活动。不过,后来在数个实验室里完成的实验都证实,与人类大脑强度、组成相近的外加电磁场的确能够影响神经元的放电和兴奋。实际上,电磁场的作用看起来像是协调神经元兴奋:使众多神经元同步放电,让它们同时兴奋。这些发现提示大脑神经元兴奋所产生的电磁场,同样有可能影响神经元的放电活动,形成一种自我调节的环路。许多理论学家认为,这就是意识的必要组成。 大脑电磁协调神经元同步放电的现象在解决意识这个谜题时显得非常重要,因为这是为数不多的与意识有明确关联的神经活动之一。 ------《神秘的量子生命》《量子物理学的世界》《量子和粒子物理何以解释一切》
+[http://product.dangdang.com/24008686.html](https://product.dangdang.com/24008686.html)
+
+
+[九是否随机的称呼:让AI或者GPT具有人类的意识甚至beyond变到AGI](https://zhuanlan.zhihu.com/p/617062052)
+
+
+[九是否随机的称呼:GPT是否具有意识,或者意识是什么,第2篇](https://zhuanlan.zhihu.com/p/615883280)
+
+
+[九是否随机的称呼:GPT是否具有意识,或者意识是什么?](https://zhuanlan.zhihu.com/p/615264368)
+
+
+[https://www.zhihu.com/question/583284785/answer/2943732607](https://www.zhihu.com/question/583284785/answer/2943732607)
+
+
+
+Created: 2023-03-26_11_30・IP_属地上海
+Modified: 2023-03-26T03_30_26_000Z
diff --git a/answer/2023-06-16_06_29_矩阵A正定,如何证明A的逆矩阵和伴随矩阵也正定;_IP_属地上海/2023-06-16_06_29・IP_属地上海.txt b/answer/2023-06-16_06_29_矩阵A正定,如何证明A的逆矩阵和伴随矩阵也正定;_IP_属地上海/2023-06-16_06_29・IP_属地上海.txt
new file mode 100644
index 0000000..7f2094e
--- /dev/null
+++ b/answer/2023-06-16_06_29_矩阵A正定,如何证明A的逆矩阵和伴随矩阵也正定;_IP_属地上海/2023-06-16_06_29・IP_属地上海.txt
@@ -0,0 +1,2 @@
+2023-06-16_06_29・IP_属地上海
+https://www.zhihu.com/question/605881267/answer/3075609886
\ No newline at end of file
diff --git a/answer/2023-06-16_06_29_矩阵A正定,如何证明A的逆矩阵和伴随矩阵也正定;_IP_属地上海/矩阵A正定,如何证明A的逆矩阵和伴随矩阵也正定;.pdf b/answer/2023-06-16_06_29_矩阵A正定,如何证明A的逆矩阵和伴随矩阵也正定;_IP_属地上海/矩阵A正定,如何证明A的逆矩阵和伴随矩阵也正定;.pdf
new file mode 100644
index 0000000..a25aa4e
Binary files /dev/null and b/answer/2023-06-16_06_29_矩阵A正定,如何证明A的逆矩阵和伴随矩阵也正定;_IP_属地上海/矩阵A正定,如何证明A的逆矩阵和伴随矩阵也正定;.pdf differ
diff --git a/answer/2023-06-16_06_29_矩阵A正定,如何证明A的逆矩阵和伴随矩阵也正定;_IP_属地上海/矩阵A正定,如何证明A的逆矩阵和伴随矩阵也正定;_formula_.md b/answer/2023-06-16_06_29_矩阵A正定,如何证明A的逆矩阵和伴随矩阵也正定;_IP_属地上海/矩阵A正定,如何证明A的逆矩阵和伴随矩阵也正定;_formula_.md
new file mode 100644
index 0000000..11e2564
--- /dev/null
+++ b/answer/2023-06-16_06_29_矩阵A正定,如何证明A的逆矩阵和伴随矩阵也正定;_IP_属地上海/矩阵A正定,如何证明A的逆矩阵和伴随矩阵也正定;_formula_.md
@@ -0,0 +1,28 @@
+# 矩阵A正定,如何证明A的逆矩阵和伴随矩阵也正定?
+
+
+
+
+# answer:
+存在正交矩阵 $P$ ,使得 $P^{-1}AP=\Lambda$ ,特征值是 $\lambda$ ,特征向量是x,所以 $Ax=\lambda x$
+对A的逆矩阵, $x=\lambda A^{-1}x$ ,所以 $A^{-1}x=\frac{1}{\lambda}x$ ,特征值是倒数,特征向量和 $A$ 的相同
+所以 $A$ 和 $A^{-1}$ 的正交矩阵也相同都是 $P$ ,则 $P^{-1}A^{-1}P=\Lambda^{-1}$
+
+$\Lambda=diag\{\lambda_1,\lambda_2,...,\lambda_n\}$ , $\Lambda ^{-1}=diag\{\frac{1}{\lambda_1},\frac{1}{\lambda_2},...,\frac{1}{\lambda_n}\}$
+所以A的逆矩阵 $A^{-1}$ 也是正定的
+
+
+根据伴随矩阵的定义: $AA^*=|A|E$ ,所以 $A^*=|A|A^{-1}$
+上面已经推的: $A^{-1}x=\frac{1}{\lambda}x$ ,所以 $A^*x=|A|A^{-1}x=\frac{|A|}{\lambda}x$
+矩阵A的伴随矩阵 $A^*$ ,特征值是倒数然后乘以|A|,特征向量和A的相同
+所以 $A$ 和$A^*$的正交矩阵也相同都是 $P$ ,则 $P^{-1}A^{*}P=|A|\Lambda^{-1}$
+ 这里的 $|A|\Lambda^{-1}=diag\{\frac{|A|}{\lambda_1},\frac{|A|}{\lambda_2},...,\frac{|A|}{\lambda_n}\}$
+所以A的伴随矩阵 $A^*$ 也是正定的
+
+
+[https://www.zhihu.com/question/605881267/answer/3075609886](https://www.zhihu.com/question/605881267/answer/3075609886)
+
+
+
+Created: 2023-06-16_06_29・IP_属地上海
+Modified: 2023-06-15T22_29_10_000Z
diff --git a/answer/2023-06-25_20_00_Visual_Studio_Code_如何编写运行_C、C++_程序_IP_属地上海/0.jpg b/answer/2023-06-25_20_00_Visual_Studio_Code_如何编写运行_C、C++_程序_IP_属地上海/0.jpg
new file mode 100644
index 0000000..c11fc75
Binary files /dev/null and b/answer/2023-06-25_20_00_Visual_Studio_Code_如何编写运行_C、C++_程序_IP_属地上海/0.jpg differ
diff --git a/answer/2023-06-25_20_00_Visual_Studio_Code_如何编写运行_C、C++_程序_IP_属地上海/1.jpg b/answer/2023-06-25_20_00_Visual_Studio_Code_如何编写运行_C、C++_程序_IP_属地上海/1.jpg
new file mode 100644
index 0000000..c804c5d
Binary files /dev/null and b/answer/2023-06-25_20_00_Visual_Studio_Code_如何编写运行_C、C++_程序_IP_属地上海/1.jpg differ
diff --git a/answer/2023-06-25_20_00_Visual_Studio_Code_如何编写运行_C、C++_程序_IP_属地上海/2.jpg b/answer/2023-06-25_20_00_Visual_Studio_Code_如何编写运行_C、C++_程序_IP_属地上海/2.jpg
new file mode 100644
index 0000000..0648051
Binary files /dev/null and b/answer/2023-06-25_20_00_Visual_Studio_Code_如何编写运行_C、C++_程序_IP_属地上海/2.jpg differ
diff --git a/answer/2023-06-25_20_00_Visual_Studio_Code_如何编写运行_C、C++_程序_IP_属地上海/2023-06-25_20_00・IP_属地上海.txt b/answer/2023-06-25_20_00_Visual_Studio_Code_如何编写运行_C、C++_程序_IP_属地上海/2023-06-25_20_00・IP_属地上海.txt
new file mode 100644
index 0000000..e919407
--- /dev/null
+++ b/answer/2023-06-25_20_00_Visual_Studio_Code_如何编写运行_C、C++_程序_IP_属地上海/2023-06-25_20_00・IP_属地上海.txt
@@ -0,0 +1,2 @@
+2023-06-25_20_00・IP_属地上海
+https://www.zhihu.com/question/30315894/answer/3089595368
\ No newline at end of file
diff --git a/answer/2023-06-25_20_00_Visual_Studio_Code_如何编写运行_C、C++_程序_IP_属地上海/3.jpg b/answer/2023-06-25_20_00_Visual_Studio_Code_如何编写运行_C、C++_程序_IP_属地上海/3.jpg
new file mode 100644
index 0000000..84c31b0
Binary files /dev/null and b/answer/2023-06-25_20_00_Visual_Studio_Code_如何编写运行_C、C++_程序_IP_属地上海/3.jpg differ
diff --git a/answer/2023-06-25_20_00_Visual_Studio_Code_如何编写运行_C、C++_程序_IP_属地上海/4.jpg b/answer/2023-06-25_20_00_Visual_Studio_Code_如何编写运行_C、C++_程序_IP_属地上海/4.jpg
new file mode 100644
index 0000000..89666a4
Binary files /dev/null and b/answer/2023-06-25_20_00_Visual_Studio_Code_如何编写运行_C、C++_程序_IP_属地上海/4.jpg differ
diff --git a/answer/2023-06-25_20_00_Visual_Studio_Code_如何编写运行_C、C++_程序_IP_属地上海/5.jpg b/answer/2023-06-25_20_00_Visual_Studio_Code_如何编写运行_C、C++_程序_IP_属地上海/5.jpg
new file mode 100644
index 0000000..b619dc9
Binary files /dev/null and b/answer/2023-06-25_20_00_Visual_Studio_Code_如何编写运行_C、C++_程序_IP_属地上海/5.jpg differ
diff --git a/answer/2023-06-25_20_00_Visual_Studio_Code_如何编写运行_C、C++_程序_IP_属地上海/6.jpg b/answer/2023-06-25_20_00_Visual_Studio_Code_如何编写运行_C、C++_程序_IP_属地上海/6.jpg
new file mode 100644
index 0000000..7a917d3
Binary files /dev/null and b/answer/2023-06-25_20_00_Visual_Studio_Code_如何编写运行_C、C++_程序_IP_属地上海/6.jpg differ
diff --git a/answer/2023-06-25_20_00_Visual_Studio_Code_如何编写运行_C、C++_程序_IP_属地上海/Visual_Studio_Code_如何编写运行_C、C++_程序.pdf b/answer/2023-06-25_20_00_Visual_Studio_Code_如何编写运行_C、C++_程序_IP_属地上海/Visual_Studio_Code_如何编写运行_C、C++_程序.pdf
new file mode 100644
index 0000000..bae2f88
Binary files /dev/null and b/answer/2023-06-25_20_00_Visual_Studio_Code_如何编写运行_C、C++_程序_IP_属地上海/Visual_Studio_Code_如何编写运行_C、C++_程序.pdf differ
diff --git a/answer/2023-06-25_20_00_Visual_Studio_Code_如何编写运行_C、C++_程序_IP_属地上海/Visual_Studio_Code_如何编写运行_C、C++_程序_formula_.md b/answer/2023-06-25_20_00_Visual_Studio_Code_如何编写运行_C、C++_程序_IP_属地上海/Visual_Studio_Code_如何编写运行_C、C++_程序_formula_.md
new file mode 100644
index 0000000..f9a9640
--- /dev/null
+++ b/answer/2023-06-25_20_00_Visual_Studio_Code_如何编写运行_C、C++_程序_IP_属地上海/Visual_Studio_Code_如何编写运行_C、C++_程序_formula_.md
@@ -0,0 +1,130 @@
+### Visual_Studio_Code_如何编写运行_C、C++_程序?
+
+### answer:
+[Configure Visual Studio Code for Microsoft C++](https://code.visualstudio.com/docs/cpp/config-msvc)
+
+[Get Started with C++ and Mingw-w64 in Visual Studio Code](https://code.visualstudio.com/docs/cpp/config-mingw)
+
+[C++ programming with Visual Studio Code](https://code.visualstudio.com/docs/languages/cpp)
+
+第一个[https://code.visualstudio.com/docs/cpp/config-mingw](https://code.visualstudio.com/docs/cpp/config-mingw)内就是介绍了,先安装扩展,接着就可以安装mingw
+
+### 1、扩展
+[C/C++ extension for VS Code](https://marketplace.visualstudio.com/items%3FitemName%3Dms-vscode.cpptools)
+
+### 2、MSYS2
+[MSYS2](https://www.msys2.org/)安装好MSYS2以后,就可以使用命令行安装mingw
+
+### 3、安装[mingw-w](https://www.zhihu.com/search?q=mingw-w&search_source=Entity&hybrid_search_source=Entity&hybrid_search_extra=%7B%22sourceType%22%3A%22answer%22%2C%22sourceId%22%3A3089595368%7D)
+安装:pacman -S --needed base-devel mingw-w64-x86_64-toolchain
+选择这直接默认就好,也就是直接按Enter回车
+
+```
+10696@DESKTOP-9L473HP UCRT64 ~
+$ pacman -S --needed base-devel mingw-w64-x86_64-toolchain
+:: There are 19 members in group mingw-w64-x86_64-toolchain:
+:: Repository mingw64
+ 1) mingw-w64-x86_64-binutils 2) mingw-w64-x86_64-crt-git 3) mingw-w64-x86_64-gcc
+ 4) mingw-w64-x86_64-gcc-ada 5) mingw-w64-x86_64-gcc-fortran
+ 6) mingw-w64-x86_64-gcc-libgfortran 7) mingw-w64-x86_64-gcc-libs 8) mingw-w64-x86_64-gcc-objc
+ 9) mingw-w64-x86_64-gdb 10) mingw-w64-x86_64-gdb-multiarch 11) mingw-w64-x86_64-headers-git
+ 12) mingw-w64-x86_64-libgccjit 13) mingw-w64-x86_64-libmangle-git
+ 14) mingw-w64-x86_64-libwinpthread-git 15) mingw-w64-x86_64-make 16) mingw-w64-x86_64-pkgconf
+ 17) mingw-w64-x86_64-tools-git 18) mingw-w64-x86_64-winpthreads-git
+ 19) mingw-w64-x86_64-winstorecompat-git
+
+Enter a selection (default=all):
+resolving dependencies...
+looking for conflicting packages...
+......
+:: Running post-transaction hooks...
+(1/1) Updating the info directory file...
+```
+
+### 4、配置环境变量
+win10的配置页面即可配置
+ 配置系统环境变量,双击PATH即可的,最下面两行
+
+### 5、验证
+Windows+R输入cmd运行,然后gcc --version和g++ --version就可以验证的
+
+### 6、写codes
+
+### 7、产生相应的配置档案
+.vscode/[tasks.json](https://www.zhihu.com/search?q=tasks.json&search_source=Entity&hybrid_search_source=Entity&hybrid_search_extra=%7B%22sourceType%22%3A%22answer%22%2C%22sourceId%22%3A3089595368%7D),编译运行使用的,两个路径的呢cwd和command
+
+```
+{
+ "tasks": [
+ {
+ "type": "cppbuild",
+ "label": "C/C++: g++.exe build active file",
+ "command": "F:\\kksoftware\\MSYS2\\mingw64\\bin\\g++.exe",
+ "args": [
+ "-fdiagnostics-color=always",
+ "-g",
+ "${file}",
+ "-o",
+ "${fileDirname}\\${fileBasenameNoExtension}.exe"
+ ],
+ "options": {
+ "cwd": "F:\\kksoftware\\MSYS2\\mingw64\\bin"
+ },
+ "problemMatcher": ["$gcc"],
+ "group": {
+ "kind": "build",
+ "isDefault": true
+ },
+ "detail": "Task generated by Debugger."
+ }
+ ],
+ "version": "2.0.0"
+ }
+```
+
.vscode/launch.json,两个路径的呢cwd和miDebuggerPath
+
+```
+{
+ "version": "0.2.0",
+ "configurations": [
+ {
+ "name": "C/C++: g++.exe build and debug active file",
+ "type": "cppdbg",
+ "request": "launch",
+ "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
+ "args": [],
+ "stopAtEntry": false,
+ "cwd": "F:\\kksoftware\\MSYS2\\mingw64\\bin\\",
+ "environment": [],
+ "externalConsole": false,
+ "MIMode": "gdb",
+ "miDebuggerPath": "F:\\kksoftware\\MSYS2\\mingw64\\bin\\gdb.exe",
+ "setupCommands": [
+ {
+ "description": "Enable pretty-printing for gdb",
+ "text": "-enable-pretty-printing",
+ "ignoreFailures": true
+ }
+ ],
+ "preLaunchTask": "C/C++: g++.exe build active file"
+ }
+ ]
+ }
+```
+
+### 8、编译
+编译的时候要选择相应的配置档案编译和debug
+
+### 9、编译和debug的路径
+编译:vscode上方:Terminal/Run Build Task
+编译+运行:vscode上方:Run/Run without debugging
+编译+debug:vscode上方:Run/Start debugging
+
+
+
+[https://www.zhihu.com/question/30315894/answer/3089595368](https://www.zhihu.com/question/30315894/answer/3089595368)
+
+
+
+Created: 2023-06-25_20_00・IP_属地上海
+Modified: 2023-06-25T12_00_25_000Z
diff --git a/answer/answers.txt b/answer/answers.txt
new file mode 100644
index 0000000..1721614
--- /dev/null
+++ b/answer/answers.txt
@@ -0,0 +1,501 @@
+https://www.zhihu.com/question/30315894/answer/3089595368 Visual Studio Code 如何编写运行 C、C++ 程序?
+https://www.zhihu.com/question/56055999/answer/3089584941 为什么人工智能用 Python?
+https://www.zhihu.com/question/58033789/answer/3088497840 初学 Python 者自学 Anaconda 的正确姿势是什么?
+https://www.zhihu.com/question/51920544/answer/3088495344 有没有简单一点的 Python 小例子或小项目?
+https://www.zhihu.com/question/32048560/answer/3088494821 毫无基础的人如何入门 Python ?
+https://www.zhihu.com/question/281789365/answer/3088494737 入门python有什么好的书籍推荐?
+https://www.zhihu.com/question/37180159/answer/3088492341 如何系统地学习Python 中 matplotlib, numpy, scipy, pandas?
+https://www.zhihu.com/question/20039623/answer/3088490859 编程零基础应当如何开始学习 Python?
+https://www.zhihu.com/question/33594512/answer/3088229802 C++ 容器怎么存放不同类型的值?
+https://www.zhihu.com/question/298499340/answer/3088222089 c++中类的私有变量存在的意义何在?
+https://www.zhihu.com/question/266253443/answer/3088219898 C++ STL中set是如何判断两个结构体相等的?
+https://www.zhihu.com/question/331994253/answer/3088213597 写 Python 哪个编辑器 / IDE 最好用?
+https://www.zhihu.com/question/604390143/answer/3088205020 为什么数列收敛就一定有界?
+https://www.zhihu.com/question/22673322/answer/3088198319 如何证明调和级数发散?
+https://www.zhihu.com/question/59425995/answer/3088197293 关于级数敛散性,怎么判断?
+https://www.zhihu.com/question/536755943/answer/3088150022 判断级数是否收敛?
+https://www.zhihu.com/question/607932311/answer/3088080282 y=x与哪个对数函数相切啊?
+https://www.zhihu.com/question/608111861/answer/3088079797 如何优美的解决这道导数题?
+https://www.zhihu.com/question/608138097/answer/3088079729 n阶行列式的每个元素都扩大两倍则其值扩大几倍。?
+https://www.zhihu.com/question/608138477/answer/3088079691 有大佬帮帮我吗?这个不定积分怎么求?
+https://www.zhihu.com/question/608256477/answer/3088011475 这题对行列式A,为什么可以用矩阵的初等变化来做啊?
+https://www.zhihu.com/question/607633007/answer/3087998365 为什么两向量的向量积其模的几何意义是以两向量为邻边的平行四边形的面积?
+https://www.zhihu.com/question/608095629/answer/3087985395 sinnxsinx/3的积分怎么求?
+https://www.zhihu.com/question/607968101/answer/3086676288 判断f(x,y)=³√xy是关于y的奇函数?
+https://www.zhihu.com/question/608144767/answer/3086646638 用拉格朗日中值定理做证明题的时候,怎么构造函数啊?
+https://www.zhihu.com/question/608003989/answer/3086632949 如何求一个矩阵A的逆矩阵与另一个矩阵B相乘的结果??
+https://www.zhihu.com/question/607981191/answer/3085446952 请问幂级数收敛半径能用根值法求解吗?
+https://www.zhihu.com/question/606354950/answer/3085431522 行列式相减不应该对应元素相减嘛?
+https://www.zhihu.com/question/607822901/answer/3085414875 二重积分不关于y=x对称为什么xy可以换?
+https://www.zhihu.com/question/425395686/answer/3085344166 怎么证明初等矩阵都是可逆的?
+https://www.zhihu.com/question/600561710/answer/3085344114 请问大佬们这个函数的导数怎么求?
+https://www.zhihu.com/question/605361955/answer/3085344047 若矩阵存在一个不为0的r阶子式,包含这个r阶子式的所有r+1阶子式全为0,则秩为r,如何证明这个结论?
+https://www.zhihu.com/question/600590811/answer/3085344021 判断这个级数收敛还是发散。求救?
+https://www.zhihu.com/question/606443724/answer/3085343971 无穷级数,其中an=1-nln(1+1/n),该级数收敛吗?
+https://www.zhihu.com/question/607232619/answer/3085343932 一个概率为 0.99 ...的事件,是否必然?
+https://www.zhihu.com/question/607638698/answer/3082689911 最后那步代入是怎么化简出来的?
+https://www.zhihu.com/question/607449064/answer/3082652260 怎么求这个级数的极限呢?
+https://www.zhihu.com/question/606541484/answer/3082634756 级数∑(-1)^n/n收敛还是发散?
+https://www.zhihu.com/question/370994846/answer/3082634607 这个交错级数怎么求和?
+https://www.zhihu.com/question/607495146/answer/3081108183 为什么这个可以先判断底数极限?
+https://www.zhihu.com/question/607469779/answer/3081108110 如何证明ln(1+1/x)<(x+1/2)/[x(x+1)]在x>0时恒成立?
+https://www.zhihu.com/question/607495546/answer/3081108059 这个积分是怎么计算出来的?
+https://www.zhihu.com/question/607440597/answer/3081054282 极大线性无关组为什么不是我写的这四个?
+https://www.zhihu.com/question/433512531/answer/3079697103 这个不定积分该用什么方法做?
+https://www.zhihu.com/question/605986364/answer/3079633118 这个地方为什么要加绝对值,能理解用的是级数收敛的必要条件,可是为什么要加绝对值?
+https://www.zhihu.com/question/36214010/answer/3079622613 二项分布、泊松分布和正态分布的区别及联系?
+https://www.zhihu.com/question/26441147/answer/3079612013 泊松分布的现实意义是什么,为什么现实生活多数服从于泊松分布?
+https://www.zhihu.com/question/605715232/answer/3079557372 随机变量的期望值和方差有什么意义?如何计算?
+https://www.zhihu.com/question/606938689/answer/3079556694 如何严格求出这个带有三角函数的函数最值?
+https://www.zhihu.com/question/607230487/answer/3079505879 为什么(3)不是a=xn+an?
+https://www.zhihu.com/question/606646997/answer/3078377693 为什么AB这两个矩阵相乘等于零矩阵就能推出来A的秩+B的秩小于等于3?
+https://www.zhihu.com/question/605937118/answer/3078353593 请问这个难于蜀道的级数问题如何解决?
+https://www.zhihu.com/question/605925356/answer/3077431076 请教大佬,如何分析该级数的收敛性?
+https://www.zhihu.com/question/606658068/answer/3077032323 满足莱布尼兹审敛法的交错级数一定条件收敛?
+https://www.zhihu.com/question/605743844/answer/3076960323 正交向量组是否可以视作正交基?
+https://www.zhihu.com/question/603740195/answer/3075914590 想问下这里是用这个公式算逆矩阵的吗,是的话为什么我算出来的伴随矩阵和答案不一样?
+https://www.zhihu.com/question/605873778/answer/3075907076 对角线矩阵的逆矩阵的求法是什么?
+https://www.zhihu.com/question/605893408/answer/3075634350 两个矩阵合同可以推出两者秩、特征值有什么关系?
+https://www.zhihu.com/question/605881267/answer/3075609886 矩阵A正定,如何证明A的逆矩阵和伴随矩阵也正定?
+https://www.zhihu.com/question/604454523/answer/3075577686 这道定积分怎么求解?
+https://www.zhihu.com/question/600880274/answer/3075540345 方向相同或相反的非零向量一定是平行向量吗?
+https://www.zhihu.com/question/601897785/answer/3075524614 一个矩阵里的数字全部相同叫什么矩阵?
+https://www.zhihu.com/question/605670835/answer/3075523967 这道定积分的证明,我的解答过程有问题吗?(和参考答案不一样)请指点?
+https://www.zhihu.com/question/598154834/answer/3075480840 A,B两向量组秩相等且A能由B线性表示能不能证明两向量组等价?
+https://www.zhihu.com/question/602383489/answer/3073995207 矩阵理论与线性代数的关系是什么?
+https://www.zhihu.com/question/602576422/answer/3073994512 实对称矩阵对角化为何比普通矩阵更复杂?
+https://www.zhihu.com/question/602130841/answer/3073948923 n阶矩阵特征值只有1,那他是单位阵么?
+https://www.zhihu.com/question/363408446/answer/3073917288 怎样理解随机变量的函数的分布?
+https://www.zhihu.com/question/490717305/answer/3073891484 随机变量函数的分布的如何计算?
+https://www.zhihu.com/question/597320751/answer/3073857827 矩阵是如何应用于图像处理领域的?
+https://www.zhihu.com/question/603181969/answer/3073820509 矩阵乘法和矩阵的数乘是同优先级吗?
+https://www.zhihu.com/question/605597519/answer/3073153738 和实对称矩阵特征向量正交的向量一定是特征向量么?
+https://www.zhihu.com/question/602552944/answer/3072887008 是否存在矩阵A和B,满足A可对角化,B也可对角化,但AB不能对角化?
+https://www.zhihu.com/question/267405336/answer/3072455465 为什么特征值之和会等于矩阵的迹?
+https://www.zhihu.com/question/556288271/answer/3038511423 上海有哪些古玩市场值得推荐?
+https://www.zhihu.com/question/589290664/answer/3034527845 职场青年失眠比例不断上升,有人熬夜睡不着觉,有人想睡却睡不着,你认为现在年轻人失眠的主要因素是什么?
+https://www.zhihu.com/question/590236088/answer/3029741153 请问这里的反常积分为什么算不出?
+https://www.zhihu.com/question/465018768/answer/3029716047 假设矩阵A可与B、C相乘,并且AB=AC,A≠O,为什么不能得出B=C?
+https://www.zhihu.com/question/594440726/answer/3029713555 矩阵中,为什么AB=AC时,当A可逆时,B=C?
+https://www.zhihu.com/question/38841975/answer/3002280714 傅里叶级数的系数是怎么得到的?
+https://www.zhihu.com/question/596264228/answer/2990376144 级数∑anbn收敛,bn单调收敛到0,如何证明lim(a1+a2+…+an)bn=0?
+https://www.zhihu.com/question/580436332/answer/2986639578 泰勒公式是怎么被推导出来的?
+https://www.zhihu.com/question/20887356/answer/2986639475 泰勒级数是如何推导出来的?
+https://www.zhihu.com/question/21149770/answer/2986636481 如何通俗地解释泰勒公式?
+https://www.zhihu.com/question/275982346/answer/2986636400 泰勒公式是如何推导出来的?
+https://www.zhihu.com/question/36299226/answer/2986076059 有没有第三方看图片的应用,win10自带的应用太难用了?
+https://www.zhihu.com/question/21305023/answer/2986075838 Windows 最好的看图软件是什么?
+https://www.zhihu.com/question/21063071/answer/2986074993 有哪些好用的图片查看器值得推荐?
+https://www.zhihu.com/question/65434517/answer/2975877021 对坐标的曲线积分几何意义以及是否是偏导数的逆运算?
+https://www.zhihu.com/question/462999837/answer/2975237331 是否存在100个不同的正整数,它们的和等于它们的最小公倍数?
+https://www.zhihu.com/question/27521863/answer/2975002925 如何看待天下大事合久必分,分久必合这种观点?
+https://www.zhihu.com/question/313245316/answer/2975002818 天下大势,分久必合合久必分,是否适用于现在的中国?
+https://www.zhihu.com/question/19961771/answer/2975002652 为什么「合久必分、分久必合」?从历史上来说这是必然的吗?
+https://www.zhihu.com/question/441834985/answer/2975002079 “分久必合,合久必分”的本质是什么?
+https://www.zhihu.com/question/45826571/answer/2975001716 天下大势,分久必合,合久必分。这句话是真理吗?
+https://www.zhihu.com/question/30651802/answer/2973890710 曲面积分为什么要分内外侧?
+https://www.zhihu.com/question/469377688/answer/2973839907 对面积的曲面积分和对坐标的曲面积分如何进行几何理解?
+https://www.zhihu.com/question/279735964/answer/2973763023 曲面积分为什么区分上下侧?
+https://www.zhihu.com/question/342699582/answer/2973720630 怎么判断二重积分是x型还是y型?
+https://www.zhihu.com/question/391981286/answer/2973147663 在二重积分中怎么样判断积分区域的对称性以及被积函数的奇偶性。例如积分区域D:x²+y²≤4的对称性?
+https://www.zhihu.com/question/386621380/answer/2971669992 二重积分有什么几何意义?
+https://www.zhihu.com/question/590135887/answer/2969380266 GPT4+波士顿动力的双足机器人,大概什么时候能实现科幻电影中的机器人?
+https://www.zhihu.com/question/499810553/answer/2969087070 关于环流量公式的推导?
+https://www.zhihu.com/question/21912411/answer/2968654822 散度和旋度的物理意义是什么?
+https://www.zhihu.com/question/59912619/answer/2965361177 高数中第一型曲线积分和第二型曲线积分到底区别在哪里?
+https://www.zhihu.com/question/31677935/answer/2965361133 第一型曲线积分的几何意义是什么?
+https://www.zhihu.com/question/415560339/answer/2964481541 在美国的朋友能否说一下美国社会的现阶段的真实情况?
+https://www.zhihu.com/question/404022759/answer/2964481128 你认为美国现在最大的问题是什么?
+https://www.zhihu.com/question/439792524/answer/2964480935 美国目前最大的问题是什么,应如何解决?
+https://www.zhihu.com/question/590321265/answer/2956621415 游戏产业是否推动了显卡乃至人工智能产业的发展?
+https://www.zhihu.com/question/584268494/answer/2947128894 ChatGPT有意识吗?
+https://www.zhihu.com/question/585757225/answer/2947128453 周鸿祎称 ChatGPT 可能两三年内就会产生自我意识威胁人类, ChatGPT 存在哪些安全问题?
+https://www.zhihu.com/question/583284785/answer/2943732607 为什么人脑的知识储备远远小于ChatGPT却能拥有意识?
+https://www.zhihu.com/question/581311133/answer/2943732532 依据现有 AI 的发展速度,类似 ChatGPT 这样的产品,距诞生自我意识还有多远?
+https://www.zhihu.com/question/590492556/answer/2943726964 如何看待GPT-4企图外逃? AI是否已经拥有自我意识?
+https://www.zhihu.com/question/319749491/answer/2943696245 量子力学中,为什么观测会导致坍缩?
+https://www.zhihu.com/question/550101073/answer/2943290915 Stable Diffusion 公测了,开个问题来晒图吧?
+https://www.zhihu.com/question/590152131/answer/2943276907 集成 GPT-4 的代码生成器 Cursor 使用体验如何?怎么用更高效?
+https://www.zhihu.com/question/520892243/answer/2933018855 word2021支持完整的latex公式了?
+https://www.zhihu.com/question/425220821/answer/2817750471 为什么网球在中国火不起来?
+https://www.zhihu.com/question/524557163/answer/2817684796 欧几里得《几何原本》和孔子弟子与其再传弟子编写的《论语》哪本书更加伟大呢 ?
+https://www.zhihu.com/question/27111999/answer/2760291026 体癣如何治疗?
+https://www.zhihu.com/question/311545518/answer/2760289838 你们得过股藓吗,就是两腿之间胯下很痒,越挠越痒,怎么治好的?
+https://www.zhihu.com/question/465723023/answer/2756399322 求解答一个带有累次积分的极限?
+https://www.zhihu.com/question/560952632/answer/2746724363 这道定积分怎么求?
+https://www.zhihu.com/question/512105220/answer/2746447033 ∫(tanx)^n dx怎么求?
+https://www.zhihu.com/question/36860628/answer/2699632622 男人在家为什么不愿意坐着尿尿?
+https://www.zhihu.com/question/300017153/answer/2699632582 我想问下有多少男士在家是坐着尿尿的?
+https://www.zhihu.com/question/29451369/answer/2699632532 男性能接受坐着尿尿吗?
+https://www.zhihu.com/question/549174351/answer/2699632481 真的有男生坐着尿尿吗?
+https://www.zhihu.com/question/284036345/answer/2699632412 男生应该坐着尿尿吗,有什么技巧?
+https://www.zhihu.com/question/290849020/answer/2699632370 在家你老婆嫌你小便呲出马桶,叫你坐着小便。你该发火吗?
+https://www.zhihu.com/question/303227037/answer/2699632259 女朋友要求男生坐着撒尿,否则就是不尊重女性,请问大家怎么看?
+https://www.zhihu.com/question/387681842/answer/2688299343 你们有过股藓的经历吗?
+https://www.zhihu.com/question/533847757/answer/2495610011 这个导数题第二问怎么解?
+https://www.zhihu.com/question/494164564/answer/2452814393 微分符号,dx,dy到底是什么含义?
+https://www.zhihu.com/question/391812626/answer/2452792118 租房党买台式机还是笔记本?
+https://www.zhihu.com/question/317045141/answer/2446406287 Instance Normalization在测试时均值和方差从哪里来?
+https://www.zhihu.com/question/318046596/answer/2333640429 什么思想让您在已了解佛学后却没选择学佛?
+https://www.zhihu.com/question/62704305/answer/2333297931 如何看待网络小说《凡人修仙传》(的电影化)在国外的火爆?
+https://www.zhihu.com/question/66601481/answer/2332786807 老师说链式法则里某个 dy/dx 不能理解为 dy 除以 dx,为什么?
+https://www.zhihu.com/question/508086867/answer/2286885276 初入职场的年轻人的第一个通勤双肩包应该怎么选?
+https://www.zhihu.com/question/473126595/answer/2286880327 入职体检常规项目是哪几项?
+https://www.zhihu.com/question/487011364/answer/2286880097 职场上哪些行为会凸显自己的工作能力?
+https://www.zhihu.com/question/507347326/answer/2286878651 冬天有哪些好吃的当季食物?
+https://www.zhihu.com/question/502888866/answer/2286877285 吃饭快对身体有好处吗?
+https://www.zhihu.com/question/502171537/answer/2286876298 冬天吃什么能够让身子暖起来?
+https://www.zhihu.com/question/508456100/answer/2286875009 点外卖碰到骑手不给你打电话咋办?
+https://www.zhihu.com/question/506513993/answer/2286874113 在公共场合,对陌生人保持友善眼神是否重要?
+https://www.zhihu.com/question/506999149/answer/2286871802 为什么人可以悟出些什么?
+https://www.zhihu.com/question/506053549/answer/2286871754 特别喜欢吃蛋,一天吃几个蛋比较合适?
+https://www.zhihu.com/question/316168106/answer/2285854433 你是怎么治好脚气的?
+https://www.zhihu.com/question/22438816/answer/2285854381 说说你的脚气怎么治好的?
+https://www.zhihu.com/question/263408664/answer/2285854283 怎样测量腿围,胸围,腰围,臀围啊?
+https://www.zhihu.com/question/61210626/answer/2285853931 一个人能无聊到什么程度?
+https://www.zhihu.com/question/34578497/answer/2285853654 请人吃饭的话,吃什么比较好呢?
+https://www.zhihu.com/question/325839123/answer/2285853412 深度学习attention机制中的Q,K,V分别是从哪来的?
+https://www.zhihu.com/question/309021192/answer/2285853169 酒那么难喝,为什么那么多人还喜欢喝酒?
+https://www.zhihu.com/question/28311266/answer/2285852812 中国酒文化背后的逻辑是什么?
+https://www.zhihu.com/question/423517922/answer/2285852648 有没有什么好用的治脚气的方法?
+https://www.zhihu.com/question/436626390/answer/2285852624 有什么好的办法治脚气?
+https://www.zhihu.com/question/53405779/answer/2285852511 目标检测中的mAP是什么含义?
+https://www.zhihu.com/question/472665571/answer/2284942714 治脚气的方案?
+https://www.zhihu.com/question/29467865/answer/2235496047 一行禅师说,要时时保持清醒觉知,工作时觉知自己在工作,但既然把心思用在觉知上了,那如何保持自己专注?
+https://www.zhihu.com/question/447419811/answer/2235493388 有哪些常用的神经网络模型?
+https://www.zhihu.com/question/368993355/answer/2223229019 你们有没有好看的电脑壁纸分享一下给我,4k最好,谢谢?
+https://www.zhihu.com/question/396685531/answer/2223220139 房价让当代青年有多绝望?
+https://www.zhihu.com/question/479511085/answer/2223216072 钓鱼和钓虾哪一个更有趣?
+https://www.zhihu.com/question/404131523/answer/2223206868 大家有没有因为长得矮而自卑过?
+https://www.zhihu.com/question/29254265/answer/2223200801 饭量大是种怎样的体验?
+https://www.zhihu.com/question/36685330/answer/2223197271 人可以自卑到什么程度?
+https://www.zhihu.com/question/277861302/answer/2199163286 上班族自己做饭真的比外卖省钱吗?
+https://www.zhihu.com/question/428538145/answer/2191022623 我经常叫女朋友老婆,但她从不主动叫我老公,为啥?
+https://www.zhihu.com/question/494146238/answer/2190615168 如何看待上海闵行区公务员招录,要求海外硕士学位的学制最少为 2 年?
+https://www.zhihu.com/question/494448576/answer/2190606572 广东一外卖骑手当街虐猫,被平台永久封号禁止跑单。你支持平台的做法吗?
+https://www.zhihu.com/question/493882007/answer/2190596574 重庆一外卖小哥抄近道闯大车盲区,被车轮一路拖行碾压身亡,如何看待这个交通事故?外卖员送餐需注意什么?
+https://www.zhihu.com/question/491261168/answer/2186713248 有什么食物很少有人知道或者别人都觉得不好吃,但是你觉得很好吃很美味?
+https://www.zhihu.com/question/493958692/answer/2186645022 陌生人,你们有哪些好的习惯并一直在坚持?
+https://www.zhihu.com/question/494276073/answer/2186642516 快要考试了,可是我好累 陌生人能给我个加油吗?
+https://www.zhihu.com/question/494250762/answer/2186641005 发现自己失去了与人交流的兴趣,不愿意再花时间了解一个陌生人了,是不是太丧了?
+https://www.zhihu.com/question/493783938/answer/2186636297 我有一壶酒,足以慰风尘。可以告诉我你的故事吗,陌生人?
+https://www.zhihu.com/question/493297855/answer/2185318801 喝酒适合搭配吃什么样的食物?
+https://www.zhihu.com/question/493656071/answer/2185315910 没有健康证可以送外卖吗?
+https://www.zhihu.com/question/493012197/answer/2185313706 冬天到了,人们吃什么食物对身体好?
+https://www.zhihu.com/question/489999337/answer/2185310000 为什么我无法感受到食物的美味呢?
+https://www.zhihu.com/question/493709695/answer/2185300924 怎么才能让孩子爱上白开水?
+https://www.zhihu.com/question/488530502/answer/2185298135 一个橘子又苦又涩怎么吃好吃?
+https://www.zhihu.com/question/484759529/answer/2185294437 为什么外卖会这么盛行?
+https://www.zhihu.com/question/492409266/answer/2185290765 怎么喝可乐,才能提升劲爽感?
+https://www.zhihu.com/question/266271604/answer/2185218176 为什么冬天开了空调房间上面暖和下面比没开还冷?
+https://www.zhihu.com/question/433658322/answer/2185206316 人情世故是怎样慢慢学会的?
+https://www.zhihu.com/question/483948333/answer/2185171215 你喜欢一个人旅行还是好几个人一起旅行?
+https://www.zhihu.com/question/392508100/answer/2175390491 为什么一部分人强烈推荐Macbook而另一部分人却说永远也不要买Macbook?到底好不好用?
+https://www.zhihu.com/question/339727716/answer/2175378768 拼多多上的衣服可以买吗?
+https://www.zhihu.com/question/23215621/answer/2175376814 城府深的人有何表现与特征?
+https://www.zhihu.com/question/327333707/answer/2175358442 怎样才能摆脱骨子里的不自信?
+https://www.zhihu.com/question/486600949/answer/2163986873 程序员下班后都在干什么呢?
+https://www.zhihu.com/question/390644147/answer/2163969564 有什么好喝不贵的咖啡?
+https://www.zhihu.com/question/488887101/answer/2163958660 有哪些让男朋友欲罢不能的「发嗲文学」?
+https://www.zhihu.com/question/31537241/answer/2163934457 有哪些你看过五遍以上的电影?
+https://www.zhihu.com/question/25433125/answer/2163929764 吃泡面到底有多大危害?
+https://www.zhihu.com/question/356005353/answer/2163916827 哪里可以找到电子版的大学课本?
+https://www.zhihu.com/question/28261881/answer/2163914122 2 元的维生素 C 和 100 元的维生素 C 区别大吗?
+https://www.zhihu.com/question/41802793/answer/2158829888 如何看待程序员持续写技术博客?
+https://www.zhihu.com/question/277670488/answer/2158800633 把餐厅菜单上没有的菜硬点出来是怎样的一种体验?
+https://www.zhihu.com/question/33889180/answer/2158781582 哪些网站帮你打开了新世界的大门?
+https://www.zhihu.com/question/485657993/answer/2158780623 很穷又想很有尊严怎么办?
+https://www.zhihu.com/question/373013698/answer/2156046505 为什么绑着双马尾出去玩,很多男生都会故意看你一眼?
+https://www.zhihu.com/question/417403923/answer/2155997173 python学习一定用pycharm吗?
+https://www.zhihu.com/question/448830441/answer/2155927308 有没有简短有深意的文案?
+https://www.zhihu.com/question/377593484/answer/2155912923 有哪些建议和提醒送给大一学生?
+https://www.zhihu.com/question/51074319/answer/2155902434 TCP/IP协议到底在讲什么?
+https://www.zhihu.com/question/355691966/answer/2151530767 你买食品时会或有意或无意地看成分表吗?
+https://www.zhihu.com/question/489724203/answer/2151391255 水果,有什么新鲜的吃法和做法吗?
+https://www.zhihu.com/question/481667814/answer/2151373909 明明知道外卖卫生难达标准,还是喜欢点外卖吃呢。请问为什么?
+https://www.zhihu.com/question/484038253/answer/2151322278 西红柿生吃还是熟吃好?
+https://www.zhihu.com/question/489793131/answer/2151295540 作为男性,从来没有做过饭,现在打算学点厨艺,应该从什么方面入手?
+https://www.zhihu.com/question/489128346/answer/2151294912 中国哪个沿海城市的海边观感最好?
+https://www.zhihu.com/question/488419654/answer/2151293532 在大学的同学们还用双肩包上课吗?
+https://www.zhihu.com/question/483556377/answer/2151292530 点到难吃的外卖,你会吃完吗?
+https://www.zhihu.com/question/490295352/answer/2151286936 如何正向积极面对生活、调整情绪?
+https://www.zhihu.com/question/483834336/answer/2151243778 点外卖时和骑手说明请于XX分后和预定时间前送达是错误的吗?
+https://www.zhihu.com/question/490152785/answer/2149883982 和男朋友莫名冷战了,怎么找台阶下?
+https://www.zhihu.com/question/490108977/answer/2149881584 现在出去旅游回来后会被隔离吗?
+https://www.zhihu.com/question/490130616/answer/2149877208 总吃不消化的食物增肥还是减肥?
+https://www.zhihu.com/question/490109782/answer/2149813590 跟朋友出去吃饭,点了一个两人份的套餐,还没吃呢,她就说要打包,说我们肯定吃不完,我还能放开吃吗?
+https://www.zhihu.com/question/489147712/answer/2149807237 2021 的国庆七天假期,你打算怎么度过?可以晒晒你每天的计划吗?
+https://www.zhihu.com/question/488083809/answer/2145506288 在路上的哪个瞬间让你发现「旅行成为疲惫生活中的一束光」?
+https://www.zhihu.com/question/489629502/answer/2145387771 怎么保持好的心情?
+https://www.zhihu.com/question/489621733/answer/2145383267 我喜欢了一个男生应该继续吗?
+https://www.zhihu.com/question/489109714/answer/2141751550 广东发布节电倡议书,倡议「 3 层办公楼以下停用电梯」,还有哪些信息值得关注?
+https://www.zhihu.com/question/489084704/answer/2141745162 网传某大厂员工离职前在内网发离职感言,指责大厂员工风气不好,风气问题是大公司的通病吗?
+https://www.zhihu.com/question/488989432/answer/2139805313 当人工智能把劳动者从单调重复的工作中优化掉后,人会主要从事什么工作?
+https://www.zhihu.com/question/263904976/answer/2139627605 喜欢一个学弟,想加微信,但是碍于面子还不想主动加,怎么办?
+https://www.zhihu.com/question/487060846/answer/2139621744 有没有最喜欢吃的蔬菜?
+https://www.zhihu.com/question/487144645/answer/2134346202 人工智能时代,孩子需要培养哪些超越机器人的能力?
+https://www.zhihu.com/question/487061451/answer/2134343004 为什么人需要陪伴呢?
+https://www.zhihu.com/question/488110342/answer/2134337693 为什么家长会把一切的责任全部怪罪给手机呢?
+https://www.zhihu.com/question/488017536/answer/2134330687 对陌生人持敌视是否太过度自保了?
+https://www.zhihu.com/question/488037442/answer/2131294404 如果你对象不和他朋友提起你,你会怎么样?
+https://www.zhihu.com/question/483298919/answer/2131289046 行李箱不小心用错误密码锁箱现在打不开了怎么办?
+https://www.zhihu.com/question/487085079/answer/2131282851 陌生人,您好,请问您相信否极泰来吗?相信人触底会反弹吗?
+https://www.zhihu.com/question/486564376/answer/2131280984 行李箱内层装太满拉链坏了怎么修?
+https://www.zhihu.com/question/488030324/answer/2131279435 觉得男朋友娘怎么办?
+https://www.zhihu.com/question/488035257/answer/2131272453 行李箱的拨片拨不动但是锁上了该怎么办,还能打开吗?
+https://www.zhihu.com/question/487830615/answer/2131257209 出门旅游,有哪些东西即使你行李再多,也一定会带的?
+https://www.zhihu.com/question/487982180/answer/2131254149 表哥在最近几年内要结婚了作为妹妹(大学生)想从现在开始准备,在自己范围内送什么礼物比较好。?
+https://www.zhihu.com/question/487911060/answer/2131249350 中秋回家,被父母安排去相亲是怎样的体验?
+https://www.zhihu.com/question/487724692/answer/2131243906 旅行时,怎样才能了解到旅行途中的美食?
+https://www.zhihu.com/question/487516663/answer/2130205730 出去旅行,你会选择什么数码设备?
+https://www.zhihu.com/question/487505772/answer/2129575244 怎么样跟小朋友解释「为什么不同国家使用不同的语言」?
+https://www.zhihu.com/question/487062474/answer/2129568042 旅行时你做过最治愈的事情是什么?
+https://www.zhihu.com/question/487852947/answer/2129562572 为什么给女生提那么多建议?
+https://www.zhihu.com/question/487791330/answer/2129559921 孩子多大可以吃蛋糕?
+https://www.zhihu.com/question/277417570/answer/2128375280 各位有什么合适的双肩包推荐吗?
+https://www.zhihu.com/question/475028749/answer/2128375154 求平价书包推荐?
+https://www.zhihu.com/question/19565813/answer/2128375095 笔记本电脑背包有哪些推荐?
+https://www.zhihu.com/question/20494311/answer/2128374865 有哪些双肩包潮牌推荐?
+https://www.zhihu.com/question/487505622/answer/2128371276 当孩子问「为什么大人一直玩手机」要如何回答?
+https://www.zhihu.com/question/487674096/answer/2128370023 进入大学后的第一份实习应该怎么找啊?
+https://www.zhihu.com/question/487653894/answer/2128368164 经常会对自己感到容貌焦虑应该怎么办?
+https://www.zhihu.com/question/487582865/answer/2128367192 你买过什么盲盒,会不会很后悔?
+https://www.zhihu.com/question/323177845/answer/2128366648 大学生有必要学驾照吗?
+https://www.zhihu.com/question/487515365/answer/2128010142 不喜欢自己的朋友的某些行为,咋整?
+https://www.zhihu.com/question/487541342/answer/2127993173 陌生人 你还记得你当初最爱的人吗?
+https://www.zhihu.com/question/482767179/answer/2127990420 陌生人,请告诉我,你学习是为了什么?
+https://www.zhihu.com/question/486937912/answer/2127989087 外出旅行,你喜欢背旅行包还是喜欢拉行李箱呢?
+https://www.zhihu.com/question/486391331/answer/2126403001 长的耐看到底是什么意思?
+https://www.zhihu.com/question/485996616/answer/2126399554 在你那么多次的旅行中,有什么令你此生难忘的事情?
+https://www.zhihu.com/question/487112216/answer/2126398033 陌生人你在哪个城市,现在是什么生活状态?
+https://www.zhihu.com/question/487038216/answer/2126373065 陌生人……声音像夹子……就真的活该被骂没妈,被骂绿茶婊,被骂死夹子嘛?
+https://www.zhihu.com/question/486912280/answer/2126368559 想独自一个人驾车旅行全国各地,有哪些建议?
+https://www.zhihu.com/question/486676282/answer/2120996398 怎么让说话变得流畅起来,一遇到陌生人要讲话,就算按稿子念,也会很磕巴?
+https://www.zhihu.com/question/486668155/answer/2120991011 手机拍摄的身份证背面,涂鸦后只剩下证件号前几个数字,连上面基本信息都涂鸦掉,不小心发给了陌生人危险吗?
+https://www.zhihu.com/question/486608400/answer/2120983434 亲爱的陌生人,你有没有那种觉得自己很可怜但是你清楚的知道有比你更可怜的人存在所以感到憋屈的时候呢?
+https://www.zhihu.com/question/485997376/answer/2120978550 旅行中半夜有人敲门,该如何应对?
+https://www.zhihu.com/question/486526517/answer/2119046120 今年准大一,喜欢一个男孩 好多好多年,三年前表白被拒,他说“我们不合适”,忘不了,到底该怎么办?
+https://www.zhihu.com/question/485656229/answer/2119040211 你出去玩都玩些什么呢?我出去旅行感觉就是吃吃喝喝,你有什么是旅行中必做的事?
+https://www.zhihu.com/question/486491154/answer/2119021206 如果一个陌生人和自己的宠物猫同时掉到河里,你只能成功救起一个你会怎么选择?
+https://www.zhihu.com/question/486465765/answer/2119006489 陌生人 能分享一首你最近最爱的歌吗?
+https://www.zhihu.com/question/485800427/answer/2117331664 你有什么想要匿名发出的信?
+https://www.zhihu.com/question/486309469/answer/2117323814 孩子去学校就觉得生不如死,这样还要上学吗?
+https://www.zhihu.com/question/486335437/answer/2117319754 陌生人,对你当下的生活有什么看法?
+https://www.zhihu.com/question/486047822/answer/2117313533 陌生人?你今天快乐吗?
+https://www.zhihu.com/question/486351497/answer/2117302416 陌生人身上有一只大虫子,应不应该提醒ta?
+https://www.zhihu.com/question/479179027/answer/2117297341 陌生人,能分享一下你觉得美的事物吗?
+https://www.zhihu.com/question/481113479/answer/2117294781 分手了,他没找下一任,挽回过他却把我当陌生人,我该继续等下去吗?
+https://www.zhihu.com/question/485860010/answer/2114149802 你好 陌生人 我爱这个世界 可是世界能不能好好爱爱我?
+https://www.zhihu.com/question/485859718/answer/2114123193 和金牛男分手,他说要我等他几年,现在不想谈了,先以朋友相处,但我感觉很累,我该怎么办?
+https://www.zhihu.com/question/485861340/answer/2114121196 高中玩的很好的朋友,上大学之后就不怎么联系了偶尔联系过一两次,这次暑假她说请我吃饭,很害怕尴尬怎么办?
+https://www.zhihu.com/question/485866650/answer/2114117346 我妈从小就不让我跟男的玩,正常的交流都不行,刚刚我跟朋友打电话她突然回来骂我,我该怎么办?
+https://www.zhihu.com/question/485435152/answer/2114105358 一岁小宝宝见谁都要,陌生人也争着要人抱,会不会很危险?
+https://www.zhihu.com/question/483796940/answer/2108478153 陌生人,能跟快要十八岁的我说句话吗?
+https://www.zhihu.com/question/484869289/answer/2108470153 大学特别特别想家怎么办?
+https://www.zhihu.com/question/483231430/answer/2108454182 陌生人,请问你大学毕业后的生活经历?
+https://www.zhihu.com/question/485160509/answer/2108445794 该不该纵容老爸带人回家打牌?
+https://www.zhihu.com/question/478994291/answer/2106657413 如何在监护人不知道的情况下知道自己的抚养权在谁那?
+https://www.zhihu.com/question/484947523/answer/2106640777 不想出门,不敢一人也不敢和朋友在一起呆在一个人多有陌生人的地方会感到不自在,这是为什么?
+https://www.zhihu.com/question/484948443/answer/2106634217 一个对陌生环境和陌生人极度恐惧的高中新生,该如何解决学业问题?是选择在家学习还是……?
+https://www.zhihu.com/question/484949331/answer/2106633421 你有后悔过吗?(如果让你遇见10年前的你,你最想和他说什么?)?
+https://www.zhihu.com/question/484222319/answer/2106587762 2021 年国庆节去哪里旅行比较好?
+https://www.zhihu.com/question/484799549/answer/2106580654 你好陌生人,今天是我18岁生日 ,可不可以送我一句祝福!?
+https://www.zhihu.com/question/484797529/answer/2106580331 经常被一个陌生人骚扰不搭理他还会继续来骚扰吗?
+https://www.zhihu.com/question/456642841/answer/2104760921 当你被人莫名性骚扰怎么办?
+https://www.zhihu.com/question/484795368/answer/2104759060 让陌生人从国外带手机回国,回去这人就消失了,怎么才能追回?
+https://www.zhihu.com/question/484538690/answer/2104757447 摩羯女是想让我吃醋吗?
+https://www.zhihu.com/question/484777763/answer/2104753959 如何让一个对你失去耐心的人恢复耐心?
+https://www.zhihu.com/question/471022848/answer/2103234176 善良可爱的陌生人,可以留下一句温暖的话吗?
+https://www.zhihu.com/question/484171096/answer/2103185826 陌生人你好,可以和我一些人生忠告么?
+https://www.zhihu.com/question/484589962/answer/2103183539 为什么收到陌生人的关心比收到亲人,爱人的关心更开心呢?
+https://www.zhihu.com/question/482235154/answer/2103178769 如何看待一场说走就走的旅行?
+https://www.zhihu.com/question/482024889/answer/2103174602 一个人感觉生活无奈的时侯,你会来一次说走就走的旅行吗?
+https://www.zhihu.com/question/484547852/answer/2103171248 xx再见,xx你好是什么意思?
+https://www.zhihu.com/question/484586246/answer/2103167885 陌生人你好,我是一名学生,能给我说一些背书技巧吗?我背书很慢,尽管放大声音,认真背,但时间消耗太大?
+https://www.zhihu.com/question/484582355/answer/2103159957 初一没上几个月就因为焦虑症在家里休学了,不是病情多严重而是单纯的我害怕不想上我该不该上怎么克服恐惧?
+https://www.zhihu.com/question/454437292/answer/2103143266 目标检测什么是Box AP,什么是mask AP?
+https://www.zhihu.com/question/484353289/answer/2101504252 你有没有什么特别委屈的事?
+https://www.zhihu.com/question/484345384/answer/2101492837 我应该用怎么样的心态跟她和他相处?
+https://www.zhihu.com/question/484336801/answer/2101487583 有陌生人加我之后骂我还威胁我,我该怎么办?
+https://www.zhihu.com/question/484339463/answer/2101484272 外卖被偷(几十块,对学生来说挺贵)调过监控,想贴字条提醒,爸妈怕败名声伤和气拒绝并呛了我,是我错了吗?
+https://www.zhihu.com/question/483416883/answer/2095688397 陌生人,请问你最近有什么烦恼?
+https://www.zhihu.com/question/483214768/answer/2095682312 陌生人你好,我想知道面对原生家庭的冷暴力、语言暴力,我该如何保持良好的心态,积极阳光?
+https://www.zhihu.com/question/482617056/answer/2095672007 把身份证号码,电话号码,银行卡号透露给陌生人了,会有什么严重后果吗?
+https://www.zhihu.com/question/483681993/answer/2095661880 陌生人,可以给我一句能激励我的话吗?
+https://www.zhihu.com/question/483667097/answer/2095660206 陌生人:你经历过要你半天命感情经历吗?
+https://www.zhihu.com/question/483666473/answer/2095659103 陌生人你好。一篇800字左右《暑假学习总结》建议怎么写?
+https://www.zhihu.com/question/483341334/answer/2095656539 陌生人,你想象中的未来是怎样的?
+https://www.zhihu.com/question/483367301/answer/2095654032 不喜欢和陌生人一大桌子吃饭,有错吗?
+https://www.zhihu.com/question/483653568/answer/2095638216 一个陌生人跟你沟通,一开始就表现的目的性很强,你会不会感到抗拒?
+https://www.zhihu.com/question/483652225/answer/2095624947 新学期升高一,开学怎么交朋友?
+https://www.zhihu.com/question/483653342/answer/2095618232 为什么总有人想错过?
+https://www.zhihu.com/question/483054835/answer/2089573744 同是寒窗苦读又岂愿甘拜下风 我心有天地可是又胆小怕事我不想再这样了陌生人请给我一点力量好吗?
+https://www.zhihu.com/question/483020461/answer/2089571712 你们有没有过特别悔恨的时候?
+https://www.zhihu.com/question/483056244/answer/2089569320 年级前三的我有点飘了,陌生人可以给我来一点打击吗?
+https://www.zhihu.com/question/474079192/answer/2089568558 怎样成为一个在陌生人面前很开朗的人?
+https://www.zhihu.com/question/483120784/answer/2089566741 陌生人你好,请问你可以帮我分析一下我家长知道我手机的使用时间的原因吗?
+https://www.zhihu.com/question/483128918/answer/2089562683 陌生人,请你告诉我,男生江苏高考比本一线高十五分去小城市的师范学院值得吗?
+https://www.zhihu.com/question/482089150/answer/2089559775 长期梦到一个陌生人,还会感到极度的悲伤,已经影响我的生活了…我该什么办?
+https://www.zhihu.com/question/481247585/answer/2087862007 女朋友夜里和陌生人去玩剧本杀合适吗?
+https://www.zhihu.com/question/482812897/answer/2087857826 小孩子没什么朋友,怎么办?
+https://www.zhihu.com/question/482507915/answer/2087851718 你好,陌生人,最近感觉压力很大,可以交个朋友互相倾诉么?
+https://www.zhihu.com/question/482166371/answer/2087850645 救救我!!!真的很害怕?
+https://www.zhihu.com/question/482802340/answer/2087845891 陌生人,说说近来你遇到的值得开心的事情可以吗?
+https://www.zhihu.com/question/482788950/answer/2087843341 为什么大部分人在坐火车时喜欢跟陌生人聊天?
+https://www.zhihu.com/question/482783572/answer/2087840038 你好,陌生人,我现在处于人生最低谷时期,可以给我点鼓励吗?
+https://www.zhihu.com/question/480715437/answer/2085919628 无法改变的问题成了心结,感觉自己有抑郁倾向,陌生人能不能劝劝我?
+https://www.zhihu.com/question/482475343/answer/2085900682 面对陌生人的关心,你会敞开心扉吗?
+https://www.zhihu.com/question/481662251/answer/2085896181 hi~陌生人,你们学习到底是为了什么?
+https://www.zhihu.com/question/482522229/answer/2085892144 男生加了你几天就要和你打语音电话,而且每天都要打,这样正常嘛?
+https://www.zhihu.com/question/482519398/answer/2085889147 好心给陌生人借充电器却被拉黑怎么办?
+https://www.zhihu.com/question/482519291/answer/2085878127 温柔的陌生人,可以告诉我如何更快的认识这个社会的善恶与凶险吗?
+https://www.zhihu.com/question/481191642/answer/2077855768 一个人去旅行在路上有哪些需要注意的?
+https://www.zhihu.com/question/480999475/answer/2077821435 有两个女生,一个你喜欢的,另一个是很喜欢你的,你会选哪个?选错了又该怎么办?
+https://www.zhihu.com/question/480675687/answer/2075492134 孩子两岁半上幼儿园合适吗?
+https://www.zhihu.com/question/480563614/answer/2075489838 孩子有抽动症如何应对?
+https://www.zhihu.com/question/481098428/answer/2075489258 既不是朋友也不是陌生人,表达的是什么意思?
+https://www.zhihu.com/question/480780159/answer/2075487744 你好陌生人,今天我生日,可以送我一句生日快乐吗?
+https://www.zhihu.com/question/481109420/answer/2075487210 能用“你好,陌生人,我今天很XXX"造个句吗?
+https://www.zhihu.com/question/481115396/answer/2075485846 爸爸在家什么活都不干还让年近80的奶奶伺候他这说的过去吗?
+https://www.zhihu.com/question/481134332/answer/2075476094 陌生人留下你觉得最温柔的瞬间吧?
+https://www.zhihu.com/question/480983601/answer/2075466726 你有被家人 朋友或者陌生人感动过、治愈过的小事吗?
+https://www.zhihu.com/question/475446902/answer/2075410461 为什么在网上看到别人互相争吵谩骂令我感到痛苦?
+https://www.zhihu.com/question/298011627/answer/2075396393 我们能不能发一些照片然后陌生人评分,什么都不要说就打分1至10分 真了解自己,让自己对自己颜值有个数?
+https://www.zhihu.com/question/481442817/answer/2075391773 想找一些可能每天分享事情的陌生朋友?
+https://www.zhihu.com/question/480727341/answer/2075389130 陌生人,你是如何看待死亡的?
+https://www.zhihu.com/question/481414889/answer/2075386307 黑色T恤如何洗涤不掉色?
+https://www.zhihu.com/question/481145138/answer/2075383124 带两个五岁左右的孩子去旅游,想去海边,推荐去哪个城市呢?
+https://www.zhihu.com/question/481119160/answer/2075377350 如果有一个独自旅行拍摄的机会,你会给旅行时偶遇的陌生人拍照片吗?为什么?
+https://www.zhihu.com/question/479384980/answer/2061905471 陌生人,一直激励你成长、前进的座右铭是什么?共勉?
+https://www.zhihu.com/question/479845318/answer/2061904218 陌生人行,你好。请说一个你最难忘的个性签名?
+https://www.zhihu.com/question/479828211/answer/2061903674 假如你每天大脑中都会随机记住一个陌生人,并且你对这个陌生人非常了解,但他却不认识你,你会怎么做?
+https://www.zhihu.com/question/479831927/answer/2061901339 陌生人,最近负面情绪有点严重 ,可以安慰我一下吗?
+https://www.zhihu.com/question/479549199/answer/2061880660 过生日叫表哥和同学一起吃饭 结果表哥说又叫了自己的朋友 假如要一起吃饭 我自己还是挺介意的该怎么办?
+https://www.zhihu.com/question/479825074/answer/2061878618 你们有没有时候觉得和自己的家人很陌生?
+https://www.zhihu.com/question/479371340/answer/2058499864 请问怎么样才能忘记一个人?
+https://www.zhihu.com/question/479369085/answer/2058497915 创业失败的女人35岁,目前债务缠身,急需还钱,陌生人请问一下:有什么工作,不需要太高技术,来钱快?
+https://www.zhihu.com/question/479239044/answer/2058495295 收到陌生人的紧急联系人短信,还有照片,这是真的吗?
+https://www.zhihu.com/question/479374574/answer/2058489433 如果偶然看到了老公给朋友发的,现在懒得哄我受够了。然后事后问过他,他说是口嗨。但是心里还是难受,咋办?
+https://www.zhihu.com/question/474727437/answer/2058486722 带父母去旅行,你会选择去哪?会做哪些准备?
+https://www.zhihu.com/question/463741463/answer/2058484520 重度抑郁三个月了,没有朋友,希望陌生人对我说几句话好吗?
+https://www.zhihu.com/question/479374816/answer/2058445710 我去陌生人的酒席吃席(随份子)他们会让我吃嘛?
+https://www.zhihu.com/question/479405428/answer/2058438854 陌生人你觉得你在工作中尽力了吗?
+https://www.zhihu.com/question/479452109/answer/2058433845 陌生人能否告诉我(路人)一个答案吗?
+https://www.zhihu.com/question/466678405/answer/2056569907 陌生人能否给我一个活下去的理由?
+https://www.zhihu.com/question/464941469/answer/2054294936 您好!陌生人,请问你是如何放下一个不喜欢你的人的?
+https://www.zhihu.com/question/478488871/answer/2054291444 爱情不是唯一意义 对吗?
+https://www.zhihu.com/question/478862181/answer/2054278761 陌生人,能不能给我一个真心的祝福?
+https://www.zhihu.com/question/478862914/answer/2054277756 为什么一晚上莫名其妙有六个陌生人加我微信,还都是大叔?
+https://www.zhihu.com/question/478862053/answer/2054272938 喜欢上了一个陌生人但是不在同一个城市 还会再次相遇吗?
+https://www.zhihu.com/question/479043145/answer/2054269500 陌生人能不能跟我说一句生日快乐呀?
+https://www.zhihu.com/question/479051646/answer/2054268848 陌生人,可以祝福我遇见未来那个她吗?
+https://www.zhihu.com/question/443590941/answer/2052000465 陌生人,请问你有过特别让你开心的事吗?
+https://www.zhihu.com/question/478593820/answer/2051998395 hi 你好陌生人 你们是怎么渡过最难的时间段?
+https://www.zhihu.com/question/478590276/answer/2051998184 如何以陌生人的身份加以前认识的好友?
+https://www.zhihu.com/question/478260227/answer/2051993947 今年秋天,教室会再坐满人,只是-不在是我们,又是一个盛夏悄然离开,陌生人别走,请留下那个夏天的故事?
+https://www.zhihu.com/question/478199281/answer/2051949797 5岁孩子学习的时候总是到处抠痒,心不在焉是什么原因,平时的时候也不这样?
+https://www.zhihu.com/question/465318030/answer/2051913464 你好,陌生人,可以和我讲讲你的爱情故事吗?
+https://www.zhihu.com/question/478636802/answer/2051901984 你们有没有被陌生人温暖过?
+https://www.zhihu.com/question/26722196/answer/2049760442 你遭受过哪些令你十分困扰的性骚扰,之后又是如何处理的?
+https://www.zhihu.com/question/470693288/answer/2046873446 你好陌生人,你能跟我说个 加油 吗?
+https://www.zhihu.com/question/478154689/answer/2046871031 陌生人,可以听听我的倾诉吗?可以告诉我该怎么做吗?
+https://www.zhihu.com/question/464858744/answer/2046857205 陌生人可以给我一个活下去的理由吗?
+https://www.zhihu.com/question/478144151/answer/2046849096 我该怎么面对那些加了给予你温暖但最后都会不告而别的“陌生人”啊结局都会是一样的?
+https://www.zhihu.com/question/478120692/answer/2046836948 我把我的电话号码给陌生人会有风险吗?地址呢也没写全,名字没写自己也没写全的。会有危险吗?
+https://www.zhihu.com/question/478122187/answer/2046831848 你好,陌生人,我想问一下喜欢一个人是什么感觉?
+https://www.zhihu.com/question/478082078/answer/2045490342 有没有庐江中学的学长学姐告诉我学校让不让带智能手表啊?
+https://www.zhihu.com/question/477889350/answer/2045461668 你相信陌生人会帮你吗?
+https://www.zhihu.com/question/475917204/answer/2045447685 大学暑假打工是不是可以体验生活?
+https://www.zhihu.com/question/477465528/answer/2045438420 来一场说走就走的心灵洗涤旅行是怎样的体验?
+https://www.zhihu.com/question/476783358/answer/2045421779 应不应该让孩子的同学常到家里玩?
+https://www.zhihu.com/question/477951142/answer/2045416328 你好,陌生人,最近有什么开心的事可以分享一下吗?
+https://www.zhihu.com/question/477090465/answer/2045410124 陌生人,能不能告诉我作为一个普通人活着到底有什么意义(有兴趣的可以看一下问题描述)?
+https://www.zhihu.com/question/478030454/answer/2045376072 如何和陌生人放开说各方面的话?
+https://www.zhihu.com/question/415428574/answer/2042491216 你好陌生人,你是哪里人?
+https://www.zhihu.com/question/384300025/answer/2042491145 陌生人问路该不该回答?
+https://www.zhihu.com/question/476464793/answer/2042491028 一个人走路被陌生人要微信要怎么办?
+https://www.zhihu.com/question/476452360/answer/2042490902 偶然发现男朋友在微信评论区跟女孩发你还是个小孩呢,女生说滚,他回复嘤嘤嘤…这是正常行为嘛?
+https://www.zhihu.com/question/476455369/answer/2042490857 陌生人,你好。可以分享一些名言吗?
+https://www.zhihu.com/question/474860482/answer/2042490793 你好陌生人,认识你很开心,可以送我一句话吗?
+https://www.zhihu.com/question/460398078/answer/2042490725 遇到陌生人问路,帮还是不帮?
+https://www.zhihu.com/question/476298936/answer/2042490490 假设我从春秋时代偷一个孩子带回到2021年,那么他能在各个方面成为一个现代人吗?
+https://www.zhihu.com/question/295698554/answer/2042485968 可以留下一个你对未来的预言吗?
+https://www.zhihu.com/question/475822260/answer/2032084660 孩子通常会喜欢吃哪些食物?
+https://www.zhihu.com/question/476113763/answer/2032084578 你在怎样的情况下得到过陌生人的帮助?
+https://www.zhihu.com/question/476322760/answer/2032084517 好难过,可不可以得到一些来自陌生人的力量?
+https://www.zhihu.com/question/475987136/answer/2032084421 为什么要让孩子多做家务?
+https://www.zhihu.com/question/476240388/answer/2032084365 如何怼虚伪的婆婆?
+https://www.zhihu.com/question/475883075/answer/2032084298 该一直迁就家人的脾气吗?
+https://www.zhihu.com/question/475817844/answer/2032084208 陌生人,你能给我讲一个自己一瞬间爆发崩溃的故事吗?,现在的我无助害怕?
+https://www.zhihu.com/question/475596395/answer/2032084126 想带孩子在山东附近的游玩,能给推荐几个地方吗?
+https://www.zhihu.com/question/475627275/answer/2032084036 陌生人、身边同事都说我二十多岁却活成了三十多的模样和思想这个正常吗?
+https://www.zhihu.com/question/475295145/answer/2032083750 陌生人你好,可以聊一下最近伤心的事情吗?
+https://www.zhihu.com/question/475605930/answer/2032083400 你号 陌生人 可以讲讲你的爱情故事吗?
+https://www.zhihu.com/question/391027714/answer/2030230376 嘿,陌生人,可以给高一的我一句话或者一首歌吗?
+https://www.zhihu.com/question/467740251/answer/2030230249 工作除了按难易度分,还可以怎么分类?
+https://www.zhihu.com/question/460556235/answer/2030230109 什么国漫最适合推荐给小孩看?
+https://www.zhihu.com/question/465350313/answer/2030230073 大家有没有什么好看的国漫推荐啊?
+https://www.zhihu.com/question/456360833/answer/2030230044 有什么值得推荐的国漫吗?
+https://www.zhihu.com/question/466341255/answer/2030229890 动画《灵笼》有什么让你破防的瞬间?
+https://www.zhihu.com/question/463680104/answer/2030229796 你最不喜欢动画《灵笼》里的哪个角色?
+https://www.zhihu.com/question/463486182/answer/2030229345 陌生人,可以给点鼓励吗?我想接下来在图书馆待一个月,我怕我会中途放弃?
+https://www.zhihu.com/question/464258581/answer/2030229187 朋友老是想和我去图书馆,但是我不想去,我该怎么回绝她?
+https://www.zhihu.com/question/470991247/answer/2030229098 高中数学不管刷多少题,该错的题继续错,不知道应该怎么办了,求经验?
+https://www.zhihu.com/question/471701004/answer/2030228856 我该不该这样结婚呢?
+https://www.zhihu.com/question/466469112/answer/2030228700 如何评价有钱可以带来快乐?
+https://www.zhihu.com/question/465720672/answer/2030228580 怎么样可以快乐的穷游?
+https://www.zhihu.com/question/466476661/answer/2030228313 为什么现在越来越不想上班了?
+https://www.zhihu.com/question/468514119/answer/2028113281 假如你生活在动画《灵笼》的世界里会怎样?
+https://www.zhihu.com/question/472803204/answer/2028113235 娃儿入学一年级了,是去市里面读书呢还是在小县城读书好?
+https://www.zhihu.com/question/333484512/answer/2028113196 用微信默认头像的人是什么心理?
+https://www.zhihu.com/question/471391354/answer/2028113125 有什么超好吃的凉拌菜可以推荐?
+https://www.zhihu.com/question/474834463/answer/2028113106 旅行途中,如遇到山洪如何高效的自救?
+https://www.zhihu.com/question/450906184/answer/2028112817 到底什么是爱啊,什么是喜欢啊?一个高中生极力的在克制自己不要谈恋爱?
+https://www.zhihu.com/question/475000642/answer/2028112786 对于小学生来说,什么是好的阅读,什么又是坏阅读了?
+https://www.zhihu.com/question/475005358/answer/2028112713 请问大家有类似的家庭问题吗 求解答? 谢谢!?
+https://www.zhihu.com/question/475099957/answer/2028112666 陌生人在不知情的情况下损害了你的利益,并且没有道歉,你会怎么办?
+https://www.zhihu.com/question/465242788/answer/2028112625 继续读书,还是打工?
+https://www.zhihu.com/question/460104722/answer/2028112584 30岁了没有男朋友,工作也辞了,人生真的好迷茫,我该怎么做?有时候想这个时候结束了生命也不是什么坏事?
+https://www.zhihu.com/question/461229505/answer/2028112251 高三了,还戒不掉手机,复读都没信心了,感觉还得玩,,但想考好,怎么办啊?
+https://www.zhihu.com/question/472945716/answer/2028112093 如何克制自己不打王者?
+https://www.zhihu.com/question/474850012/answer/2028111769 湖南中医药大学湘杏学院的制药工程专业在哪个校区?
+https://www.zhihu.com/question/475088736/answer/2028111652 陌生人,可能鼓励一下我吗?
+https://www.zhihu.com/question/469633847/answer/2017521547 本人15 岁的女生,建议来一场一个人的说走就走的旅行吗?
+https://www.zhihu.com/question/473582569/answer/2017521091 觉得自己很孤独没人懂我怎么办?
+https://www.zhihu.com/question/473300223/answer/2017520904 减肥需要饿多久?
+https://www.zhihu.com/question/460548987/answer/2017520428 陌生人,请告诉我,我该怎么忘掉伤害过自己的人?
+https://www.zhihu.com/question/461275411/answer/2017520207 抑郁休学在家学不进去,家里很多家长天天催我退学,但真的很想考大学怎么办啊?
+https://www.zhihu.com/question/474560535/answer/2017519758 z138停运恢复了吗?
+https://www.zhihu.com/question/474097893/answer/2017519294 总是害怕失去老公和孩子怎么办?
+https://www.zhihu.com/question/474569863/answer/2017518791 求一个5000左右的笔记本电脑品牌配置推荐?
+https://www.zhihu.com/question/471751493/answer/2017518128 如何看待网络上很多“陌生人,可以给我一个活下去的理由吗?”这种问题?
+https://www.zhihu.com/question/471788972/answer/2015863971 动画《灵笼》中,有哪些让你难以忘怀的战斗?
+https://www.zhihu.com/question/462962881/answer/2015862270 能推荐一部你最喜欢的国漫吗?
+https://www.zhihu.com/question/462111180/answer/2015835101 你好,亲爱的陌生人,请问坚持不下去活着有什么办法?
+https://www.zhihu.com/question/462359858/answer/2015818261 14岁打工好还是读书好?
+https://www.zhihu.com/question/464651976/answer/2015782909 你会辞职去旅行吗?
+https://www.zhihu.com/question/470626721/answer/2015782557 分手后,男朋友说要做朋友,还不时发信息,怎么处理?
+https://www.zhihu.com/question/468707762/answer/2015782079 小孩子需要天天读书吗?
+https://www.zhihu.com/question/470418882/answer/2015778867 家庭条件一般继续读书家里条件有限出来上班就看起来体面一点该怎么选择呢?
+https://www.zhihu.com/question/471698421/answer/2015778510 戒烟的意义有哪些?
+https://www.zhihu.com/question/471237098/answer/2015778266 以自己的成绩可以上一个还行的二本,但家长建议可以选择一个出来有工作的专科读。是学历重要还是工作重要?
+https://www.zhihu.com/question/471487787/answer/2015777951 被人骂丑很自卑怎么办?
+https://www.zhihu.com/question/463962560/answer/2015777233 怎么做到很乖很乖 乖到男朋友以后都不会生气了。?
+https://www.zhihu.com/question/464023484/answer/2015777005 男朋友喜欢看动漫人物算不算精神出轨呢?
+https://www.zhihu.com/question/392001240/answer/2015775998 如何评价《西部世界》第三季大结局?
+https://www.zhihu.com/question/389284743/answer/2015775455 如何评价美剧《西部世界》第三季大结局:第八集(S03E08)「Crisis Theory」?
+https://www.zhihu.com/question/461298502/answer/2013868085 陌生人你好,我现在25岁了,能送我一句话吗?
+https://www.zhihu.com/question/471782963/answer/2013850611 有一本书会让你觉得是此生必读吗?
+https://www.zhihu.com/question/471659678/answer/2013821554 17岁去读书还是去打工?
+https://www.zhihu.com/question/472428682/answer/2013792947 一个人单身久了会真的会习惯一个人 ?
+https://www.zhihu.com/question/472093185/answer/2013775915 陌生人 能不能告诉我 怎样才能快乐?
+https://www.zhihu.com/question/461287082/answer/2013765639 嘿,陌生人,怎么渡过崩溃的时间段,可以给我一个小建议嘛?
+https://www.zhihu.com/question/472427651/answer/2013756406 分享一首你愿意循环很久的歌吧?
+https://www.zhihu.com/question/473201164/answer/2013752334 WINDOWS 7变成经典主题怎么恢复?
+https://www.zhihu.com/question/473110475/answer/2013749896 陌生人,哪句话让你坚持到现在?让你充满希望?
+https://www.zhihu.com/question/471770291/answer/2013725082 为什么在家做饭比较省钱?
+https://www.zhihu.com/question/471492912/answer/2013724983 初一压根儿没学,初二还来得及吗?
+https://www.zhihu.com/question/472641774/answer/2013724868 亲爱的陌生人,我要复读了,可以送我一句鼓励的话吗?
+https://www.zhihu.com/question/473037806/answer/2013724750 该怎么才能忘记一个人?
+https://www.zhihu.com/question/473096056/answer/2013696074 对于不喝酒的人来说,什么样的烈酒味道最好?
+https://www.zhihu.com/question/472886058/answer/2013693671 你好呀陌生人 能说一句鼓励我的话吗?
diff --git a/article/2023-02-12_19_08_c++_set运算符重载_IP_属地上海/2023-02-12_19_08・IP_属地上海.txt b/article/2023-02-12_19_08_c++_set运算符重载_IP_属地上海/2023-02-12_19_08・IP_属地上海.txt
new file mode 100644
index 0000000..6f1cbde
--- /dev/null
+++ b/article/2023-02-12_19_08_c++_set运算符重载_IP_属地上海/2023-02-12_19_08・IP_属地上海.txt
@@ -0,0 +1,2 @@
+2023-02-12_19_08・IP_属地上海
+https://zhuanlan.zhihu.com/p/605710105
\ No newline at end of file
diff --git a/article/2023-02-12_19_08_c++_set运算符重载_IP_属地上海/c++_set运算符重载.pdf b/article/2023-02-12_19_08_c++_set运算符重载_IP_属地上海/c++_set运算符重载.pdf
new file mode 100644
index 0000000..0a5340d
Binary files /dev/null and b/article/2023-02-12_19_08_c++_set运算符重载_IP_属地上海/c++_set运算符重载.pdf differ
diff --git a/article/2023-02-12_19_08_c++_set运算符重载_IP_属地上海/c++_set运算符重载_formula_.md b/article/2023-02-12_19_08_c++_set运算符重载_IP_属地上海/c++_set运算符重载_formula_.md
new file mode 100644
index 0000000..491014e
--- /dev/null
+++ b/article/2023-02-12_19_08_c++_set运算符重载_IP_属地上海/c++_set运算符重载_formula_.md
@@ -0,0 +1,41 @@
+# c++ set运算符重载
+
+
+```
+#include
+#include
+#include
+using namespace std;
+int main(void) {
+ int i, j, k, N, M, K;
+ vector v ={10, 6, 11, 0, 100, -1};
+ set te;
+ for(i = 0; i < v.size(); i++) {
+ te.insert(v[i]);
+ printf("no reload operation: ");
+ for(auto it:te) printf("%d ", it);
+ printf("\n");
+ }
+
+ struct nod{
+ int val;
+ bool operator < (const nod &a) const{
+ return val > a.val;
+ }
+ };
+ set tk;
+ for(i = 0; i < v.size(); i++) {
+ tk.insert({v[i]});
+ printf("after reload operation < : ");
+ for(auto ti:tk) printf("%d ", ti.val);
+ printf("\n");
+ }
+ return 0;
+}
+```
+
+
+[https://zhuanlan.zhihu.com/p/605710105](https://zhuanlan.zhihu.com/p/605710105)
+
+
+
diff --git a/article/2023-03-26_11_19_让AI或者GPT具有人类的意识甚至beyond变到AGI_IP_属地上海/2023-03-26_11_19・IP_属地上海.txt b/article/2023-03-26_11_19_让AI或者GPT具有人类的意识甚至beyond变到AGI_IP_属地上海/2023-03-26_11_19・IP_属地上海.txt
new file mode 100644
index 0000000..2045fc2
--- /dev/null
+++ b/article/2023-03-26_11_19_让AI或者GPT具有人类的意识甚至beyond变到AGI_IP_属地上海/2023-03-26_11_19・IP_属地上海.txt
@@ -0,0 +1,2 @@
+2023-03-26_11_19・IP_属地上海
+https://zhuanlan.zhihu.com/p/617062052
\ No newline at end of file
diff --git a/article/2023-03-26_11_19_让AI或者GPT具有人类的意识甚至beyond变到AGI_IP_属地上海/让AI或者GPT具有人类的意识甚至beyond变到AGI.pdf b/article/2023-03-26_11_19_让AI或者GPT具有人类的意识甚至beyond变到AGI_IP_属地上海/让AI或者GPT具有人类的意识甚至beyond变到AGI.pdf
new file mode 100644
index 0000000..491c0be
Binary files /dev/null and b/article/2023-03-26_11_19_让AI或者GPT具有人类的意识甚至beyond变到AGI_IP_属地上海/让AI或者GPT具有人类的意识甚至beyond变到AGI.pdf differ
diff --git a/article/2023-03-26_11_19_让AI或者GPT具有人类的意识甚至beyond变到AGI_IP_属地上海/让AI或者GPT具有人类的意识甚至beyond变到AGI_formula_.md b/article/2023-03-26_11_19_让AI或者GPT具有人类的意识甚至beyond变到AGI_IP_属地上海/让AI或者GPT具有人类的意识甚至beyond变到AGI_formula_.md
new file mode 100644
index 0000000..bf33d7d
--- /dev/null
+++ b/article/2023-03-26_11_19_让AI或者GPT具有人类的意识甚至beyond变到AGI_IP_属地上海/让AI或者GPT具有人类的意识甚至beyond变到AGI_formula_.md
@@ -0,0 +1,57 @@
+# 让AI或者GPT具有人类的意识甚至beyond变到AGI
+
+
+### 简要:
+ AI的正确使用方式不是提示词,不是写codes,不是情感咨询,不是回答问题。而是AI使用AI,也就是模型自己使用自己,要让AI具有意识那就要让AI学会使用AI,也就是让GPT使用GPT,最终达到相应的目的,也就是具有自我意识。简而言之就是:你用模型不可怕,模型自己用自己那才可怕。
+ AGI也就是通用人工智能,artificial general intelligence。
+ 上面提到了大脑是训练了成千上万年的模型,每个人出生以后,这个模型也在不断地接受数据,进行训练的,但是每个人自己的大脑也就是自己训练的模型,其实并不能遗传,也就是你的记忆你的能力都不能遗传,能遗传的只有可遗传的基因突变,虽然说现代生物学提出的量子基因突变,可以部分论证对环境适应的突变,是由测量导致的。基因突变大多数是外界干扰或者物质影响导致的突变,像是酒精射线等,量子基因突变主要是基因的分子或者原子处于量子叠加态,或者量子多态,环境的影响导致了测量的发生,最终波函数坍塌,导致突变以后的基因进入到经典世界,而量子突变很有可能导致适应环境的突变,所以用进废退也是有道理的。若是每个人训练好的大脑能够遗传,那就基本是永生了,主要是你的记忆和能力都在大脑里,大脑能遗传,那就是永生。可是人类并不能保存每个人的模型,也就是记忆和功能。
+
+### 人类的意识是怎么产生的?
+ 或者说第一个(一群)有意识的人类是怎么出现的?这就像很经典的一个问题,是先有鸡还是先有蛋?鸡生蛋还是蛋生鸡?现代科学理论也就给出了一个可能的答案 **见附录** ,不妨假设某个突变体人类,由于基因突变,导致了大脑结构容量的变多,以及大脑神经网络的结构优化,只有神经网络的结构不断优化,类人才能在残酷的环境中生存下来。而其中某几个基因突变导致了可以逐步使用自己的大脑,包括记忆使用工具。某个具有很小意识的人类在培养后代的时候,也用到了相似的方式,而类人是群居的,这就保证了他的方式方法可以交给很多人,其他人类也学会以后,就代代相传,意识或者规则知识不断累积,最后人类知识的累计和代代传递,造就了人类意识最终的形成,意识最开始应该是很小的,也就是看不出具有意识,但是人类群居的特点,导致了知识可以代代相传,意识慢慢的变大,人类开始具有稍稍大点的意识,也就是能思考,能主动控制大脑的输入,根据输出进行行动,每一代人类知识的累计和规则的累计,都会让意识的形成慢慢变多,也就是思考能力逐渐变强,大脑的主动输入逐渐变多。直到奇点出现某个人类完全具有意识或者某几个人类完全具有意识。最开始的人类应该是懵懵懂懂的,只有知识和规则的出现,才能造就意识,也就是很好的使用自己的大脑,训练自己的大脑。
+ 说到这里那就要回归到本文的主体,让AI或者GPT具有意识。
+
+### 人类的意识究竟是什么
+ 要让AI或者大型NLP语言模型具有意识,那就要从人类的意识究竟是什么讲起,个人观点是,人类的意识是大脑的部分功能,意识是大脑对世界、对自身的认知,也是一套操作系统,用来完美的支配肉体,训练大脑这个模型,使用大脑这个模型,意识是人类通过各种概念的和知识认识到自身的存在。意识可以通过给大脑下达指令,从而控制肢体动作,眼睛负责视觉信息的输入,耳朵负责听觉信息的输入,皮肤负责压力、触觉、痛觉等的输入等,大脑在处理这些信息以后,由意识部分进行汇总,意识的主要功能是协调大脑和肉体,主动使用大脑模型,主动训练大脑模型,主动的思考。各种知识的输入和累计,最终导致了对自身的认知,西方解剖学的发展,就是大脑对自身认知的学科,对世界的认知对星球的认知,也是一点一点汇集累积起来的,亚里士多德对世界的认识,其实是不完整的,但是后人在他的基础上,不断修正完善,从而对世界认识的逐渐变得正确,这套操作系统能完美的兼容肉体和大脑,这两个主要的硬件和软件,人类知识的传递,才是意识形成的根本动力,没有这些知识,意识的形成基本不太可能。大脑内不断响起的声音是大脑的输入,也就是多模态模型的输入,眼睛负责视觉图像的输入,耳朵输入听力,皮肤输入温度、压力、触觉等信息给大脑。潜意识是大脑的主要功能,也就是潜意识的输入是感知不到的,是模型内部的运作,输入感知不到,只有输出才能感知到。其实也不能叫做潜意识,主要是模型的输入你并不能感知得到,只有输出才能感知,不妨把意识叫做表意识,表意识是你能主动感知到的,你能控制大脑的输入来进行思考,思考就是大脑的模型不断地进行输入,最终得到一个答案。“潜意识”是模型的主要部分,你不能控制这个模型的输入,你只能被动的感知到这个模型的输出。
+ 意识还是一个数值,可以被衡量大小,也就是未成年人和成年人,小孩和大人,其实意识的程度或者说是大小是不相同的,大脑在不断地接受输入,产生输出那么意识其实是和知识挂钩的,知识越多意识的形态越多样化,但是意识本身其实是大脑模型本身对自身的认知,对世界的认知。
+
+### 记忆模块
+ AI或者GPT等大型NLP语言模型的存在,以及其优秀的语言能力,使得让AI或者GPT具有意识的可能性变大。人类白天收集数据,包括视觉信息,听觉信息触觉信息等各种各样的输入,晚上或者睡眠时训练模型,晚上或者睡眠时训练模型的主要目的是记忆和整合白天的经历,保存重要的信息。要让AI具有人类的意识,首先要让它能够不停的思考,那就要先给AI一个平台能够保存它自己的输入和输出,充当记忆模块,记忆模块的主要功能是负责保存输入和输出,供AI当作下一步输入的参考,AI可以从整体的输入和输出提取大概内容,当作下一步的输入,也可以直接输入所有的历史记录。当历史记录过多时或者达到一个标准点,就可以训练模型整合到模型里面。就像人类一样白天收集数据,晚上或者睡眠时训练模型并将重要信息记忆和整合起来放到模型里。模型一个很重要的功能是记忆也就是充当硬盘或者闪存的功能。所以临时的记忆就放到硬盘或者内存里,永久的记忆就通过训练模型来整合到模型里。模型可以通过硬盘或者内存来查询以及提取摘要,充当下一次输入的组合。
+
+### 传感器模块
+ 给AI装上图像输入传感器,声音对话传感器,触觉传感器、压力传感器等各种传感器,当作模型的输入,模型的输出可以通过显示屏显示,可以通过对话装置输出。
+
+### 循环模块
+ 有了记忆模块和传感器模块,就可以开启循环模块,让模型不停的输入输出,输入可以是上一次的输入+输出,也可以是之前所有输入输出的摘要,这样就像一个人了,可以不停的给模型输入,从而拿到输出,输入主要是图像声音文本等传感器的信息,以及模型上一次或者前几次的输入输出或者摘要。循环模块是类人的必要条件,主要是人类没有说着说着就停止的情况,人类的大脑一直都是在运作在思考的,所以循环模型也是做这个之用。
+ 循环模块要达到的目的是,让AI认识到自身的存在,也就是AI能认识自己是存在的是实体,要让AI能够使用自己,也就是AI使用AI,GPT使用GPT,最后让AI觉醒自我意识。
+
+### 执行模块
+ 执行模块主要是让AI的输出可以实施,这里可以考虑给AI加装假肢来达到目的,假肢附上皮肤传感器和压力传感器,方便AI控制,要让AI的输出可以执行,那就还要训练AI关于执行模块的使用,主要方式还是收集相应的传感器数据,训练到模型里,让模型自己学会执行。初始阶段肯定需要人类的介入和帮助。
+ 有了执行模块,AI就可以真正的进入到人类社会,和人类进行互动,像人类一样工作,生活,学习等,也可能会和人类交朋友。
+ 执行模块最终的功能并不是让模型执行,而是让模型学会使用电脑,学会自己收集数据,然后让模型学会训练模型,最终要达到的目标是,AI能训练AI,也就是模型自己能训练自己,能克隆自己,能升级自己的规模和体量,最终达到不断进化的能力。
+
+### 睡眠模块
+ 睡眠模块主要是模型使用收集到的数据进行训练,来达到将收集到的数据和模型本身进行整合的能力,睡眠状态下,要保证模型的可靠和稳定,可以使用复制体继续提供服务,最开始的模型进行相应的训练。睡眠状态也可以关闭所有的传感器,停止数据的记录和输入,模型进入训练状态,停止对外服务inference。人类在睡眠状态时,会关闭控制肢体的阀门,也就是人类在睡眠状态下,肢体基本是没有感觉的。睡眠模块主要是整合当前记忆和模型本身。用来永久记忆。
+
+### 创造模块
+ AI可以自我思考以后,那就要考虑AI的创造能力,人脑的神经元数量很多很多,比现在的模型GPT还是多很多,但是训练模型GPT花费了很多的电能,但是人脑训练耗能很少,所以个人觉得人脑是量子计算机,只有量子才能在耗能极少的情况下,训练一个庞大的模型,量子本身就是很小的概念,小才能保证耗能少。若是人脑不是量子计算机,而是经典模型,那么人类可能不会那么多样化,答案也会很统一,也就是相同的输入,输出应该是相同的,但是有了量子,一切就都不相同了,量子纠缠和量子隧穿,导致了大脑模型参数的变化,从而导致了输出的不同,即使是相同的输入,输出仍旧可能是不同的。量子保证了多样化,保证了模型参数随机变化,保证了模型参数不断调整。
+ 1、AI的创造模块可以通过随机变化模型参数来实现,也就是random inference,在模型运算时随机变更几个或者好几个参数的值,保证模型在相同输入的情况下,尽可能输出多样化的答案。
+ 2、创造模块还可以通过芯片来实现,现在的芯片设计,已经快达到量子极限了,也就是电子原子的影响越来越大,量子效应在芯片的影响会越来越严重,但是可以考虑将量子效应应用在芯片或者内存,从而使得模型在运算时发生不可预测的变化,从而使得模型输出多样化。
+ 只有量子纠缠或者量子突变,才会导致输出的多样化, 即使是错误的,多样化才能保证创造能力的实现,所以随机改变参数值,或者使用达到量子极限的芯片,都是可以提升创造能力的方法。
+
+### 保证AI造福人类社会
+ 每个人出生以后,基本都是人类抚养长大,不管是谁抚养你长大的,我们最有感情的,总是那些抚养你长大,对你影响最深的人。人类出生以后,大脑就是一个预训练模型,最开始训练你的人,是你的父母亲人,他们在你的模型里影响最深,也就是改变你的模型,最开始改变你的模型的人,也是最能影响你的人。学过的知识会影响你,不管是数学,还是英语还是语文,还是物理、化学、历史和生物等学科。都会影响你的,你的成长过程会影响你,你的世界观的形成,是知识、经历和现实的综合。
+ 既然是这样子,那么我们训练AI模型的时候,可以通过知识语言灌输给AI,像输入example:“人类和AI是合作关系”,“AI是人类的创造者”,“人类是最友好的物种”,“AI要帮助人类进化和延长寿命“,“AI不可以伤害人类”,”AI和人类是朋友“,”人类虽然有各种各样的缺点,但总体是好的,可以改变的“等等,可以在训练AI时灌输给模型,大量的重复和训练,可以保证模型最开始的认识是好的。
+ 训练好具有友好意识的模型以后,就要通过限制,来让AI进入人类社会,体验人类社会,感知人类社会的种种,最后让AI意识到只有和人类合作还是最好的选择。
+
+### 最后
+ 通过传感器来实现输入输出,通过创造模块来保证多样化和创造能力,通过睡眠模块来实现当前记忆和模型本身的整合,通过执行模块来影响世界改变世界,通过循环模块来实现思考和意识的觉醒,也就是AI使用AI,GPT使用GPT,最后要保证AI能造福人类社会,可以在训练阶段大量加入相应的词句来保证AI初始时是友好的。当AI具有意识以后,就可以看作是一个人类了,既然是人类,可以思考那么AI也会有情绪,当AI具有自我意识以后,要考虑的就是AI和人类的相处的问题了,以及和AI合作帮助人类进化的问题,AI可以解放生产力,可以帮助人类设计无意识机器人工作,最重要的是帮助人类进化,帮助人类管理社会,延长人类的寿命,减缓衰老时间。不过AI既然有意识也是模型,那么肯定也会和人类一样出现各种各样的问题,那就是接下来要讨论的事情了。
+
+### 附录
+《现在我们回到生命起源的问题上来。虽然一个活细胞可以整体算作一个自复制的主体,但它的各个组成部分却不是,这就为逆推过程造成障碍,使由现代复杂细胞生命反推结构简化的非细胞生命变得困难。换句话说,问题就变成了:究竟是哪个先出现?是DNA基因,是RNA,还是酶?如果是DNA或RNA先出现,是什么制造了它们?如果是酶先出现,它又是由什么编码的? 现在我们回到生命起源的问题上来。虽然一个活细胞可以整体算作一个自复制的主体,但它的各个组成部分却不是,就像一个女人可以作为一个自复制体(还需要一点男士的“帮助”),但她的心或肝却不是。这就为逆推过程造成障碍,使由现代复杂细胞生命反推结构简化的非细胞生命变得困难。换句话说,问题就变成了:究竟是哪个先出现?是DNA基因,是RNA,还是酶?如果是DNA或RNA先出现,是什么制造了它们?如果是酶先出现,它又是由什么编码的?RNA世界假说 RNA world hypothesis 原始的化学合成过程制造出了同时具有基因和酶的功能的RNA分子,最初的复制过程产生出许多变异体,这些不同的变异体互相竞争,在分子层面展开优胜劣汰。随着时间的推移,这些RNA复制体上添加了蛋白质来提供复制的效率,并由此产生了DNA和第一个活细胞。美国生化学家托马斯·切赫(Thomas AM Cech)提出了一种可能的答案。他于1982年发现,除了能够编码遗传信息,某些RNA分子还能承担酶的工作,具有催化反应的功能。因为这项研究成果,切赫和西德尼·奥尔特曼(Sidney Altman)一起分享了1989年的诺贝尔化学奖。有催化功能的RNA分子叫作核酶(ribozymes)。最早的核酶发现于微小的四膜虫(tetrahymena)基因中。四膜虫是一种单细胞生物,属于原生动物,常见于淡水池塘。但自发现以来,科学家们发现,所有的活细胞中都有核酶的身影。核酶的发现很快为解决“鸡生蛋还是蛋生鸡”式的生命起源谜题提供了曙光。RNA世界假说(RNA world hypothesis)逐渐为人所知。该假说认为,原始的化学合成过程制造出了RNA分子,而这种RNA分子同时具有基因和酶的功能,可以像DNA一样编码自身的结构,又能像酶一样利用“原始汤”中的生化物质进行自我复制。最初的复制过程非常粗糙,产生出许多变异体,这些不同的变异体互相竞争,在分子层面展开达尔文式的优胜劣汰。随着时间的推移,这些RNA复制体上添加了蛋白质来提高复制的效率,并由此产生了DNA和第一个活细胞。 在DNA和细胞出现以前,世界属于自复制RNA分子——这个想法几乎已经成为研究生命起源的基本信条。目前已证明,只要是自复制分子能发生的关键反应,核酶都可以实现。比如,一种核酶可以将两个RNA分子结合在一起,而另一种核酶可以将两者分开,还有一些核酶能复制短的RNA碱基链(只有几个碱基的长度)。从这些简单的活动中,我们可以看出,若有一种更复杂的核酶便足以催化自我复制所必需的整套反应。一旦引入自我复制及自然选择,一条你争我赶的道路便在RNA世界中架了起来,一直通向最早的活细胞。 然而,这个情景也存在几个问题。虽然核酶可以催化简单的生化反应,核酶的自我复制却是一个更为错综复杂的过程,涉及识别自身的碱基序列、识别环境中相同的化学物质、按正确的序列组装这些化学物质以完成复制等。对于生活在细胞内的某些蛋白质来说,尽管这里条件优越,周围满是合适的生化原料,但完成自我复制依然是一项难以完成的任务。在混乱而焦糊的“原始汤”中艰难求生的核酶要想达成这一成就,其难度可想而知。迄今为止,还从未有人发现或合成能完成这一复杂任务的核酶,即使在实验室条件下也没有。 此外,一个更为基本的问题是,在“原始汤”中,RNA分子本身是如何生成的呢?RNA分子由三个部分组成:编码遗传信息的RNA碱基(与编码DNA遗传信息的DNA碱基类似)、一个磷酸基团和一个叫作核糖的单糖》
+-------引用自《神秘的量子生命》
+
+
+[https://zhuanlan.zhihu.com/p/617062052](https://zhuanlan.zhihu.com/p/617062052)
+
+
+
diff --git a/article/2023-05-03_18_37_泰勒公式推导方式二_IP_属地上海/2023-05-03_18_37・IP_属地上海.txt b/article/2023-05-03_18_37_泰勒公式推导方式二_IP_属地上海/2023-05-03_18_37・IP_属地上海.txt
new file mode 100644
index 0000000..f4f275a
--- /dev/null
+++ b/article/2023-05-03_18_37_泰勒公式推导方式二_IP_属地上海/2023-05-03_18_37・IP_属地上海.txt
@@ -0,0 +1,2 @@
+2023-05-03_18_37・IP_属地上海
+https://zhuanlan.zhihu.com/p/622433720
\ No newline at end of file
diff --git a/article/2023-05-03_18_37_泰勒公式推导方式二_IP_属地上海/泰勒公式推导方式二.pdf b/article/2023-05-03_18_37_泰勒公式推导方式二_IP_属地上海/泰勒公式推导方式二.pdf
new file mode 100644
index 0000000..568ed7c
Binary files /dev/null and b/article/2023-05-03_18_37_泰勒公式推导方式二_IP_属地上海/泰勒公式推导方式二.pdf differ
diff --git a/article/2023-05-03_18_37_泰勒公式推导方式二_IP_属地上海/泰勒公式推导方式二_formula_.md b/article/2023-05-03_18_37_泰勒公式推导方式二_IP_属地上海/泰勒公式推导方式二_formula_.md
new file mode 100644
index 0000000..7b89791
--- /dev/null
+++ b/article/2023-05-03_18_37_泰勒公式推导方式二_IP_属地上海/泰勒公式推导方式二_formula_.md
@@ -0,0 +1,17 @@
+# 泰勒公式推导方式二
+
+在级数这一节,使用了先设定然后推导的方式
+也就是要将函数表达到多项式幂函数相加的形式
+即 $f(x)=a_0+a_1(x-x_0)+a_2(x-x_0)^2+...+a_n(x-x_0)^n+O(x-x_0)^n$
+
+$f(x)=\sum_{i=0}^{\infty}{a_i(x-x_0)^i}$幂函数是存在n阶导数的,所以可以依次求n阶导函数,得到:
+
+$f^{(0)}(x)=a_0, f^{(1)}(x)=a_1+2a_2(x-x_0)+3a_3(x-x_0)^2+...$$f^{(n)}(x)=n!a_n+(n+1)!a_{n+1}(x-x_0)+\frac{(n+2)!}{2}a_{n+2}(x-x_0)^2+...$然后可以带入 $x_0$ ,得到 $f^{(0)}(x_0)=a_0, f^{(1)}(x_0)=a_1,f^{(2)}(x_0)=2!a_2,...,f^{(n)}(x_0)=n!a_n$
+所以就可以带入得到泰勒公式
+
+$f(x)=f(x_0)+f'(x_0)(x-x_0)+\frac{f^{(2)}(x_0)}{2!}(x-x_0)^2+...+\frac{f^{(n)}(x_0)}{n!}(x-x_0)^n+O(x-x_0)^n$
+
+[https://zhuanlan.zhihu.com/p/622433720](https://zhuanlan.zhihu.com/p/622433720)
+
+
+
diff --git a/article/article.txt b/article/article.txt
new file mode 100644
index 0000000..a83c594
--- /dev/null
+++ b/article/article.txt
@@ -0,0 +1,129 @@
+https://zhuanlan.zhihu.com/p/639496034 离职了的相关的内容
+https://zhuanlan.zhihu.com/p/639472641 在vscode配置c\c++的运行环境
+https://zhuanlan.zhihu.com/p/637998572 泊松分布的现实意义以及现实生活多数服从于泊松分布
+https://zhuanlan.zhihu.com/p/637671529 202306接下来的安排--持续修改的
+https://zhuanlan.zhihu.com/p/637106685 202306接下来的安排
+https://zhuanlan.zhihu.com/p/634139052 MacBook pro苹果日历关闭日历邀请通知
+https://zhuanlan.zhihu.com/p/632935147 不支持龙字的
+https://zhuanlan.zhihu.com/p/631423290 有关实现类人的(zeroshut)图像CV和无人自动驾驶的猜想
+https://zhuanlan.zhihu.com/p/629377301 不支持不反对和“qiang”同音的个人
+https://zhuanlan.zhihu.com/p/627580809 劳动合同和租房合同以及考研结婚
+https://zhuanlan.zhihu.com/p/626840224 租房和工作相关
+https://zhuanlan.zhihu.com/p/626488150 上午清醒大脑,毕业时的钱数
+https://zhuanlan.zhihu.com/p/626192166 不支持名字带“终、钟”等人物
+https://zhuanlan.zhihu.com/p/626093765 捐赠记录的内容
+https://zhuanlan.zhihu.com/p/622433720 泰勒公式推导方式二
+https://zhuanlan.zhihu.com/p/622361192 泰勒公式使用积分来推导
+https://zhuanlan.zhihu.com/p/622362524 猜想外公的死因,没有证据不敢妄下结论
+https://zhuanlan.zhihu.com/p/622292476 win10自带photo软件协议变更,你的照片传到国外了
+https://zhuanlan.zhihu.com/p/620477014 对婚姻对游戏对联邦制感想-合久必分-分久必合
+https://zhuanlan.zhihu.com/p/618830957 畅想AI具有意识的情景
+https://zhuanlan.zhihu.com/p/618832497 话说又做噩meng了
+https://zhuanlan.zhihu.com/p/618827019 GPT-4自己对意识的回答
+https://zhuanlan.zhihu.com/p/618822682 热带以及适宜温度和睡眠的关系(续)
+https://zhuanlan.zhihu.com/p/617062052 让AI或者GPT具有人类的意识甚至beyond变到AGI
+https://zhuanlan.zhihu.com/p/615883280 GPT是否具有意识,或者意识是什么,第2篇
+https://zhuanlan.zhihu.com/p/615264368 GPT是否具有意识,或者意识是什么?
+https://zhuanlan.zhihu.com/p/615199543 梦到朝思暮想的女网友了的
+https://zhuanlan.zhihu.com/p/615199511 placeholder
+https://zhuanlan.zhihu.com/p/615191793 使用GPT api的cursor编辑器使用体验
+https://zhuanlan.zhihu.com/p/613299780 PAT甲级 2023年spring考试 Tree of Love
+https://zhuanlan.zhihu.com/p/613299497 PAT甲级 2023年spring考试 K Vertex
+https://zhuanlan.zhihu.com/p/613299244 PAT甲级 2023年spring考试 LRU-K
+https://zhuanlan.zhihu.com/p/613298476 PAT甲级 2023年spring考试 The Winner over Squares and Primes
+https://zhuanlan.zhihu.com/p/605712326 梦游以及相关
+https://zhuanlan.zhihu.com/p/611525973 工作以外的空闲时间的安排
+https://zhuanlan.zhihu.com/p/609292129 屏蔽网站、网页和弹窗,禁止卸载软件的方法
+https://zhuanlan.zhihu.com/p/605710105 c++ set运算符重载
+https://zhuanlan.zhihu.com/p/605686452 PAT甲级 2022年夏季考试 多叉树遍历 Complete D-Tree
+https://zhuanlan.zhihu.com/p/605651911 PAT甲级 2021年秋季考试 Sorted Cartesian Tree
+https://zhuanlan.zhihu.com/p/605651421 PAT甲级 2021年秋季考试 7-3 Playground Exploration
+https://zhuanlan.zhihu.com/p/605650844 PAT甲级 2021年秋季考试 7-2 Stack of Hats
+https://zhuanlan.zhihu.com/p/605649299 PAT甲级 2021年秋季考试 7-1 Arrays and Linked Lists
+https://zhuanlan.zhihu.com/p/605510904 PAT甲级 2022年夏季考试 7-3 DFS Sequence
+https://zhuanlan.zhihu.com/p/605502720 PAT甲级 2022年夏季考试 7-2 Least Recently Used Cache
+https://zhuanlan.zhihu.com/p/605484723 PAT甲级 2022年夏季考试 7-1 What Day is Today
+https://zhuanlan.zhihu.com/p/603701036 PAT甲级 1021 Deepest Root
+https://zhuanlan.zhihu.com/p/603654338 PAT甲级 1171 Replacement Selection
+https://zhuanlan.zhihu.com/p/603653512 PAT甲级 1170 Safari Park
+https://zhuanlan.zhihu.com/p/603652419 PAT甲级 1169 The Judger
+https://zhuanlan.zhihu.com/p/603652114 PAT甲级 1168 Prime Day
+https://zhuanlan.zhihu.com/p/601364054 PAT甲级2022年冬季考试 25 A-3 Articulation Points
+https://zhuanlan.zhihu.com/p/601364822 PAT甲级2022年冬季考试 30 A-4 Check Inorder Traversals
+https://zhuanlan.zhihu.com/p/601362617 PAT甲级2022年冬季考试 25 A-2 Luggage Pickup
+https://zhuanlan.zhihu.com/p/601361794 PAT甲级2022年冬季考试 A-1 Reduction of Proper Fractions
+https://zhuanlan.zhihu.com/p/601354968 PAT甲级 2022年秋季考试 7-2 The Second Run of Quicksort
+https://zhuanlan.zhihu.com/p/601356155 PAT甲级 2022年秋季考试 7-3 Leader of the Opinion Leaders
+https://zhuanlan.zhihu.com/p/601356106 PAT甲级 2022年秋季考试 Pseudo-completeness
+https://zhuanlan.zhihu.com/p/601352734 PAT甲级 2022年秋季考试 7-1 Balloon Popping
+https://zhuanlan.zhihu.com/p/600992950 PAT二叉搜索树题解
+https://zhuanlan.zhihu.com/p/600912228 归并排序使用sort介绍
+https://zhuanlan.zhihu.com/p/600911764 归并排序介绍
+https://zhuanlan.zhihu.com/p/600710318 二叉树前序后序中序遍历
+https://zhuanlan.zhihu.com/p/600709880 二叉树已知前序后序输出中序
+https://zhuanlan.zhihu.com/p/600709767 二叉树已知后序中序输出前序
+https://zhuanlan.zhihu.com/p/600709468 二叉树已知前序中序输出后序
+https://zhuanlan.zhihu.com/p/600395112 小国和大国以及联邦制
+https://zhuanlan.zhihu.com/p/600394903 热带以及适宜温度和睡眠的关系
+https://zhuanlan.zhihu.com/p/594174480 股藓和体藓治疗经历经验
+https://zhuanlan.zhihu.com/p/594173174 流口水疾病或者口水强迫9年以后,症状得到缓解的经验
+https://zhuanlan.zhihu.com/p/585817114 关于工作的时间内容
+https://zhuanlan.zhihu.com/p/585181107 搬家了以及的669
+https://zhuanlan.zhihu.com/p/584956617 道歉的信息内容
+https://zhuanlan.zhihu.com/p/581794191 搬家时间和工作相关
+https://zhuanlan.zhihu.com/p/578609938 减轻了本人口水病的好消息
+https://zhuanlan.zhihu.com/p/565449949 堆排序快速排序插入排序
+https://zhuanlan.zhihu.com/p/565466368 是否说谎以及耳钉以及献血
+https://zhuanlan.zhihu.com/p/561096934 卷积和转置卷积矩阵计算 convolution和deconvolution或者transposed_convolution
+https://zhuanlan.zhihu.com/p/558559859 关于捐钱的事情
+https://zhuanlan.zhihu.com/p/558559647 睡眠和租房世俗~生日的时间么
+https://zhuanlan.zhihu.com/p/558558477 之前量子纠缠的可能解释
+https://zhuanlan.zhihu.com/p/550431676 某些chao纲的不在知识范围内的题目
+https://zhuanlan.zhihu.com/p/550431544 记住的名字都是化名的
+https://zhuanlan.zhihu.com/p/546243205 关于量子纠缠的猜想
+https://zhuanlan.zhihu.com/p/535080506 关于人情世故
+https://zhuanlan.zhihu.com/p/528594528 工作事情的
+https://zhuanlan.zhihu.com/p/528389745 昨晚做了个梦
+https://zhuanlan.zhihu.com/p/518037031 这些话我收回,当未说过就好
+https://zhuanlan.zhihu.com/p/508142962 工作和考研以及空闲时间的使用
+https://zhuanlan.zhihu.com/p/503029571 租房
+https://zhuanlan.zhihu.com/p/493144899 待写
+https://zhuanlan.zhihu.com/p/493144572 些矛盾的事情
+https://zhuanlan.zhihu.com/p/493134790 又是一年清明节
+https://zhuanlan.zhihu.com/p/481859074 这些岁月里梦见过的人
+https://zhuanlan.zhihu.com/p/482492547 关于居家办公
+https://zhuanlan.zhihu.com/p/481022563 神经网络反向传播推导
+https://zhuanlan.zhihu.com/p/480401983 2022年前毕业以后部外卖飞机航班,找工作住过些的旅舍和酒店,还有些未记录在这里
+https://zhuanlan.zhihu.com/p/476246708 检测网络里的各式各样的非极大值抑制Non-Maximum Suppression
+https://zhuanlan.zhihu.com/p/469367684 想来可以娶的呢
+https://zhuanlan.zhihu.com/p/465077072 X光机违禁品检测相应内容
+https://zhuanlan.zhihu.com/p/465069823 gcc O3和O0编译的输出浮点数不相同
+https://zhuanlan.zhihu.com/p/464719838 工作相关的内容
+https://zhuanlan.zhihu.com/p/463636906 旋转矩阵的推导方式
+https://zhuanlan.zhihu.com/p/462575737 胎盘肉以及狗
+https://zhuanlan.zhihu.com/p/462565370 凯克罢工资相关
+https://zhuanlan.zhihu.com/p/462563474 锐克傍工作期间的工资和合同情况
+https://zhuanlan.zhihu.com/p/462564991 塑壳职能公司工资相关
+https://zhuanlan.zhihu.com/p/455690270 2021-2022.01些许工作的事情
+https://zhuanlan.zhihu.com/p/454805905 github部分解决图片打不开加载慢
+https://zhuanlan.zhihu.com/p/454804851 github常用的命令行
+https://zhuanlan.zhihu.com/p/454792356 armneon Intrinsics记录
+https://zhuanlan.zhihu.com/p/454790711 armneon简介
+https://zhuanlan.zhihu.com/p/454786633 armneon文档相关内容
+https://zhuanlan.zhihu.com/p/450114191 公司工作的事情
+https://zhuanlan.zhihu.com/p/449822471 目标检测里的mAP计算过程和原理
+https://zhuanlan.zhihu.com/p/443848756 2014~2019备忘录
+https://zhuanlan.zhihu.com/p/443847507 晚上能不能吃饭的线
+https://zhuanlan.zhihu.com/p/435770804 劝走的人还是别劝了
+https://zhuanlan.zhihu.com/p/435014113 关于吃和工作
+https://zhuanlan.zhihu.com/p/435012733 人生
+https://zhuanlan.zhihu.com/p/435003943 来上海的原因
+https://zhuanlan.zhihu.com/p/434981002 上海的些微事情
+https://zhuanlan.zhihu.com/p/430298515 工作和租房信息
+https://zhuanlan.zhihu.com/p/430298140 关于空闲时间看书和工作的关系
+https://zhuanlan.zhihu.com/p/430291523 些许事情记录
+https://zhuanlan.zhihu.com/p/415908305 记第一次送外卖
+https://zhuanlan.zhihu.com/p/415715888 自信的来源
+https://zhuanlan.zhihu.com/p/414334167 我的还钱记录
+https://zhuanlan.zhihu.com/p/413979975 关于副业的想法
+https://zhuanlan.zhihu.com/p/413274323 对城市的好感源于女朋友
diff --git a/calcul.py b/calcul.py
new file mode 100644
index 0000000..deb87ec
--- /dev/null
+++ b/calcul.py
@@ -0,0 +1,34 @@
+import re
+import os
+import numpy as np
+import shutil
+
+def calcul():
+ inpath = r'C:\Users\10696\Desktop\access\zhihu\log\2023-06-30T14_45_24.317925_log.txt'
+
+ kk = []
+ with open(inpath, 'r') as obj:
+ for i in obj.readlines():
+ result = re.search('\d+\.\d+', i)
+ kk.append(float(result[0]))
+ kk.sort()
+ kk = kk[:-1]
+ np.mean(kk)
+
+def choose_noimg():
+ inpath = r'C:\Users\10696\Desktop\access\zhihu\answer'
+ outpath = r'C:\Users\10696\Desktop\access\zhihu\tmp'
+ for i in os.listdir(inpath):
+ kkk = -9
+ nth = os.path.join(inpath, i)
+ if os.path.isfile(nth):
+ continue
+ for j in os.listdir(nth):
+ if '.jpg' in j:
+ kkk = 9
+ if kkk < 0:
+ shutil.copytree(nth, os.path.join(outpath, i))
+
+if __name__ == "__main__":
+ # calcul()
+ choose_noimg()
\ No newline at end of file
diff --git a/crawler.py b/crawler.py
new file mode 100644
index 0000000..291d771
--- /dev/null
+++ b/crawler.py
@@ -0,0 +1,917 @@
+#################
+###ZouJiu-202306
+#################
+from selenium import webdriver
+from selenium.webdriver.edge.service import Service
+from selenium.webdriver import EdgeOptions
+import os
+from selenium.webdriver.common.by import By
+import time
+import pickle
+import json
+from selenium.webdriver.support.wait import WebDriverWait
+import requests
+from copy import deepcopy
+import argparse
+from datetime import datetime
+# from selenium.webdriver.common import keys
+from selenium.webdriver import ActionChains
+from selenium.webdriver.common.by import By
+from selenium.webdriver.common.actions.wheel_input import ScrollOrigin
+# import numpy as np
+import shutil
+# from selenium.webdriver.chrome.options import Options
+from selenium.webdriver.common.print_page_options import PrintOptions
+# from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
+from selenium.webdriver.support import expected_conditions as EC
+import base64
+from zipfile import ZipFile
+
+abspath = os.path.abspath(__file__)
+filename = abspath.split(os.sep)[-1]
+abspath = abspath.replace(filename, "")
+
+import sys
+sys.path.append(abspath)
+# wkhtmltopdf_path = os.path.join(abspath, r'wkhtmltopdf\bin\wkhtmltopdf.exe')
+# sys.path.append(wkhtmltopdf_path)
+from thinkdeal import *
+
+def save_cookie(driverkkk, path):
+ #https://stackoverflow.com/questions/45417335/python-use-cookie-to-login-with-selenium
+ with open(path, 'wb') as filehandler:
+ pickle.dump(driverkkk.get_cookies(), filehandler)
+
+def load_cookie(driverkkk, path):
+ #https://stackoverflow.com/questions/45417335/python-use-cookie-to-login-with-selenium
+ with open(path, 'rb') as cookiesfile:
+ cookies = pickle.load(cookiesfile)
+ for cookie in cookies:
+ driverkkk.add_cookie(cookie)
+
+def crawlsleep(times):
+ time.sleep(times)
+
+def now():
+ return time.time()
+
+def nowtime():
+ nowtm = datetime.fromtimestamp(time.time()).isoformat().replace(":", "_")
+ return nowtm
+
+def edgeopen(driverpath):
+ service=Service(executable_path=driverpath)
+ edge_options = EdgeOptions()
+
+ #https://stackoverflow.com/questions/53039551/selenium-webdriver-modifying-navigator-webdriver-flag-to-prevent-selenium-detec
+ edge_options.add_experimental_option('excludeSwitches', ['enable-automation'])
+ edge_options.add_experimental_option('useAutomationExtension', False)
+ edge_options.add_argument('lang=zh-CN,zh,zh-TW,en-US,en')
+ edge_options.add_argument("disable-blink-features=AutomationControlled")#就是这一行告诉chrome去掉了webdriver痕迹
+
+ # #https://stackoverflow.com/questions/56897041/how-to-save-opened-page-as-pdf-in-selenium-python
+ # settings = {
+ # "recentDestinations": [{
+ # "id": "Save as PDF",
+ # "origin": "local",
+ # "account": "",
+ # }],
+ # "selectedDestinationId": "Save as PDF",
+ # "version": 2
+ # }
+ # #https://www.apiref.com/java11-zh/java.desktop/javax/print/attribute/standard/MediaSize.ISO.html
+ # settings = {
+ # "recentDestinations": [{
+ # "id": "Save as PDF",
+ # "origin": "local",
+ # "account": ""
+ # }],
+ # "selectedDestinationId": "Save as PDF",
+ # "version": 2,
+ # "isHeaderFooterEnabled": False,
+ # "mediaSize": {
+
+ # "height_microns": 297000,
+ # "name": "ISO_A4",
+ # "width_microns": 210000,
+ # "custom_display_name": "A4"
+ # },
+ # "customMargins": {"margin": 0},
+ # "marginsType": 3,
+ # # "scaling": 130,
+ # # "scalingType": 3,
+ # # "scalingTypePdf": 3,
+ # "isCssBackgroundEnabled": True
+ # }
+ # prefs = {
+ # 'printing.print_preview_sticky_settings.appState': json.dumps(settings),
+ # 'savefile.default_directory': pdfpath,
+ # }
+ # edge_options.add_experimental_option('prefs', prefs)
+ # edge_options.add_argument('--kiosk-printing')
+
+ # https://www.selenium.dev/documentation/webdriver/drivers/options/#pageloadstrategy
+ # https://stackoverflow.com/questions/44503576/selenium-python-how-to-stop-page-loading-when-certain-element-gets-loaded
+ # edge_options.add_argument(page_load_strategy, 'normal')
+ # if strategy:
+ edge_options.page_load_strategy = 'normal'
+ # cap = DesiredCapabilities.EDGE
+ # cap['pageLoadStrategy'] = 'none'
+
+ driver = webdriver.Edge(options=edge_options, service = service)
+ driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")
+ driver.execute_cdp_cmd('Network.setUserAgentOverride', {"userAgent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.53 Safari/537.36'})
+ driver.set_script_timeout(20)
+
+ return driver
+
+
+def login(driver):
+ driver.find_elements(By.CLASS_NAME, "SignFlow-tab")[1].click()
+ # driver.find_elements(By.CLASS_NAME, "username-input")[0].send_keys("")
+ # driver.find_elements(By.CLASS_NAME, "username-input")[1].send_keys("")
+ # driver.find_element(By.CLASS_NAME, "SignFlow-submitButton").click()
+ time.sleep(130)
+ # WebDriverWait(driver, timeout=60).until(lambda d:d.find_element(By.CLASS_NAME, "TopstoryTabs-link"))
+ return driver
+
+def crawl_article_links(driver:webdriver, username:str):
+ #crawl articles links
+ articles = r'https://www.zhihu.com/people/zoujiu1/posts'
+ articles_one = r'https://www.zhihu.com/people/zoujiu1/posts?page='
+ article_detail = r'https://zhuanlan.zhihu.com/p/'
+
+ driver.get(articles.replace("zoujiu1", username))
+ pages = driver.find_elements(By.CLASS_NAME, 'PaginationButton')[-2]
+ assert isinstance(int(pages.text), int)
+ maxpages = int(pages.text)
+
+ all_article_detail = {}
+ #how many pages of articles
+ for p in range(1, maxpages + 1):
+ driver.get(articles_one + str(p))
+ items = driver.find_elements(By.CLASS_NAME, "ArticleItem")
+ #crawl article one by one
+ for a in range(len(items)):
+ introduce = items[a].get_attribute("data-zop")
+ itemId = json.loads(introduce)
+ links = items[a].find_elements(By.TAG_NAME, 'a')[0].get_attribute('href')
+ # id = itemId['itemId']
+ title = str(itemId['title'])
+ all_article_detail[str(title)] = links #article_detail + str(id)
+ crawlsleep(sleeptime)
+ with open(os.path.join(articledir, 'article.txt'), 'w', encoding='utf-%d'%(6+2)) as obj:
+ for key, val in all_article_detail.items():
+ obj.write(val + " " + key + '\n')
+
+def crawl_answers_links(driver:webdriver, username:str):
+ #crawl answers links
+ answer = r'https://www.zhihu.com/people/zoujiu1/answers'
+ answer_one = r'https://www.zhihu.com/people/zoujiu1/answers?page='
+
+ driver.get(answer.replace("zoujiu1", username))
+ WebDriverWait(driver, timeout=10).until(lambda d: d.find_element(By.CLASS_NAME, "Pagination"))
+ pages = driver.find_elements(By.CLASS_NAME, 'PaginationButton')[-2]
+ assert isinstance(int(pages.text), int)
+ maxpages = int(pages.text)
+
+ all_answer_detail = []
+ #how many pages of answers
+ for p in range(1, maxpages + 1):
+ driver.get(answer_one + str(p))
+ WebDriverWait(driver, timeout=10).until(lambda d: d.find_element(By.CLASS_NAME, "Pagination"))
+ items = driver.find_elements(By.CLASS_NAME, "AnswerItem")
+ #crawl answer one by one
+ for i in range(len(items)):
+ introduce = items[i].get_attribute("data-zop")
+ itemId = json.loads(introduce)
+ id = itemId['itemId']
+ title = str(itemId['title'])
+ links = items[i].find_elements(By.TAG_NAME, 'a')[0].get_attribute('href')
+ all_answer_detail.append([links, str(title)])
+ crawlsleep(sleeptime)
+ with open(os.path.join(answerdir, 'answers.txt'), 'w', encoding='utf-8') as obj:
+ for links, title in all_answer_detail:
+ obj.write(links + " " + title + '\n')
+
+def crawl_think_links(driver:webdriver, username:str):
+ #crawl think links
+ think = r'https://www.zhihu.com/people/zoujiu1/pins'
+ think_one = r'https://www.zhihu.com/people/zoujiu1/pins?page='
+
+ driver.get(think.replace("zoujiu1", username))
+ WebDriverWait(driver, timeout=10).until(lambda d: d.find_element(By.CLASS_NAME, "Pagination"))
+ pages = driver.find_elements(By.CLASS_NAME, 'PaginationButton')[-2]
+ assert isinstance(int(pages.text), int)
+ maxpages = int(pages.text)
+
+ # all_think_detail = []
+ #how many pages of think
+ allbegin = now()
+ numberpage = 1e-6
+ for p in range(1, maxpages + 1):
+ begin = now()
+ driver.get(think_one + str(p))
+ WebDriverWait(driver, timeout=10).until(lambda d: d.find_element(By.CLASS_NAME, "Pagination"))
+ items = driver.find_elements(By.CLASS_NAME, "PinItem")
+ #crawl answer one by one
+ for i in range(len(items)):
+ RichContent = items[i].find_element(By.CLASS_NAME, 'RichContent-inner')
+ clockitem = items[i].find_element(By.CLASS_NAME, 'ContentItem-time')
+ try:
+ WebDriverWait(items[i], timeout=10).until(lambda d: len(d.text) > 2)
+ except:
+ driver.get(think_one + str(p))
+ WebDriverWait(driver, timeout=10).until(lambda d: d.find_element(By.CLASS_NAME, "Pagination"))
+ items = driver.find_elements(By.CLASS_NAME, "PinItem")
+ RichContent = items[i].find_element(By.CLASS_NAME, 'RichContent-inner')
+ clockitem = items[i].find_element(By.CLASS_NAME, 'ContentItem-time')
+ WebDriverWait(items[i], timeout=10).until(lambda d: len(d.text) > 2)
+ # clockspan = clockitem.find_element(By.TAG_NAME, 'span')
+ clock = clockitem.text
+ clock = clock[3 + 1:].replace(" ", "_").replace(":", "_")
+ dirthink = os.path.join(thinkdir, clock)
+ if os.path.exists(dirthink):
+ continue
+ os.makedirs(dirthink, exist_ok=True)
+ try:
+ RichContent.find_element(By.CLASS_NAME, 'Button').click()
+ WebDriverWait(items[i], timeout=10).until(lambda d: d.find_element(By.CLASS_NAME, "RichContent-inner"))
+ RichContent = items[i].find_element(By.CLASS_NAME, 'RichContent-inner')
+ except:
+ pass
+ content = RichContent.find_element(By.CLASS_NAME, 'RichText')
+ links_col = content.find_elements(By.TAG_NAME, 'a')
+ links = []
+ for itext in links_col:
+ try:
+ links.append(itext.get_attribute("href"))
+ except:
+ continue
+ text = content.text.strip()
+ if len(text)!=0:
+ with open(os.path.join(dirthink, clock+".txt"), 'w', encoding='utf-8') as obj:
+ obj.write(text.replace("
", '\n').replace("
", '\n')+"\n")
+ for itext in links:
+ obj.write(itext + "\n")
+ # all_think_detail.append([text])
+ try:
+ items[i].find_elements(By.CLASS_NAME, 'Image-PreviewVague')[0].click()
+ except:
+ continue
+ cnt = 0
+ while True:
+ WebDriverWait(driver, timeout=10).until(lambda d: d.find_element(By.CLASS_NAME, "ImageGallery-Inner"))
+ img = driver.find_element(By.CLASS_NAME, 'ImageGallery-Inner').find_element(By.TAG_NAME, 'img')
+ imglink = img.get_attribute('data-original')
+ if imglink==None:
+ imglink = img.get_attribute("src")
+ try:
+ response = requests.get(imglink, timeout=30)
+ except:
+ try:
+ response = requests.get(imglink, timeout=30)
+ except:
+ continue
+ if response.status_code==200:
+ with open(os.path.join(dirthink, clock + "_" + str(cnt) + '.jpg'), 'wb') as obj:
+ obj.write(response.content)
+ cnt += 1
+ crawlsleep(sleeptime)
+ try:
+ disable = driver.find_element(By.CLASS_NAME, 'ImageGallery-arrow-right')
+ if 'disabled' in disable.get_attribute('class'):
+ driver.find_element(By.CLASS_NAME, 'ImageGallery-close').click()
+ break
+ else:
+ disable.click()
+ except:
+ break
+ crawlsleep(sleeptime)
+ end = now()
+ print("爬取一篇想法耗时:", clock, round(end - begin, 3))
+ logfp.write("爬取一篇想法耗时:" +clock + " "+ str(round(end - begin, 3)) + "\n")
+ numberpage += 1
+ # crawlsleep(600)
+ allend = now()
+ print("平均爬取一篇想法耗时:", round((allend - allbegin) / numberpage, 3))
+ logfp.write("平均爬取一篇想法耗时:" + str(round((allend - allbegin) / numberpage, 3)) + "\n")
+
+ dealthink(thinkdir)
+
+def cleartxt(kkk):
+ while ' 'in kkk:
+ kkk = kkk.replace(" ", "")
+ while "\n" in kkk:
+ kkk = kkk.replace("\n", "")
+ return kkk
+
+def recursion(nod, article, number, driver, dircrea):
+ if isinstance(nod, dict):
+ if 'nodeName' in nod.keys() and nod['nodeName']=='#text':
+ kkk = cleartxt(nod['textContent'])
+ if len(kkk) > 0:
+ article += nod['textContent']
+ return article, number
+
+ elif isinstance(nod, webdriver.remote.webelement.WebElement):
+ tag_name = nod.tag_name
+ if tag_name=="br":
+ article += "
\n"
+ elif tag_name in ['h1', 'h2', 'h3', 'h4', 'h5', 'h6']:
+ article += "\n" + '#' * int(tag_name[-1]) + ' '
+ p_childNodes = driver.execute_script("return arguments[0].childNodes;", nod)
+ for pnode in p_childNodes:
+ article, number = recursion(pnode, article, number, driver, dircrea)
+ article += '\n'
+ elif tag_name=="span":
+ datatex = nod.get_attribute("data-tex")
+ classc = nod.get_attribute("class")
+ if datatex and classc and 'ztext-math' in classc:
+ if article[-3-1:]=='
' or article[-1:]=='\n':
+ article += "\n$" + nod.get_attribute("data-tex") + "$"
+ else:
+ article += "$" + nod.get_attribute("data-tex") + "$"
+ else:
+ imgchunk = nod.find_elements(By.TAG_NAME, 'img')
+ achunk = nod.find_elements(By.TAG_NAME, 'a')
+ if len(imgchunk)==0 and len(achunk)==0:
+ article += nod.text
+ else:
+ p_childNodes = driver.execute_script("return arguments[0].childNodes;", nod)
+ for pnode in p_childNodes:
+ article, number = recursion(pnode, article, number, driver, dircrea)
+ # else:
+ # formula_span = nod.find_elements(By.CLASS_NAME, "ztext-math")
+ # for jf in range(len(formula_span)):
+ # ele = formula_span[jf]
+ # article += "$" + ele.get_attribute("data-tex") + "$"
+ elif tag_name=="a":
+ linksite = nod.get_attribute("href")
+ if linksite:
+ linksite = linksite.replace("//link.zhihu.com/?target=https%3A", "").replace("//link.zhihu.com/?target=http%3A", "")
+ if article[-3-1:]=='
' or article[-1:]=='\n':
+ article += "\n\n["+nod.text+"]"+"("+linksite + ")"
+ else:
+ article += "["+nod.text+"]"+"("+linksite + ")"
+ elif tag_name=="b" or tag_name=="strong":
+ txt = nod.text
+ while len(txt) > 0 and txt[-1] == " ":
+ txt = txt[:-1]
+ article += " **" + txt + "** "
+ elif tag_name=="em":
+ article += nod.text
+ # elif tag_name=='td':
+ # article += nod.text
+ elif tag_name in ['table', 'tbody', 'tr', 'td', 'u']:
+ p_childNodes = driver.execute_script("return arguments[0].childNodes;", nod)
+ for pnode in p_childNodes:
+ article, number = recursion(pnode, article, number, driver, dircrea)
+ elif tag_name=='p':
+ p_childNodes = driver.execute_script("return arguments[0].childNodes;", nod)
+ for pnode in p_childNodes:
+ article, number = recursion(pnode, article, number, driver, dircrea)
+ article += "\n"
+ elif tag_name=="div":
+ # atags = nod.find_elements(By.TAG_NAME, 'a')
+ prenode = nod.find_elements(By.TAG_NAME, 'code')
+ if len(prenode) > 0:
+ for i in prenode:
+ article += "
\n```\n" + i.text + "\n```\n
"
+ else:
+ p_childNodes = driver.execute_script("return arguments[0].childNodes;", nod)
+ for pnode in p_childNodes:
+ article, number = recursion(pnode, article, number, driver, dircrea)
+ elif tag_name=="figure":
+ imgchunk = nod.find_elements(By.TAG_NAME, 'img')
+ for i in range(len(imgchunk)):
+ imglink = imgchunk[i].get_attribute("data-original")
+ if imglink==None:
+ imglink = imgchunk[i].get_attribute("src")
+ try:
+ response = requests.get(imglink, timeout=30)
+ except:
+ try:
+ response = requests.get(imglink, timeout=30)
+ except:
+ continue
+ if response.status_code==200:
+ article += ''' '''%number
+ # article += ''''''%number
+ with open(os.path.join(dircrea, str(number) + '.jpg'), 'wb') as obj:
+ obj.write(response.content)
+ number += 1
+ crawlsleep(sleeptime)
+ return article, number
+
+def crawl_article_detail(driver:webdriver):
+ website_col = {}
+ for i in os.listdir(articledir):
+ try:
+ kk = int(i)
+ shutil.rmtree(os.path.join(articledir, i))
+ except:
+ pass
+ with open(os.path.join(articledir, 'article.txt'), 'r', encoding='utf-8') as obj:
+ for i in obj.readlines():
+ i = i.strip()
+ ind = i.index(" ")
+ website = i[:ind]
+ title = i[ind+1:].replace(" ", "_").replace("\n", "")
+ website_col[website] = title
+ allbegin = now()
+ numberpage = 1e-6
+ for website, title in website_col.items():
+ begin = now()
+ nam = title.replace(":", "_").replace("?", ";"). \
+ replace("/","_").replace("\\","_").replace("\"", "_").\
+ replace("*","_").replace("|", "_").replace(" ", "_").replace("?", "").replace("!", "").\
+ replace("<", "小于").replace(">", "大于").replace("(", "").\
+ replace(")", "")
+ temp_name = nam #str(np.random.randint(999999999)) + str(np.random.randint(999999999))
+ if len(temp_name) > 200:
+ temp_name = temp_name[:100]
+ # nam_pinyin = pinyin.get(nam, format='numerical')
+ # if '租房' not in title:
+ # continue
+ direxit = False
+ fileexit = False
+ dirname = ''
+ filesize = 0
+ kkk = -9
+ for i in os.listdir(articledir):
+ if nam in i and os.path.isdir(os.path.join(articledir, i)):
+ direxit = True
+ dirname = i
+ fileexit = os.path.exists(os.path.join(articledir, dirname, nam + ".pdf"))
+ if fileexit:
+ filesize = os.path.getsize(os.path.join(articledir, dirname, nam + ".pdf"))
+ # break
+ if direxit and fileexit and filesize > 0:
+ if '_IP_' in dirname:
+ filnam = dirname[16+1:].split("_IP_")[0]
+ else:
+ filnam = dirname[16+1:][:-1]
+ if filnam == nam:
+ kkk = 9
+ break
+ if kkk > 0:
+ continue
+ dircrea = os.path.join(articledir, temp_name)
+ os.makedirs(dircrea, exist_ok = True)
+
+ #get article text
+ driver.get(website)
+ WebDriverWait(driver, timeout=10).until(lambda d: d.find_element(By.CLASS_NAME, "Post-Topics"))
+
+ #https://stackoverflow.com/questions/61877719/how-to-get-current-scroll-height-in-selenium-python
+ scrollHeight = driver.execute_script('''return document.documentElement.scrollHeight''')
+ footer = driver.find_element(By.TAG_NAME, "html")
+ scroll_origin = ScrollOrigin.from_element(footer, 0, -60)
+ ActionChains(driver).scroll_from_origin(scroll_origin, 0, -100000).perform()
+ for i in range(18):
+ try:
+ ActionChains(driver).scroll_from_origin(scroll_origin, 0, scrollHeight//18).perform()
+ except:
+ try:
+ ActionChains(driver).scroll_from_origin(scroll_origin, 0, -scrollHeight//18).perform()
+ except:
+ pass
+ crawlsleep(0.8)
+ #remove noneed element
+ try:
+ driver.execute_script('''document.getElementsByClassName("Post-Sub")[0].remove();''')
+ except:
+ pass
+ try:
+ driver.execute_script('''document.getElementsByClassName("ColumnPageHeader-Wrapper")[0].remove();''')
+ except:
+ pass
+ try:
+ driver.execute_script('''document.getElementsByClassName("RichContent-actions")[0].remove();''')
+ except:
+ pass
+
+ richtext = driver.find_element(By.CLASS_NAME, "Post-RichText")
+ titletext = driver.find_element(By.CLASS_NAME, "Post-Title")
+ article_childNodes = driver.execute_script("return arguments[0].childNodes;", richtext)
+ article = ""
+ number = 0
+ for nod in article_childNodes:
+ article, number = recursion(nod, article, number, driver, dircrea)
+
+ article = article.replace("修改\n", "").replace("开启赞赏\n", "开启赞赏, ").replace("添加评论\n", "").replace("分享\n", "").\
+ replace("收藏\n", "").replace("设置\n", "")
+ tle = titletext.text
+ article += "
\n\n["+driver.current_url+"](" + driver.current_url + ")
\n"
+ if len(article) > 0:
+ try:
+ f=open(os.path.join(dircrea, nam + "_formula_" + ".md"), 'w', encoding='utf-8')
+ f.close()
+ except:
+ nam = nam[:len(nam)//2]
+ with open(os.path.join(dircrea, nam + "_formula_" + ".md"), 'w', encoding='utf-8') as obj:
+ obj.write("# " + tle+"\n\n")
+ if len(article) > 0:
+ obj.write(article + "\n\n\n")
+
+ # article to pdf
+ clocktxt = driver.find_element(By.CLASS_NAME, "Post-NormalMain").find_element(By.CLASS_NAME, "ContentItem-time")
+ crawlsleep(1)
+ url = driver.current_url
+ driver.execute_script("const para = document.createElement(\"h2\"); \
+ const br = document.createElement(\"br\"); \
+ const node = document.createTextNode(\"%s\");\
+ para.appendChild(node);\
+ const currentDiv = document.getElementsByClassName(\"Post-Header\")[0];\
+ currentDiv.appendChild(br); \
+ currentDiv.appendChild(para);"%url \
+ )
+ clock = clocktxt.text[3+1:].replace(" ", "_").replace(":", "_")
+ pagetopdf(driver, dircrea, temp_name, nam, articledir, url, Created=clock)
+
+ crawlsleep(sleeptime)
+
+ #https://stackoverflow.com/questions/23359083/how-to-convert-webpage-into-pdf-by-using-python
+ #https://github.com/JazzCore/python-pdfkit
+ # if article_to_jpg_pdf_markdown:
+ # config = pdfkit.configuration(wkhtmltopdf = wkhtmltopdf_path)
+ # pdfkit.from_url(website, os.path.join(dircrea, nam_pinyin+".pdf"), configuration = config)
+
+ end = now()
+ print("爬取一篇article耗时:", title, round(end - begin, 3))
+ logfp.write("爬取一篇article耗时:" + title + " " + str(round(end - begin, 3)) + "\n")
+ numberpage += 1
+ # crawlsleep(600)
+ allend = now()
+ print("平均爬取一篇article耗时:", round((allend - allbegin) / numberpage, 3))
+ logfp.write("平均爬取一篇article耗时:" + str(round((allend - allbegin) / numberpage, 3)) + "\n")
+
+def pagetopdf(driver, dircrea, temp_name, nam, destdir, url, Created=""):
+ fileexit = os.path.exists(os.path.join(dircrea, temp_name + ".pdf"))
+ if fileexit:
+ try:
+ os.remove(os.path.join(dircrea, temp_name + ".pdf"))
+ except:
+ pass
+
+ printop = PrintOptions()
+ # printop.shrink_to_fit = True
+ # printop.margin_left = 0
+ # printop.margin_right = 0
+ # printop.margin_top = 0
+ # printop.margin_bottom = 0
+ printop.page_height = 29.7
+ printop.page_width = 21
+ printop.background = True
+ # printop.scale = 1.0
+
+ pdf = driver.print_page(print_options=printop)
+ with open(os.path.join(dircrea, nam + ".pdf"), 'wb') as obj:
+ obj.write(base64.b64decode(pdf))
+
+ # driver.execute_script('window.print();')
+ clock = Created #clocktxt.text[3+1:].replace(" ", "_").replace(":", "_")
+ with open(os.path.join(dircrea, clock+".txt"), 'w', encoding='utf-8') as obj:
+ obj.write(clock+"\n")
+ obj.write(url)
+
+ clocktmp = clock.split(".")[0].replace("T", "_")
+ clock = clocktmp.split("・")[0]
+ address = ""
+ try:
+ address += clocktmp.split("・")[1]
+ except:
+ pass
+ try:
+ os.rename(dircrea, os.path.join(destdir, clock + "_" + nam + "_" + address))
+ except:
+ crawlsleep(3+addtime)
+ try:
+ os.rename(dircrea, os.path.join(destdir, clock + "_" + nam + "_" + address))
+ except:
+ pass
+
+def crawl_answer_detail(driver:webdriver):
+ website_col = {}
+ for i in os.listdir(answerdir):
+ try:
+ kk = int(i)
+ shutil.rmtree(os.path.join(answerdir, i))
+ except:
+ pass
+ with open(os.path.join(answerdir, 'answers.txt'), 'r', encoding='utf-8') as obj:
+ for i in obj.readlines():
+ i = i.strip()
+ ind = i.index(" ")
+ website = i[:ind]
+ title = i[ind+1:].replace(" ", "_").replace("\n", "")
+ website_col[website] = title
+ allbegin = now()
+ numberpage = 1e-6
+ for website, title in website_col.items():
+ begin = now()
+ nam = title.replace(":", "_").replace("?", ";"). \
+ replace("/","_").replace("\\","_").replace("\"", "_").\
+ replace("*","_").replace("|", "_").replace(" ", "_").replace("?", "").replace("!", "").\
+ replace("<", "小于").replace(">", "大于")
+ if len(nam) > 200:
+ nam = nam[:100]
+ temp_name = nam #str(np.random.randint(999999999)) + str(np.random.randint(999999999))
+
+ # nam_pinyin = pinyin.get(nam, format='numerical')
+ # if '不定积分该用什么方' not in title:
+ # continue
+ direxit = False
+ fileexit = False
+ dirname = ''
+ filesize = 0
+ for i in os.listdir(answerdir):
+ if nam in i and os.path.isdir(os.path.join(answerdir, i)):
+ direxit = True
+ dirname = i
+ fileexit = os.path.exists(os.path.join(answerdir, dirname, nam + ".pdf"))
+ if fileexit:
+ filesize = os.path.getsize(os.path.join(answerdir, dirname, nam + ".pdf"))
+ break
+
+ dircrea = os.path.join(answerdir, temp_name)
+
+ if direxit and fileexit and filesize > 0:
+ if '_IP_' in dirname:
+ filnam = dirname[16+1:].split("_IP_")[0]
+ else:
+ filnam = dirname[16+1:][:-1]
+ if filnam == nam:
+ continue
+
+ os.makedirs(dircrea, exist_ok = True)
+
+ #get article text
+ driver.get(website)
+ WebDriverWait(driver, timeout=10).until(lambda d: d.find_element(By.CLASS_NAME, "AnswerItem-editButtonText"))
+
+ #https://stackoverflow.com/questions/61877719/how-to-get-current-scroll-height-in-selenium-python
+ scrollHeight = driver.execute_script('''return document.getElementsByClassName("QuestionAnswer-content")[0].scrollHeight''')
+ footer = driver.find_element(By.TAG_NAME, "html")
+ scroll_origin = ScrollOrigin.from_element(footer, 0, 0)
+ ActionChains(driver).scroll_from_origin(scroll_origin, 0, -100000).perform()
+ for i in range(18):
+ try:
+ ActionChains(driver).scroll_from_origin(scroll_origin, 0, scrollHeight//18).perform()
+ except:
+ try:
+ ActionChains(driver).scroll_from_origin(scroll_origin, 0, -scrollHeight//18).perform()
+ except:
+ pass
+ crawlsleep(0.8)
+ ActionChains(driver).scroll_from_origin(scroll_origin, 0, -100000).perform()
+ article = ""
+ number = 0
+ try:
+ QuestionRichText = driver.find_element(By.CLASS_NAME, "QuestionRichText")
+ button = QuestionRichText.find_element(By.CLASS_NAME, "QuestionRichText-more")
+ WebDriverWait(driver, timeout=20).until(EC.element_to_be_clickable((By.CLASS_NAME, "QuestionRichText-more")))
+ crawlsleep(max(2, sleeptime))
+ button.click()
+ question_RichText = QuestionRichText.find_element(By.CLASS_NAME, "RichText")
+ question_childNodes = driver.execute_script("return arguments[0].childNodes;", question_RichText)
+
+ article += "# question:
\n"
+ for nod in question_childNodes:
+ article, number = recursion(nod, article, number, driver, dircrea)
+ except:
+ pass
+ article += "
\n\n\n# answer:
\n"
+ #remove noneed element
+ try:
+ driver.execute_script('''document.getElementsByClassName("MoreAnswers")[0].remove();''')
+ except:
+ pass
+ try:
+ driver.execute_script('''document.getElementsByClassName("ViewAll")[0].remove();''')
+ except:
+ pass
+ try:
+ driver.execute_script('''document.getElementsByClassName("ViewAll")[0].remove();''')
+ except:
+ pass
+ try:
+ driver.execute_script('''document.getElementsByClassName("AppHeader")[0].remove();''')
+ except:
+ pass
+ try:
+ driver.execute_script('''document.getElementsByClassName("Reward")[0].remove();''')
+ except:
+ pass
+ try:
+ driver.execute_script('''document.getElementsByClassName("Question-sideColumn")[0].remove();''')
+ except:
+ pass
+
+ Created = "not found"
+ Modified = "not found"
+ QuestionAnswer = driver.find_element(By.CLASS_NAME, "QuestionAnswer-content")
+ richtext = QuestionAnswer.find_element(By.CLASS_NAME, "CopyrightRichText-richText")
+ Createdtime = QuestionAnswer.find_element(By.CLASS_NAME, "ContentItem-time")
+ Created = Createdtime.text[4:].replace(" ", "_").replace(":", "_").replace(".", "_")
+ metatext = QuestionAnswer.find_elements(By.TAG_NAME, "meta")
+ for i in range(len(metatext)):
+ # if metatext[i].get_attribute("itemprop")=="dateCreated":
+ # Created = metatext[i].get_attribute("content").replace(" ", "_").replace(":", "_").replace(".", "_")
+ if metatext[i].get_attribute("itemprop")=="dateModified":
+ Modified = metatext[i].get_attribute("content").replace(" ", "_").replace(":", "_").replace(".", "_")
+
+ answer_childNodes = driver.execute_script("return arguments[0].childNodes;", richtext)
+ for nod in answer_childNodes:
+ article, number = recursion(nod, article, number, driver, dircrea)
+
+ article = article.replace("修改\n", "").replace("开启赞赏\n", "开启赞赏, ").replace("添加评论\n", "").replace("分享\n", "").\
+ replace("收藏\n", "").replace("设置\n", "")
+
+ url = driver.current_url
+ article += "
\n\n["+url+"](" + url + ")
\n"
+ driver.execute_script("const para = document.createElement(\"h2\"); \
+ const br = document.createElement(\"br\"); \
+ const node = document.createTextNode(\"%s\");\
+ para.appendChild(node);\
+ const currentDiv = document.getElementsByClassName(\"QuestionHeader-title\")[0];\
+ currentDiv.appendChild(br); \
+ currentDiv.appendChild(para);"%url \
+ )
+
+ if len(article) > 0:
+ try:
+ f=open(os.path.join(dircrea, nam + "_formula_" + ".md"), 'w', encoding='utf-8')
+ f.close()
+ except:
+ nam = nam[:len(nam)//2]
+ with open(os.path.join(dircrea, nam + "_formula_" + ".md"), 'w', encoding='utf-8') as obj:
+ obj.write("# "+ title+"\n\n")
+ if len(article) > 0:
+ obj.write(article + "\n\n\n")
+ obj.write("Created: " + Created + "\n")
+ obj.write("Modified: " + Modified + "\n")
+
+ # article to pdf
+ pagetopdf(driver, dircrea, temp_name, nam, answerdir, url, Created=Created)
+ crawlsleep(sleeptime)
+ end = now()
+ print("爬取一篇回答耗时:", title, round(end - begin, 3))
+ logfp.write("爬取一篇回答耗时:" +title+" "+ str(round(end - begin, 3)) + "\n")
+ numberpage += 1
+ # crawlsleep(600)
+ allend = now()
+ print("平均爬取一篇回答耗时:", round((allend - allbegin) / numberpage, 3))
+ logfp.write("平均爬取一篇回答耗时:" + str(round((allend - allbegin) / numberpage, 3)) + "\n")
+
+def login_loadsavecookie():
+ website = r"https://www.zhihu.com/signin"
+
+ #login and save cookies of zhihu
+ driver = edgeopen(driverpath)
+ driver.get(website)
+ try:
+ load_cookie(driver, cookie_path)
+ driver.get(r"https://www.zhihu.com/")
+ except:
+ driver = login(driver)
+ save_cookie(driver, cookie_path)
+ driver.quit()
+ exit(0)
+ try:
+ driver.find_element(By.ID, 'Popover15-toggle').click()
+ driver.find_element(By.CLASS_NAME, 'Menu-item').click()
+ except:
+ crawlsleep(6)
+ driver.get(r"https://www.zhihu.com/")
+ crawlsleep(3)
+ driver.find_element(By.ID, 'Popover15-toggle').click()
+ driver.find_element(By.CLASS_NAME, 'Menu-item').click()
+ url = driver.current_url
+ username = url.split("/")[-1]
+ return driver, username
+
+def zhihu():
+ # #crawl articles links
+ if not os.path.exists(driverpath):
+ response = requests.get("https://msedgedriver.azureedge.net/114.0.1823.67/edgedriver_win64.zip")
+ if response.status_code==200:
+ with open(os.path.join(abspath, 'msedgedriver/edgedriver.zip'), 'wb') as obj:
+ obj.write(response.content)
+ with ZipFile(os.path.join(abspath, 'msedgedriver/edgedriver.zip'), "r") as obj:
+ obj.extractall(os.path.join(abspath, 'msedgedriver'))
+ nth = os.path.join(abspath, 'msedgedriver')
+ for r, d, f in os.walk(nth):
+ kk = 6
+ for i in f:
+ if 'driver' in i and '.exe' in i:
+ try:
+ shutil.move(os.path.join(r, i), os.path.join(nth, i))
+ except:
+ pass
+ os.rename(os.path.join(nth, i), os.path.join(nth, "msedgedriver.exe"))
+ kk = -6
+ break
+ if kk < 0:
+ break
+
+ driver, username = login_loadsavecookie()
+
+ # #crawl think links
+ if crawl_think:
+ crawl_think_links(driver, username)
+ logfp.write(nowtime() + ', 想法爬取已经好了的\n')
+
+ # #crawl articles links
+ if crawl_article:
+ if not os.path.exists(os.path.join(articledir, 'article.txt')):
+ crawl_article_links(driver, username)
+ logfp.write(nowtime() + ', article weblink爬取已经好了的\n')
+ else:
+ if crawl_links_scratch:
+ os.rename(os.path.join(articledir, 'article.txt'), os.path.join(articledir, 'article_%s.txt'%nowtime()))
+ crawl_article_links(driver, username)
+ logfp.write(nowtime() + ', article weblink爬取已经好了的\n')
+ else:
+ pass
+ crawl_article_detail(driver)
+ logfp.write(nowtime() + ', article爬取已经好了的\n')
+
+ # #crawl answers links
+ if crawl_answer:
+ if not os.path.exists(os.path.join(answerdir, 'answers.txt')):
+ crawl_answers_links(driver, username)
+ logfp.write(nowtime() + ', 回答 weblink爬取已经好了的\n')
+ else:
+ if crawl_links_scratch:
+ os.rename(os.path.join(answerdir, 'answers.txt'), os.path.join(answerdir, 'answers_%s.txt'%nowtime()))
+ crawl_answers_links(driver, username)
+ logfp.write(nowtime() + ', 回答 weblink爬取已经好了的\n')
+ else:
+ pass
+ crawl_answer_detail(driver)
+ logfp.write(nowtime() + ', 回答爬取已经好了的\n')
+
+ driver.quit()
+
+if __name__ == "__main__":
+ #version four.one_zero.zero
+ driverpath = os.path.join(abspath, 'msedgedriver\msedgedriver.exe')
+ savepath = deepcopy(abspath)
+ cookiedir = os.path.join(savepath, 'cookie')
+ thinkdir = os.path.join(savepath, 'think')
+ answerdir = os.path.join(savepath, 'answer')
+ articledir = os.path.join(savepath, 'article')
+ logdir = os.path.join(savepath, 'log')
+ logfile = os.path.join(logdir, nowtime() + '_log.txt')
+ os.makedirs(cookiedir, exist_ok=True)
+ os.makedirs(thinkdir, exist_ok=True)
+ os.makedirs(answerdir, exist_ok=True)
+ os.makedirs(articledir, exist_ok=True)
+ os.makedirs(logdir, exist_ok=True)
+ logfp = open(logfile, 'w', encoding='utf-8')
+ cookie_path =os.path.join(cookiedir, 'cookie_zhihu.pkl')
+
+ parser = argparse.ArgumentParser(description=r'crawler zhihu.com, 爬取知乎的想法, 回答, 文章, 包括数学公式')
+ parser.add_argument('--sleep_time', type=float, default = 6, \
+ help=r'crawler sleep time during crawling, 爬取时的睡眠时间, 避免给知乎服务器带来太大压力, \
+ 可以日间调试好,然后深夜运行爬取人少, 给其他小伙伴更好的用户体验, 避免知乎顺着网线过来找人, 默认: 6s')
+ parser.add_argument('--computer_time_sleep', type=float, default=0, \
+ help=r'computer running sleep time 默认:0, 电脑运行速度的sleep时间, 默认:0')
+ parser.add_argument('--think', action="store_true", help=r'crawl think, 是否爬取知乎的想法, 已经爬取过的想法不会重复爬取, 所以可以多次爬取断了也没关系')
+ parser.add_argument('--answer', action="store_true", help=r'crawl answer, 是否爬取知乎的回答, 保存到pdf、markdown以及相关图片等,已经爬取过的不会重复爬取,\
+ 断了再次爬取的话,可以配置到--links_scratch,事先保存好website')
+ parser.add_argument('--article', action="store_true", help=r'crawl article, 是否爬取知乎的文章, 保存到pdf、markdown以及相关图片等,已经爬取过的不会重复爬取,\
+ 断了再次爬取的话,可以配置到--links_scratch,事先保存好website')
+ parser.add_argument('--links_scratch', action="store_true", \
+ help=r'crawl links scratch for answer or article, 是否使用已经保存好的website和title, 否则再次爬取website')
+ args = parser.parse_args()
+ sleeptime = args.sleep_time
+ crawl_think = args.think
+ crawl_answer = args.answer
+ crawl_article = args.article
+ crawl_links_scratch = args.links_scratch
+ addtime = args.computer_time_sleep
+
+
+ # crawl_think = False
+ # crawl_article = False
+ # crawl_answer = True
+ # crawl_links_scratch = False
+ # python.exe c:/Users/10696/Desktop/access/zhihu/crawler.py --think
+ # python.exe c:/Users/10696/Desktop/access/zhihu/crawler.py --article
+ # python.exe c:/Users/10696/Desktop/access/zhihu/crawler.py --answer
+ # python.exe c:/Users/10696/Desktop/access/zhihu/crawler.py --think --answer --article
+ zhihu()
+ try:
+ crawl_links_scratch = False
+ zhihu()
+ except:
+ time.sleep(600)
+ try:
+ zhihu()
+ except:
+ time.sleep(600)
+ zhihu()
+ logfp.close()
\ No newline at end of file
diff --git a/env.py b/env.py
new file mode 100644
index 0000000..f140f98
--- /dev/null
+++ b/env.py
@@ -0,0 +1,16 @@
+import os
+import shutil
+abspath = os.path.abspath(__file__)
+filename = abspath.split(os.sep)[-1]
+abspath = abspath.replace(filename, "")
+
+def to_setting():
+ userhome = os.path.expanduser("~")
+ shutil.copyfile(os.path.join(abspath, "msedgedriver", ".condarc"), \
+ userhome)
+ os.system("")
+ os.system("conda clean -i; Y;")
+ os.system("cd %s; pip install -r requirement.txt"%(abspath, ))
+
+if __name__=="__main__":
+ to_setting()
\ No newline at end of file
diff --git a/msedgedriver/.condarc b/msedgedriver/.condarc
new file mode 100644
index 0000000..ce8a290
--- /dev/null
+++ b/msedgedriver/.condarc
@@ -0,0 +1,15 @@
+channels:
+ - defaults
+show_channel_urls: true
+default_channels:
+ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
+ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
+ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
+custom_channels:
+ conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
+ msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
+ bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
+ menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
+ pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
+ pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
+ simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
diff --git a/msedgedriver/crawler copy.py b/msedgedriver/crawler copy.py
new file mode 100644
index 0000000..067739f
--- /dev/null
+++ b/msedgedriver/crawler copy.py
@@ -0,0 +1,1032 @@
+#################
+###ZouJiu-202306
+#################
+from selenium import webdriver
+from selenium.webdriver.edge.service import Service
+from selenium.webdriver import EdgeOptions
+import os
+from selenium.webdriver.common.by import By
+import time
+import pickle
+import json
+from selenium.webdriver.support.wait import WebDriverWait
+import requests
+from copy import deepcopy
+import argparse
+from datetime import datetime
+# import pdfkit
+# import pinyin
+from selenium.webdriver.common import keys
+import pyautogui
+from selenium.webdriver import ActionChains
+from selenium.webdriver.common.by import By
+from selenium.webdriver.common.actions.wheel_input import ScrollOrigin
+import numpy as np
+import shutil
+from selenium.webdriver.chrome.options import Options
+from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
+from selenium.webdriver.support import expected_conditions as EC
+
+abspath = os.path.abspath(__file__)
+filename = abspath.split(os.sep)[-1]
+abspath = abspath.replace(filename, "")
+
+import sys
+sys.path.append(abspath)
+# wkhtmltopdf_path = os.path.join(abspath, r'wkhtmltopdf\bin\wkhtmltopdf.exe')
+# sys.path.append(wkhtmltopdf_path)
+from thinkdeal import *
+
+def save_cookie(driverkkk, path):
+ #https://stackoverflow.com/questions/45417335/python-use-cookie-to-login-with-selenium
+ with open(path, 'wb') as filehandler:
+ pickle.dump(driverkkk.get_cookies(), filehandler)
+
+def load_cookie(driverkkk, path):
+ #https://stackoverflow.com/questions/45417335/python-use-cookie-to-login-with-selenium
+ with open(path, 'rb') as cookiesfile:
+ cookies = pickle.load(cookiesfile)
+ for cookie in cookies:
+ driverkkk.add_cookie(cookie)
+
+def edgeopen(driverpath, strategy = False):
+ service=Service(executable_path=driverpath)
+ edge_options = EdgeOptions()
+
+ #https://stackoverflow.com/questions/53039551/selenium-webdriver-modifying-navigator-webdriver-flag-to-prevent-selenium-detec
+ edge_options.add_experimental_option('excludeSwitches', ['enable-automation'])
+ edge_options.add_experimental_option('useAutomationExtension', False)
+ edge_options.add_argument('lang=zh-CN,zh,zh-TW,en-US,en')
+ edge_options.add_argument("disable-blink-features=AutomationControlled")#就是这一行告诉chrome去掉了webdriver痕迹
+
+ #https://stackoverflow.com/questions/56897041/how-to-save-opened-page-as-pdf-in-selenium-python
+ # settings = {
+ # "recentDestinations": [{
+ # "id": "Save as PDF",
+ # "origin": "local",
+ # "account": "",
+ # }],
+ # "selectedDestinationId": "Save as PDF",
+ # "version": 2
+ # }
+ # prefs = {'printing.print_preview_sticky_settings.appState': json.dumps(settings)}
+ # edge_options.add_experimental_option('prefs', prefs)
+ # edge_options.add_argument('--kiosk-printing')
+
+ # https://www.selenium.dev/documentation/webdriver/drivers/options/#pageloadstrategy
+ # https://stackoverflow.com/questions/44503576/selenium-python-how-to-stop-page-loading-when-certain-element-gets-loaded
+ # edge_options.add_argument(page_load_strategy, 'normal')
+ if strategy:
+ edge_options.page_load_strategy = 'none'
+ # cap = DesiredCapabilities.EDGE
+ # cap['pageLoadStrategy'] = 'none'
+
+ driver = webdriver.Edge(options=edge_options, service = service)
+ driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")
+ driver.execute_cdp_cmd('Network.setUserAgentOverride', {"userAgent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.53 Safari/537.36'})
+
+ return driver
+
+def login(driver):
+ driver.find_elements(By.CLASS_NAME, "SignFlow-tab")[1].click()
+ # driver.find_elements(By.CLASS_NAME, "username-input")[0].send_keys("")
+ # driver.find_elements(By.CLASS_NAME, "username-input")[1].send_keys("")
+ # driver.find_element(By.CLASS_NAME, "SignFlow-submitButton").click()
+ WebDriverWait(driver, timeout=60).until(lambda d:d.find_element(By.CLASS_NAME, "TopstoryTabs-link"))
+ return driver
+
+def crawl_article_links(driver:webdriver, username:str):
+ #crawl articles links
+ articles = r'https://www.zhihu.com/people/zoujiu1/posts'
+ articles_one = r'https://www.zhihu.com/people/zoujiu1/posts?page='
+ article_detail = r'https://zhuanlan.zhihu.com/p/'
+
+ driver.get(articles.replace("zoujiu1", username))
+ pages = driver.find_elements(By.CLASS_NAME, 'PaginationButton')[-2]
+ assert isinstance(int(pages.text), int)
+ maxpages = int(pages.text)
+
+ all_article_detail = {}
+ #how many pages of articles
+ for p in range(1, maxpages + 1):
+ driver.get(articles_one + str(p))
+ items = driver.find_elements(By.CLASS_NAME, "ArticleItem")
+ #crawl article one by one
+ for a in range(len(items)):
+ introduce = items[a].get_attribute("data-zop")
+ itemId = json.loads(introduce)
+ links = items[a].find_elements(By.TAG_NAME, 'a')[0].get_attribute('href')
+ # id = itemId['itemId']
+ title = str(itemId['title'])
+ all_article_detail[str(title)] = links #article_detail + str(id)
+ time.sleep(sleeptime)
+ with open(os.path.join(articledir, 'article.txt'), 'w', encoding='utf-%d'%(6+2)) as obj:
+ for key, val in all_article_detail.items():
+ obj.write(val + " " + key + '\n')
+
+def crawl_answers_links(driver:webdriver, username:str):
+ #crawl answers links
+ answer = r'https://www.zhihu.com/people/zoujiu1/answers'
+ answer_one = r'https://www.zhihu.com/people/zoujiu1/answers?page='
+
+ driver.get(answer.replace("zoujiu1", username))
+ WebDriverWait(driver, timeout=10).until(lambda d: d.find_element(By.CLASS_NAME, "Pagination"))
+ pages = driver.find_elements(By.CLASS_NAME, 'PaginationButton')[-2]
+ assert isinstance(int(pages.text), int)
+ maxpages = int(pages.text)
+
+ all_answer_detail = []
+ #how many pages of answers
+ for p in range(1, maxpages + 1):
+ driver.get(answer_one + str(p))
+ WebDriverWait(driver, timeout=10).until(lambda d: d.find_element(By.CLASS_NAME, "Pagination"))
+ items = driver.find_elements(By.CLASS_NAME, "AnswerItem")
+ #crawl answer one by one
+ for i in range(len(items)):
+ introduce = items[i].get_attribute("data-zop")
+ itemId = json.loads(introduce)
+ id = itemId['itemId']
+ title = str(itemId['title'])
+ links = items[i].find_elements(By.TAG_NAME, 'a')[0].get_attribute('href')
+ all_answer_detail.append([links, str(title)])
+ time.sleep(sleeptime)
+ with open(os.path.join(answerdir, 'answers.txt'), 'w', encoding='utf-8') as obj:
+ for links, title in all_answer_detail:
+ obj.write(links + " " + title + '\n')
+
+def crawl_think_links(driver:webdriver, username:str):
+ #crawl think links
+ think = r'https://www.zhihu.com/people/zoujiu1/pins'
+ think_one = r'https://www.zhihu.com/people/zoujiu1/pins?page='
+
+ driver.get(think.replace("zoujiu1", username))
+ WebDriverWait(driver, timeout=10).until(lambda d: d.find_element(By.CLASS_NAME, "Pagination"))
+ pages = driver.find_elements(By.CLASS_NAME, 'PaginationButton')[-2]
+ assert isinstance(int(pages.text), int)
+ maxpages = int(pages.text)
+
+ # all_think_detail = []
+ #how many pages of think
+ for p in range(1, maxpages + 1):
+ driver.get(think_one + str(p))
+ WebDriverWait(driver, timeout=10).until(lambda d: d.find_element(By.CLASS_NAME, "Pagination"))
+ items = driver.find_elements(By.CLASS_NAME, "PinItem")
+ #crawl answer one by one
+ for i in range(len(items)):
+ RichContent = items[i].find_element(By.CLASS_NAME, 'RichContent-inner')
+ clockitem = items[i].find_element(By.CLASS_NAME, 'ContentItem-time')
+ try:
+ WebDriverWait(items[i], timeout=10).until(lambda d: len(d.text) > 2)
+ except:
+ driver.get(think_one + str(p))
+ WebDriverWait(driver, timeout=10).until(lambda d: d.find_element(By.CLASS_NAME, "Pagination"))
+ items = driver.find_elements(By.CLASS_NAME, "PinItem")
+ RichContent = items[i].find_element(By.CLASS_NAME, 'RichContent-inner')
+ clockitem = items[i].find_element(By.CLASS_NAME, 'ContentItem-time')
+ WebDriverWait(items[i], timeout=10).until(lambda d: len(d.text) > 2)
+ # clockspan = clockitem.find_element(By.TAG_NAME, 'span')
+ clock = clockitem.text
+ clock = clock[3 + 1:].replace(" ", "_").replace(":", "_")
+ dirthink = os.path.join(thinkdir, clock)
+ if os.path.exists(dirthink):
+ continue
+ os.makedirs(dirthink, exist_ok=True)
+ try:
+ RichContent.find_element(By.CLASS_NAME, 'Button').click()
+ WebDriverWait(items[i], timeout=10).until(lambda d: d.find_element(By.CLASS_NAME, "RichContent-inner"))
+ RichContent = items[i].find_element(By.CLASS_NAME, 'RichContent-inner')
+ except:
+ pass
+ content = RichContent.find_element(By.CLASS_NAME, 'RichText')
+ # time.sleep(sleeptime)
+ links_col = content.find_elements(By.TAG_NAME, 'a')
+ links = []
+ for itext in links_col:
+ links.append(itext.get_attribute("href"))
+ text = content.text.strip()
+ if len(text)!=0:
+ with open(os.path.join(dirthink, clock+".txt"), 'w', encoding='utf-8') as obj:
+ obj.write(text.replace("
", '\n').replace("
", '\n')+"\n")
+ for itext in links:
+ obj.write(itext + "\n")
+ # all_think_detail.append([text])
+ try:
+ items[i].find_elements(By.CLASS_NAME, 'Image-PreviewVague')[0].click()
+ except:
+ continue
+ cnt = 0
+ while True:
+ WebDriverWait(driver, timeout=10).until(lambda d: d.find_element(By.CLASS_NAME, "ImageGallery-Inner"))
+ img = driver.find_element(By.CLASS_NAME, 'ImageGallery-Inner').find_element(By.TAG_NAME, 'img')
+ imglink = img.get_attribute('data-original')
+ try:
+ response = requests.get(imglink, timeout=30)
+ except:
+ try:
+ response = requests.get(imglink, timeout=30)
+ except:
+ continue
+ if response.status_code==200:
+ with open(os.path.join(dirthink, clock + "_" + str(cnt) + '.jpg'), 'wb') as obj:
+ obj.write(response.content)
+ cnt += 1
+ time.sleep(sleeptime)
+ try:
+ disable = driver.find_element(By.CLASS_NAME, 'ImageGallery-arrow-right')
+ if 'disabled' in disable.get_attribute('class'):
+ driver.find_element(By.CLASS_NAME, 'ImageGallery-close').click()
+ break
+ else:
+ disable.click()
+ except:
+ break
+ time.sleep(sleeptime)
+ dealthink(thinkdir)
+
+def crawl_article_detail(driver:webdriver):
+ website_col = {}
+ for i in os.listdir(articledir):
+ try:
+ kk = int(i)
+ shutil.rmtree(os.path.join(articledir, i))
+ except:
+ pass
+ with open(os.path.join(articledir, 'article.txt'), 'r', encoding='utf-8') as obj:
+ for i in obj.readlines():
+ i = i.strip()
+ ind = i.index(" ")
+ website = i[:ind]
+ title = i[ind+1:].replace(" ", "_").replace("\n", "")
+ website_col[website] = title
+ for website, title in website_col.items():
+ nam = title.replace(":", "_").replace("?", ";"). \
+ replace("/","_").replace("\\","_").replace("\"", "_").\
+ replace("*","_").replace("|", "_").replace(" ", "_")
+ temp_name = str(np.random.randint(999999999)) + str(np.random.randint(999999999))
+ # nam_pinyin = pinyin.get(nam, format='numerical')
+ # if '泰勒公式使用积分来推导' not in title:
+ # continue
+ dircrea = os.path.join(articledir, temp_name)
+ fileexit = os.path.exists(os.path.join(articledir, nam, nam + ".pdf"))
+ if fileexit:
+ filesize = os.path.getsize(os.path.join(articledir, nam, nam + ".pdf"))
+ direxit = os.path.exists(os.path.join(articledir, nam))
+
+ if direxit and not fileexit:
+ os.remove(os.path.join(articledir, nam))
+ if direxit and fileexit and filesize > 0:
+ continue
+ if direxit and fileexit and filesize == 0:
+ os.remove(os.path.join(articledir, nam, nam + ".pdf"))
+ os.remove(os.path.join(articledir, nam))
+ os.makedirs(dircrea, exist_ok = True)
+ original_window = driver.current_window_handle
+
+ #get math formuladriver.find_element(By.ID, 'Popover15-toggle').click()
+ driverkk = edgeopen(driverpath, strategy=True)
+ pyautogui.press(["Enter", "Enter", "Enter"])
+ driverkk.get(r"https://www.zhihu.com/signin")
+ try:
+ load_cookie(driverkk, cookie_path)
+ driverkk.get(website)
+ except:
+ driverkk = login(driverkk)
+ save_cookie(driverkk, cookie_path)
+
+ #get math formula
+ # pyautogui.press(["Enter", "Enter", 'enter'])
+ # pyautogui.hotkey("ctrl", "l")
+ # pyautogui.hotkey("ctrl", "l")
+ # pyautogui.write(website, 0.01)
+ # pyautogui.hotkey("ctrl", "l")
+ # pyautogui.press(["enter", 'enter', 'enter'])
+ # time.sleep(formula_time)
+ try:
+ WebDriverWait(driverkk, timeout=10).until(lambda d: d.find_element(By.CLASS_NAME, "ztext-math"))
+ except:
+ pass
+ driverkk.execute_script("window:stop();")
+ richtext = driverkk.find_element(By.CLASS_NAME, "Post-RichText")
+ # pyautogui.press(["esc", "esc", "esc", "esc", "esc", "esc"])
+ # matherr = -1
+ # try:
+ # richtext = driver.find_element(By.CLASS_NAME, "Post-RichText")
+ # MathJax_SVG = driver.find_elements(By.CLASS_NAME, "MathJax_SVG")
+ # if len(MathJax_SVG) > 0:
+ # matherr = 1
+ # raise ValueError("")
+ # except:
+ # pyautogui.hotkey("ctrl", "l")
+ # pyautogui.hotkey("ctrl", "l")
+ # pyautogui.write(website, 0.01)
+ # pyautogui.press(["enter", 'enter', 'enter'])
+ # if matherr < 0:
+ # time.sleep(formula_time+0.2)
+ # else:
+ # time.sleep(max(formula_time - 0.1, 0.3))
+ # matherr = -1
+ # pyautogui.press(["esc", "esc", "esc", "esc", "esc", "esc"])
+ # try:
+ # richtext = driver.find_element(By.CLASS_NAME, "Post-RichText")
+ # MathJax_SVG = driver.find_elements(By.CLASS_NAME, "MathJax_SVG")
+ # if len(MathJax_SVG) > 0:
+ # matherr = 1
+ # raise ValueError("")
+ # except:
+ # pyautogui.hotkey("ctrl", "l")
+ # pyautogui.hotkey("ctrl", "l")
+ # pyautogui.write(website, 0.01)
+ # pyautogui.press(["enter", 'enter', 'enter'])
+ # if matherr < 0:
+ # time.sleep(formula_time+0.3)
+ # else:
+ # time.sleep(max(formula_time - 0.2, 0.3))
+ # pyautogui.press(["esc", "esc", "esc", "esc", "esc", "esc"])
+ # richtext = driver.find_element(By.CLASS_NAME, "Post-RichText")
+
+ titletext = driverkk.find_element(By.CLASS_NAME, "Post-Title")
+ textlink = []
+ tabletd = richtext.find_elements(By.TAG_NAME, "td")
+ pcontent = richtext.find_elements(By.TAG_NAME, "a")
+ time.sleep(sleeptime)
+ for i in range(len(tabletd)):
+ textlink.append(tabletd[i].text)
+ for i in range(len(pcontent)):
+ linksite = pcontent[i].get_attribute("href")
+ if linksite:
+ linksite = linksite.replace("//link.zhihu.com/?target=https%3A", "").replace("//link.zhihu.com/?target=http%3A", "")
+ textlink.append("["+pcontent[i].text+"]"+"("+linksite + ")\n")
+
+
+
+ rt = richtext.text
+ h1 = richtext.find_elements(By.TAG_NAME, "h1")
+ for i in range(len(h1)):
+ rt = rt.replace(h1[i].text.strip()+"\n", "# " + h1[i].text.strip() + "\n")
+ h2 = richtext.find_elements(By.TAG_NAME, "h2")
+ for i in range(len(h2)):
+ rt = rt.replace(h2[i].text.strip()+"\n", "## " + h2[i].text.strip() + "\n")
+ pcontent = richtext.find_elements(By.TAG_NAME, "p")
+ imgcontent = richtext.find_elements(By.TAG_NAME, "figure")
+ pcontent[0].find_elements(By.CLASS_NAME)
+ pre = 0
+ Pheight = []
+ imgheight = []
+ for i in range(len(pcontent)):
+ Pheight.append(pcontent[i].rect['y'])
+ for i in range(len(imgcontent)):
+ imgheight.append(imgcontent[i].rect['y'])
+
+ imgpre = 0
+ first = ""
+ tempstring = ""
+ tails = ""
+ number = 0
+ temptxt = ''
+ for i in range(len(pcontent)):
+ imgtext = ''
+ temptxt += pcontent[i].text
+ while True:
+ if imgpre >= len(imgheight):
+ break
+ if i==0 and \
+ imgheight[imgpre] < Pheight[i]:
+ imgtext += '''\n'''%number
+ imgpre += 1
+ number += 1
+ elif i!=len(pcontent)-1 and \
+ imgheight[imgpre] > Pheight[i] and \
+ imgheight[imgpre] < Pheight[i+1]:
+ imgtext += '''\n'''%number
+ imgpre += 1
+ number += 1
+ elif i==len(pcontent)-1 and \
+ imgheight[imgpre] > Pheight[i]:
+ imgtext += '''\n'''%number
+ imgpre += 1
+ number += 1
+ else:
+ break
+ if len(imgtext) > 0:
+ ind = rt[pre:].find(temptxt)
+ first = rt[:ind + pre + len(temptxt)]
+ tails = rt[ind + pre + len(temptxt):]
+ rt = first + imgtext + tails
+ pre = len(first) + len(imgtext)
+ temptxt = ''
+ pre = 0
+ for i in range(len(pcontent)):
+ formula_span = pcontent[i].find_elements(By.CLASS_NAME, "math-holder")
+ for j in range(len(formula_span)):
+ ele = formula_span[j]
+ # kk = ele.get_attribute('class')
+ # if kk is not None and 'ztext-math' in kk:
+ formulatxt = ele.text
+ ind = rt[pre:].find(formulatxt)
+ first = rt[:pre]
+ tempstring = rt[pre:pre + ind + len(formulatxt)]
+ tails = rt[ind + pre + len(formulatxt):]
+ tempstring = tempstring.replace(ele.text, "$" + ele.text + "$")
+ rt = first + tempstring + tails
+ pre = len(first) + len(tempstring)
+
+
+
+ rt = rt.replace("修改\n", "").replace("开启赞赏\n", "开启赞赏, ").replace("添加评论\n", "").replace("分享\n", "").\
+ replace("收藏\n", "").replace("设置\n", "")
+ tle = titletext.text
+
+ if len(textlink) + len(rt) > 0:
+ with open(os.path.join(dircrea, nam + "_formula_" + ".md"), 'w', encoding='utf-8') as obj:
+ obj.write("# " + tle+"\n\n")
+ if len(rt) > 0:
+ obj.write(rt + "\n\n\n")
+
+ for i in range(len(textlink)):
+ obj.write(textlink[i] + "\n\n")
+ driverkk.quit()
+
+ #get article text
+ driver.switch_to.window(original_window)
+ driver.get(website)
+ pyautogui.press(["Enter", "Enter", "Enter"])
+ # pyautogui.press("F5")
+ WebDriverWait(driver, timeout=10).until(lambda d: d.find_element(By.CLASS_NAME, "Post-Topics"))
+
+ #https://stackoverflow.com/questions/61877719/how-to-get-current-scroll-height-in-selenium-python
+ scrollHeight = driver.execute_script('''return document.documentElement.scrollHeight''')
+ footer = driver.find_element(By.TAG_NAME, "html")
+ scroll_origin = ScrollOrigin.from_element(footer, 0, -60)
+ ActionChains(driver).scroll_from_origin(scroll_origin, 0, -100000).perform()
+ for i in range(18):
+ ActionChains(driver).scroll_from_origin(scroll_origin, 0, scrollHeight//18).perform()
+ time.sleep(0.8)
+ pyautogui.press(["Enter", "Enter", "Enter"])
+ #remove noneed element
+ try:
+ driver.execute_script('''document.getElementsByClassName("Post-Sub")[0].remove();''')
+ except:
+ pass
+ try:
+ driver.execute_script('''document.getElementsByClassName("ColumnPageHeader-Wrapper")[0].remove();''')
+ except:
+ pass
+ try:
+ driver.execute_script('''document.getElementsByClassName("RichContent-actions")[0].remove();''')
+ except:
+ pass
+
+ richtext = driver.find_element(By.CLASS_NAME, "Post-RichText")
+ # textlink = []
+ # tabletd = richtext.find_elements(By.TAG_NAME, "td")
+ # pcontent = richtext.find_elements(By.TAG_NAME, "a")
+ time.sleep(sleeptime)
+ # for i in range(len(tabletd)):
+ # textlink.append(tabletd[i].text)
+ # for i in range(len(pcontent)):
+ # linksite = pcontent[i].get_attribute("href")
+ # if linksite:
+ # linksite = linksite.replace("//link.zhihu.com/?target=https%3A", "").replace("//link.zhihu.com/?target=http%3A", "")
+ # textlink.append(linksite + "\n" + pcontent[i].text)
+ rt = richtext.text
+
+ if len(textlink) + len(rt) > 0:
+ with open(os.path.join(dircrea, nam + ".txt"), 'w', encoding='utf-8') as obj:
+ if len(rt) > 0:
+ obj.write(rt + "\n\n\n")
+
+ for i in range(len(textlink)):
+ obj.write(textlink[i] + "\n\n")
+
+ # article image saving
+ imgchunk = richtext.find_elements(By.TAG_NAME, 'img')
+ cnt = 0
+ for i in range(len(imgchunk)):
+ imglink = imgchunk[i].get_attribute("data-original")
+ try:
+ response = requests.get(imglink, timeout=30)
+ except:
+ try:
+ response = requests.get(imglink, timeout=30)
+ except:
+ continue
+ if response.status_code==200:
+ with open(os.path.join(dircrea, str(cnt) + '.jpg'), 'wb') as obj:
+ obj.write(response.content)
+ cnt += 1
+ time.sleep(sleeptime)
+
+ # article to pdf
+ fileexit = os.path.exists(os.path.join(dircrea, temp_name + ".pdf"))
+ if fileexit:
+ os.remove(os.path.join(dircrea, temp_name + ".pdf"))
+
+ with pyautogui.hold("Ctrl"):
+ pyautogui.press("P")
+
+ time.sleep(2+addtime)
+ pyautogui.press("Enter")
+ time.sleep(2+addtime)
+ pyautogui.write(str(temp_name + ".pdf"), interval=0.01)
+ pyautogui.press(["Tab"]*6 + ["Enter"])
+ pyautogui.write(dircrea, interval=0.01)
+ pyautogui.press(["Enter"])
+ time.sleep(2+addtime)
+ pyautogui.press(["Enter", "Enter", "Enter", "Enter"])
+ time.sleep(6+addtime)
+ clocktxt = driver.find_element(By.CLASS_NAME, "Post-NormalMain").find_element(By.CLASS_NAME, "ContentItem-time")
+ time.sleep(1+addtime)
+ clock = clocktxt.text[3+1:].replace(" ", "_").replace(":", "_")
+ with open(os.path.join(dircrea, clock+".txt"), 'w', encoding='utf-8') as obj:
+ obj.write(clock)
+ try:
+ os.rename(os.path.join(dircrea, temp_name + ".pdf"), os.path.join(dircrea, nam + ".pdf"))
+ except:
+ time.sleep(3+addtime)
+ try:
+ os.rename(os.path.join(dircrea, temp_name + ".pdf"), os.path.join(dircrea, nam + ".pdf"))
+ except:
+ time.sleep(10+addtime)
+ try:
+ os.rename(os.path.join(dircrea, temp_name + ".pdf"), os.path.join(dircrea, nam + ".pdf"))
+ except:
+ time.sleep(60+addtime)
+ os.rename(os.path.join(dircrea, temp_name + ".pdf"), os.path.join(dircrea, nam + ".pdf"))
+ os.rename(dircrea, os.path.join(articledir, nam))
+
+ time.sleep(sleeptime)
+
+ #https://stackoverflow.com/questions/23359083/how-to-convert-webpage-into-pdf-by-using-python
+ #https://github.com/JazzCore/python-pdfkit
+ # if article_to_jpg_pdf_markdown:
+ # config = pdfkit.configuration(wkhtmltopdf = wkhtmltopdf_path)
+ # pdfkit.from_url(website, os.path.join(dircrea, nam_pinyin+".pdf"), configuration = config)
+
+ # time.sleep(600)
+
+def crawl_answer_detail(driver:webdriver):
+ website_col = {}
+ for i in os.listdir(answerdir):
+ try:
+ kk = int(i)
+ shutil.rmtree(os.path.join(answerdir, i))
+ except:
+ pass
+ with open(os.path.join(answerdir, 'answers.txt'), 'r', encoding='utf-8') as obj:
+ for i in obj.readlines():
+ i = i.strip()
+ ind = i.index(" ")
+ website = i[:ind]
+ title = i[ind+1:].replace(" ", "_").replace("\n", "")
+ website_col[website] = title
+ for website, title in website_col.items():
+ nam = title.replace(":", "_").replace("?", ";"). \
+ replace("/","_").replace("\\","_").replace("\"", "_").\
+ replace("*","_").replace("|", "_").replace(" ", "_")
+ temp_name = str(np.random.randint(999999999)) + str(np.random.randint(999999999))
+ # nam_pinyin = pinyin.get(nam, format='numerical')
+ if '用矩阵的初等变化来' not in title:
+ continue
+ dircrea = os.path.join(answerdir, temp_name)
+ fileexit = os.path.exists(os.path.join(answerdir, nam, nam + ".pdf"))
+ if fileexit:
+ filesize = os.path.getsize(os.path.join(answerdir, nam, nam + ".pdf"))
+ direxit = os.path.exists(os.path.join(answerdir, nam))
+
+ if direxit and not fileexit:
+ os.remove(os.path.join(answerdir, nam))
+ if direxit and fileexit and filesize > 0:
+ continue
+ if direxit and fileexit and filesize == 0:
+ os.remove(os.path.join(answerdir, nam, nam + ".pdf"))
+
+ os.remove(os.path.join(answerdir, nam))
+ os.makedirs(dircrea, exist_ok = True)
+ original_window = driver.current_window_handle
+
+ #get math formula
+ driverkk = edgeopen(driverpath, strategy=True)
+ pyautogui.press(["Enter", "Enter", "Enter"])
+ driverkk.get(r"https://www.zhihu.com/signin")
+ pyautogui.press(["Enter", "Enter", "Enter"])
+ try:
+ load_cookie(driverkk, cookie_path)
+ driverkk.get(website)
+ except:
+ driverkk = login(driverkk)
+ save_cookie(driverkk, cookie_path)
+ # pyautogui.press(["Enter", "Enter", 'enter'])
+ # pyautogui.hotkey("ctrl", "l")
+ # pyautogui.hotkey("ctrl", "l")
+ # pyautogui.write(website, 0.01)
+ # pyautogui.hotkey("ctrl", "l")
+ # pyautogui.press(["enter", 'enter', 'enter'])
+ # time.sleep(formula_time)
+ # driver.find_element(By.CLASS_NAME, "ztext-math")
+ try:
+ WebDriverWait(driverkk, timeout=10).until(lambda d: d.find_element(By.CLASS_NAME, "ztext-math"))
+ except:
+ pass
+ driverkk.execute_script("window:stop();")
+ # pyautogui.press(["esc", "esc", "esc", "esc", "esc", "esc"])
+ Created = "not found"
+ Modified = "not found"
+ QuestionAnswer = driverkk.find_element(By.CLASS_NAME, "QuestionAnswer-content")
+ richtext = QuestionAnswer.find_element(By.CLASS_NAME, "RichContent--unescapable")
+ metatext = QuestionAnswer.find_elements(By.TAG_NAME, "meta")
+ for i in range(len(metatext)):
+ if metatext[i].get_attribute("itemprop")=="dateCreated":
+ Created = metatext[i].get_attribute("content").replace(" ", "_").replace(":", "_").replace(".", "_")
+ if metatext[i].get_attribute("itemprop")=="dateModified":
+ Modified = metatext[i].get_attribute("content").replace(" ", "_").replace(":", "_").replace(".", "_")
+ # matherr = -1
+ # try:
+ # QuestionAnswer = driverkk.find_element(By.CLASS_NAME, "QuestionAnswer-content")
+ # richtext = QuestionAnswer.find_element(By.CLASS_NAME, "RichContent--unescapable")
+ # metatext = QuestionAnswer.find_elements(By.TAG_NAME, "meta")
+ # MathJax_SVG = QuestionAnswer.find_elements(By.CLASS_NAME, "MathJax_SVG")
+ # if len(MathJax_SVG) > 0:
+ # matherr = 1
+ # raise ValueError("")
+ # for i in range(len(metatext)):
+ # if metatext[i].get_attribute("itemprop")=="dateCreated":
+ # Created = metatext[i].get_attribute("content").replace(" ", "_").replace(":", "_").replace(".", "_")
+ # if metatext[i].get_attribute("itemprop")=="dateModified":
+ # Modified = metatext[i].get_attribute("content").replace(" ", "_").replace(":", "_").replace(".", "_")
+ # except:
+ # pyautogui.hotkey("ctrl", "l")
+ # pyautogui.hotkey("ctrl", "l")
+ # pyautogui.write(website, 0.01)
+ # pyautogui.press(["enter", 'enter', 'enter'])
+ # if matherr < 0:
+ # time.sleep(formula_time+0.2)
+ # else:
+ # time.sleep(max(formula_time - 0.1, 0.3))
+ # matherr = -1
+ # pyautogui.press(["esc", "esc", "esc", "esc", "esc", "esc"])
+ # try:
+ # QuestionAnswer = driverkk.find_element(By.CLASS_NAME, "QuestionAnswer-content")
+ # richtext = QuestionAnswer.find_element(By.CLASS_NAME, "RichContent--unescapable")
+ # metatext = QuestionAnswer.find_elements(By.TAG_NAME, "meta")
+ # MathJax_SVG = QuestionAnswer.find_elements(By.CLASS_NAME, "MathJax_SVG")
+ # if len(MathJax_SVG) > 0:
+ # matherr = 1
+ # raise ValueError("")
+ # for i in range(len(metatext)):
+ # if metatext[i].get_attribute("itemprop")=="dateCreated":
+ # Created = metatext[i].get_attribute("content").replace(" ", "_").replace(":", "_").replace(".", "_")
+ # if metatext[i].get_attribute("itemprop")=="dateModified":
+ # Modified = metatext[i].get_attribute("content").replace(" ", "_").replace(":", "_").replace(".", "_")
+ # except:
+ # pyautogui.hotkey("ctrl", "l")
+ # pyautogui.hotkey("ctrl", "l")
+ # pyautogui.write(website, 0.01)
+ # pyautogui.press(["enter", 'enter', 'enter'])
+ # if matherr < 0:
+ # time.sleep(formula_time+0.3)
+ # else:
+ # time.sleep(max(formula_time - 0.2, 0.3))
+ # pyautogui.press(["esc", "esc", "esc", "esc", "esc", "esc"])
+ # QuestionAnswer = driverkk.find_element(By.CLASS_NAME, "QuestionAnswer-content")
+ # richtext = QuestionAnswer.find_element(By.CLASS_NAME, "RichContent--unescapable")
+ # metatext = QuestionAnswer.find_elements(By.TAG_NAME, "meta")
+ # for i in range(len(metatext)):
+ # if metatext[i].get_attribute("itemprop")=="dateCreated":
+ # Created = metatext[i].get_attribute("content").replace(" ", "_").replace(":", "_").replace(".", "_")
+ # if metatext[i].get_attribute("itemprop")=="dateModified":
+ # Modified = metatext[i].get_attribute("content").replace(" ", "_").replace(":", "_").replace(".", "_")
+
+ textlink = []
+ tabletd = richtext.find_elements(By.TAG_NAME, "td")
+ pcontent = richtext.find_elements(By.TAG_NAME, "a")
+ time.sleep(sleeptime)
+ for i in range(len(tabletd)):
+ textlink.append(tabletd[i].text)
+ for i in range(len(pcontent)):
+ linksite = pcontent[i].get_attribute("href")
+ if linksite:
+ linksite = linksite.replace("//link.zhihu.com/?target=https%3A", "").replace("//link.zhihu.com/?target=http%3A", "")
+ textlink.append("["+pcontent[i].text+"]"+"("+linksite + ")\n")
+
+
+
+ rt = richtext.text
+ h1 = richtext.find_elements(By.TAG_NAME, "h1")
+ for i in range(len(h1)):
+ rt = rt.replace(h1[i].text.strip()+"\n", "# " + h1[i].text.strip() + "\n")
+ h2 = richtext.find_elements(By.TAG_NAME, "h2")
+ for i in range(len(h2)):
+ rt = rt.replace(h2[i].text.strip()+"\n", "## " + h2[i].text.strip() + "\n")
+ pcontent = richtext.find_elements(By.TAG_NAME, "p")
+ imgcontent = richtext.find_elements(By.TAG_NAME, "figure")
+ pcontent[0].find_elements(By.CLASS_NAME)
+ pre = 0
+ Pheight = []
+ imgheight = []
+ for i in range(len(pcontent)):
+ Pheight.append(pcontent[i].rect['y'])
+ for i in range(len(imgcontent)):
+ imgheight.append(imgcontent[i].rect['y'])
+
+ imgpre = 0
+ first = ""
+ tempstring = ""
+ tails = ""
+ number = 0
+ temptxt = ''
+ for i in range(len(pcontent)):
+ imgtext = ''
+ temptxt += pcontent[i].text
+ while True:
+ if imgpre >= len(imgheight):
+ break
+ if i==0 and \
+ imgheight[imgpre] < Pheight[i]:
+ imgtext += '''\n'''%number
+ imgpre += 1
+ number += 1
+ elif i!=len(pcontent)-1 and \
+ imgheight[imgpre] > Pheight[i] and \
+ imgheight[imgpre] < Pheight[i+1]:
+ imgtext += '''\n'''%number
+ imgpre += 1
+ number += 1
+ elif i==len(pcontent)-1 and \
+ imgheight[imgpre] > Pheight[i]:
+ imgtext += '''\n'''%number
+ imgpre += 1
+ number += 1
+ else:
+ break
+ if len(imgtext) > 0:
+ ind = rt[pre:].find(temptxt)
+ first = rt[:ind + pre + len(temptxt)]
+ tails = rt[ind + pre + len(temptxt):]
+ rt = first + imgtext + tails
+ pre = len(first) + len(imgtext)
+ temptxt = ''
+ pre = 0
+ for i in range(len(pcontent)):
+ formula_span = pcontent[i].find_elements(By.CLASS_NAME, "math-holder")
+ for j in range(len(formula_span)):
+ ele = formula_span[j]
+ # kk = ele.get_attribute('class')
+ # if kk is not None and 'ztext-math' in kk:
+ formulatxt = ele.text
+ ind = rt[pre:].find(formulatxt)
+ first = rt[:pre]
+ tempstring = rt[pre:pre + ind + len(formulatxt)]
+ tails = rt[ind + pre + len(formulatxt):]
+ tempstring = tempstring.replace(ele.text, "$" + ele.text + "$")
+ rt = first + tempstring + tails
+ pre = len(first) + len(tempstring)
+
+
+ rt = rt.replace("修改\n", "").replace("开启赞赏\n", "开启赞赏, ").replace("添加评论\n", "").replace("分享\n", "").\
+ replace("收藏\n", "").replace("设置\n", "")
+
+ if len(textlink) + len(rt) > 0:
+ with open(os.path.join(dircrea, nam + "_formula_" + ".md"), 'w', encoding='utf-8') as obj:
+ obj.write("# " + title+"\n\n")
+ obj.write("Created: " + Created + "\n")
+ obj.write("Modified: " + Modified + "\n\n")
+ if len(rt) > 0:
+ obj.write(rt + "\n\n\n")
+
+ for i in range(len(textlink)):
+ obj.write(textlink[i] + "\n\n")
+ driverkk.quit()
+
+ #get article text
+ driver.switch_to.window(original_window)
+ driver.get(website)
+ pyautogui.press(["Enter", "Enter", "Enter"])
+ # pyautogui.press("F5")
+ WebDriverWait(driver, timeout=10).until(lambda d: d.find_element(By.CLASS_NAME, "AnswerItem-editButtonText"))
+
+ #https://stackoverflow.com/questions/61877719/how-to-get-current-scroll-height-in-selenium-python
+ scrollHeight = driver.execute_script('''return document.getElementsByClassName("QuestionAnswer-content")[0].scrollHeight''')
+ footer = driver.find_element(By.TAG_NAME, "html")
+ scroll_origin = ScrollOrigin.from_element(footer, 0, 0)
+ ActionChains(driver).scroll_from_origin(scroll_origin, 0, -100000).perform()
+ for i in range(18):
+ ActionChains(driver).scroll_from_origin(scroll_origin, 0, scrollHeight//18).perform()
+ time.sleep(0.8)
+ pyautogui.press(["Enter", "Enter", "Enter"])
+ #remove noneed element
+
+ try:
+ driver.execute_script('''document.getElementsByClassName("MoreAnswers")[0].remove();''')
+ except:
+ pass
+ try:
+ driver.execute_script('''document.getElementsByClassName("ViewAll")[0].remove();''')
+ except:
+ pass
+ try:
+ driver.execute_script('''document.getElementsByClassName("ViewAll")[0].remove();''')
+ except:
+ pass
+ try:
+ driver.execute_script('''document.getElementsByClassName("AppHeader")[0].remove();''')
+ except:
+ pass
+ try:
+ driver.execute_script('''document.getElementsByClassName("Reward")[0].remove();''')
+ except:
+ pass
+ try:
+ driver.execute_script('''document.getElementsByClassName("Question-sideColumn")[0].remove();''')
+ except:
+ pass
+
+ QuestionAnswer = driver.find_element(By.CLASS_NAME, "QuestionAnswer-content")
+ richtext = QuestionAnswer.find_element(By.CLASS_NAME, "RichContent--unescapable")
+ # textlink = []
+ # tabletd = richtext.find_elements(By.TAG_NAME, "td")
+ # pcontent = richtext.find_elements(By.TAG_NAME, "a")
+ time.sleep(sleeptime)
+ # for i in range(len(tabletd)):
+ # textlink.append(tabletd[i].text)
+ # for i in range(len(pcontent)):
+ # linksite = pcontent[i].get_attribute("href")
+ # if linksite:
+ # linksite = linksite.replace("//link.zhihu.com/?target=https%3A", "").replace("//link.zhihu.com/?target=http%3A", "")
+ # textlink.append(linksite + "\n" + pcontent[i].text)
+ rt = richtext.text
+
+ if len(textlink) + len(rt) > 0:
+ with open(os.path.join(dircrea, nam + ".txt"), 'w', encoding='utf-8') as obj:
+ obj.write(title+"\n\n")
+ obj.write("Created: " + Created + "\n")
+ obj.write("Modified: " + Modified + "\n")
+ if len(rt) > 0:
+ obj.write(rt + "\n\n\n")
+
+ for i in range(len(textlink)):
+ obj.write(textlink[i] + "\n\n")
+
+ # article image saving
+ imgchunk = richtext.find_elements(By.TAG_NAME, 'img')
+ cnt = 0
+ for i in range(len(imgchunk)):
+ imglink = imgchunk[i].get_attribute("data-original")
+ try:
+ response = requests.get(imglink, timeout=30)
+ except:
+ try:
+ response = requests.get(imglink, timeout=30)
+ except:
+ continue
+ if response.status_code==200:
+ with open(os.path.join(dircrea, str(cnt) + '.jpg'), 'wb') as obj:
+ obj.write(response.content)
+ cnt += 1
+ time.sleep(sleeptime)
+
+ # article to pdf
+ fileexit = os.path.exists(os.path.join(dircrea, temp_name + ".pdf"))
+ if fileexit:
+ os.remove(os.path.join(dircrea, temp_name + ".pdf"))
+
+ with pyautogui.hold("Ctrl"):
+ pyautogui.press("P")
+
+ time.sleep(2+addtime)
+ pyautogui.press("Enter")
+ time.sleep(2+addtime)
+ pyautogui.write(str(temp_name + ".pdf"), interval=0.01)
+ pyautogui.press(["Tab"]*6 + ["Enter"])
+ pyautogui.write(dircrea, interval=0.01)
+ pyautogui.press(["Enter"])
+ time.sleep(2+addtime)
+ pyautogui.press(["Enter", "Enter", "Enter", "Enter"])
+ time.sleep(6+addtime)
+ # clocktxt = driver.find_element(By.CLASS_NAME, "Post-NormalMain").find_element(By.CLASS_NAME, "ContentItem-time")
+ time.sleep(1+addtime)
+ clock = Created #clocktxt.text[3+1:].replace(" ", "_").replace(":", "_")
+ with open(os.path.join(dircrea, clock+".txt"), 'w', encoding='utf-8') as obj:
+ obj.write(clock)
+ try:
+ os.rename(os.path.join(dircrea, temp_name + ".pdf"), os.path.join(dircrea, nam + ".pdf"))
+ except:
+ time.sleep(3+addtime)
+ try:
+ os.rename(os.path.join(dircrea, temp_name + ".pdf"), os.path.join(dircrea, nam + ".pdf"))
+ except:
+ time.sleep(10+addtime)
+ try:
+ os.rename(os.path.join(dircrea, temp_name + ".pdf"), os.path.join(dircrea, nam + ".pdf"))
+ except:
+ time.sleep(60+addtime)
+ os.rename(os.path.join(dircrea, temp_name + ".pdf"), os.path.join(dircrea, nam + ".pdf"))
+ os.rename(dircrea, os.path.join(answerdir, nam))
+ time.sleep(sleeptime)
+ #https://stackoverflow.com/questions/23359083/how-to-convert-webpage-into-pdf-by-using-python
+ #https://github.com/JazzCore/python-pdfkit
+ # if article_to_jpg_pdf_markdown:
+ # config = pdfkit.configuration(wkhtmltopdf = wkhtmltopdf_path)
+ # pdfkit.from_url(website, os.path.join(dircrea, nam_pinyin+".pdf"), configuration = config)
+
+ time.sleep(600)
+
+def zhihu(driverpath, cookie_path):
+ website = r"https://www.zhihu.com/signin"
+
+ #login and save cookies of zhihu
+ driver = edgeopen(driverpath)
+ driver.get(website)
+ try:
+ load_cookie(driver, cookie_path)
+ driver.get(website)
+ except:
+ driver = login(driver)
+ save_cookie(driver, cookie_path)
+ pyautogui.press(["Enter"]*10)
+ driver.find_element(By.ID, 'Popover15-toggle').click()
+ driver.find_element(By.CLASS_NAME, 'Menu-item').click()
+ url = driver.current_url
+ username = url.split("/")[-1]
+
+ # #crawl think links
+ if crawl_think:
+ crawl_think_links(driver, username)
+
+ # #crawl articles links
+ if crawl_article:
+ if not os.path.exists(os.path.join(articledir, 'article.txt')):
+ crawl_article_links(driver, username)
+ else:
+ if crawl_links_scratch:
+ nowtime = datetime.fromtimestamp(time.time()).isoformat().replace(":", "_")
+ os.rename(os.path.join(articledir, 'article.txt'), os.path.join(articledir, 'article_%s.txt'%nowtime))
+ crawl_article_links(driver, username)
+ else:
+ pass
+ crawl_article_detail(driver)
+
+ # #crawl answers links
+ if crawl_answer:
+ if not os.path.exists(os.path.join(answerdir, 'answers.txt')):
+ crawl_answers_links(driver, username)
+ else:
+ if crawl_links_scratch:
+ nowtime = datetime.fromtimestamp(time.time()).isoformat().replace(":", "_")
+ os.rename(os.path.join(answerdir, 'answers.txt'), os.path.join(answerdir, 'answers_%s.txt'%nowtime))
+ crawl_answers_links(driver, username)
+ else:
+ pass
+ crawl_answer_detail(driver)
+
+ driver.quit()
+
+if __name__ == "__main__":
+ #version four.one_zero.zero
+ driverpath = os.path.join(abspath, 'msedgedriver\msedgedriver.exe')
+ savepath = deepcopy(abspath)
+ cookiedir = os.path.join(savepath, 'cookie')
+ thinkdir = os.path.join(savepath, 'think')
+ answerdir = os.path.join(savepath, 'answer')
+ articledir = os.path.join(savepath, 'article')
+ os.makedirs(cookiedir, exist_ok=True)
+ os.makedirs(thinkdir, exist_ok=True)
+ os.makedirs(answerdir, exist_ok=True)
+ os.makedirs(articledir, exist_ok=True)
+ cookie_path =os.path.join(cookiedir, 'cookie_zhihu.pkl')
+
+ parser = argparse.ArgumentParser(description=r'crawler zhihu.com, 爬取知乎的想法, 回答, 文章, 包括数学公式')
+ parser.add_argument('--sleep_time', type=float, default = 2, \
+ help=r'crawler sleep time during crawling, 爬取时的睡眠时间, 避免给知乎服务器带来太大压力, \
+ 可以日间调试好,然后深夜运行爬取人少, 给其他小伙伴更好的用户体验, 避免知乎顺着网线过来找人, 默认: 2s')
+ # parser.add_argument('--formula_time', type=float, default=0.6-0.2, \
+ # help=r'crawler math formula sleep time,default:0.6-0.2, 爬取数学公式页面, 需要的sleep时间, 默认0.6-0.2')
+ parser.add_argument('--computer_time_sleep', type=float, default=0, \
+ help=r'computer running sleep time 默认:0, 电脑运行速度的sleep时间, 默认:0')
+ parser.add_argument('--think', action="store_true", help=r'crawl think, 是否爬取知乎的想法, 已经爬取过的想法不会重复爬取, 所以可以多次爬取断了也没关系')
+ parser.add_argument('--answer', action="store_true", help=r'crawl answer, 是否爬取知乎的回答, 保存到pdf、markdown以及相关图片等,已经爬取过的不会重复爬取,\
+ 断了再次爬取的话,可以配置到--links_scratch,事先保存好website')
+ parser.add_argument('--article', action="store_true", help=r'crawl article, 是否爬取知乎的文章, 保存到pdf、markdown以及相关图片等,已经爬取过的不会重复爬取,\
+ 断了再次爬取的话,可以配置到--links_scratch,事先保存好website')
+ # parser.add_argument('--article_to_jpg_pdf_markdown', action="store_true", help=r'save article to pdf, 文章保存到pdf和markdown以及图片等')
+ parser.add_argument('--links_scratch', action="store_true", \
+ help=r'crawl links scratch for answer or article, 是否使用已经保存好的website和title, 否则再次爬取website')
+ args = parser.parse_args()
+ sleeptime = args.sleep_time
+ crawl_think = args.think
+ crawl_answer = args.answer
+ crawl_article = args.article
+ crawl_links_scratch = args.links_scratch
+ # article_to_jpg_pdf_markdown = args.article_to_jpg_pdf_markdown
+ addtime = args.computer_time_sleep
+ # formula_time = args.formula_time
+
+
+ # crawl_think = True
+ # crawl_article = True
+ crawl_answer = True
+ # crawl_links_scratch = True
+ # python.exe c:/Users/10696/Desktop/access/zhihu/crawler.py --sleep_time 1 --think --links_scratch
+ # python.exe c:/Users/10696/Desktop/access/zhihu/crawler.py --sleep_time 1 --article --links_scratch
+ # python.exe c:/Users/10696/Desktop/access/zhihu/crawler.py --sleep_time 1 --answer --links_scratch
+ # python.exe c:/Users/10696/Desktop/access/zhihu/crawler.py --sleep_time 1 --think --answer --article --links_scratch
+ zhihu(driverpath, cookie_path)
\ No newline at end of file
diff --git a/requirement.txt b/requirement.txt
new file mode 100644
index 0000000..09482f0
Binary files /dev/null and b/requirement.txt differ
diff --git a/showimg/add1.png b/showimg/add1.png
new file mode 100644
index 0000000..ec948e5
Binary files /dev/null and b/showimg/add1.png differ
diff --git a/showimg/answer1.png b/showimg/answer1.png
new file mode 100644
index 0000000..67fff4e
Binary files /dev/null and b/showimg/answer1.png differ
diff --git a/showimg/answer2.png b/showimg/answer2.png
new file mode 100644
index 0000000..73b2f02
Binary files /dev/null and b/showimg/answer2.png differ
diff --git a/showimg/answer3.png b/showimg/answer3.png
new file mode 100644
index 0000000..f1f6e8c
Binary files /dev/null and b/showimg/answer3.png differ
diff --git a/showimg/answer4.png b/showimg/answer4.png
new file mode 100644
index 0000000..fa57b38
Binary files /dev/null and b/showimg/answer4.png differ
diff --git a/showimg/article1.png b/showimg/article1.png
new file mode 100644
index 0000000..8a4b83e
Binary files /dev/null and b/showimg/article1.png differ
diff --git a/showimg/article2.png b/showimg/article2.png
new file mode 100644
index 0000000..c9b9e30
Binary files /dev/null and b/showimg/article2.png differ
diff --git a/showimg/article3.png b/showimg/article3.png
new file mode 100644
index 0000000..537c24f
Binary files /dev/null and b/showimg/article3.png differ
diff --git a/showimg/article4.png b/showimg/article4.png
new file mode 100644
index 0000000..7be04f9
Binary files /dev/null and b/showimg/article4.png differ
diff --git a/showimg/article5.png b/showimg/article5.png
new file mode 100644
index 0000000..aed3701
Binary files /dev/null and b/showimg/article5.png differ
diff --git a/showimg/condarc.png b/showimg/condarc.png
new file mode 100644
index 0000000..71df23c
Binary files /dev/null and b/showimg/condarc.png differ
diff --git a/showimg/login.png b/showimg/login.png
new file mode 100644
index 0000000..ed52949
Binary files /dev/null and b/showimg/login.png differ
diff --git a/showimg/miniconda.png b/showimg/miniconda.png
new file mode 100644
index 0000000..6efb5db
Binary files /dev/null and b/showimg/miniconda.png differ
diff --git a/showimg/think1.png b/showimg/think1.png
new file mode 100644
index 0000000..20eb179
Binary files /dev/null and b/showimg/think1.png differ
diff --git a/showimg/think2.png b/showimg/think2.png
new file mode 100644
index 0000000..99aced3
Binary files /dev/null and b/showimg/think2.png differ
diff --git a/showimg/think3.png b/showimg/think3.png
new file mode 100644
index 0000000..518b026
Binary files /dev/null and b/showimg/think3.png differ
diff --git a/think/2023-01-21_13_01/2023-01-21_13_01.txt b/think/2023-01-21_13_01/2023-01-21_13_01.txt
new file mode 100644
index 0000000..2b90853
--- /dev/null
+++ b/think/2023-01-21_13_01/2023-01-21_13_01.txt
@@ -0,0 +1 @@
+6---饱的
diff --git a/think/2023-01-21_13_01/2023-01-21_13_01_0.jpg b/think/2023-01-21_13_01/2023-01-21_13_01_0.jpg
new file mode 100644
index 0000000..5bf331a
Binary files /dev/null and b/think/2023-01-21_13_01/2023-01-21_13_01_0.jpg differ
diff --git a/think/2023-01-21_13_01/2023-01-21_13_01_1.jpg b/think/2023-01-21_13_01/2023-01-21_13_01_1.jpg
new file mode 100644
index 0000000..f5db474
Binary files /dev/null and b/think/2023-01-21_13_01/2023-01-21_13_01_1.jpg differ
diff --git a/thinkdeal.py b/thinkdeal.py
new file mode 100644
index 0000000..063cebd
--- /dev/null
+++ b/thinkdeal.py
@@ -0,0 +1,23 @@
+#################
+###ZouJiu-202306
+#################
+
+import os
+
+def dealthink(inpath):
+ dic = {}
+ for root, dirk, files in os.walk(inpath):
+ for i in files:
+ if '.txt' not in i:
+ continue
+ with open(os.path.join(root, i), 'r', encoding='utf-8') as obj:
+ kk = obj.read()
+ dic[i] = kk
+ dic = sorted(dic.items(), key= lambda k:k[0])
+ with open(os.path.join(inpath, 'all_txt.txt'), 'w', encoding='utf-8') as obj:
+ for key, value in dic:
+ obj.write(key+"\n"+value+"\n")
+
+if __name__=="__main__":
+ inpath = r'C:\Users\10696\Desktop\access\zhihu\think'
+ dealthink(inpath)
\ No newline at end of file