源码已放GitHub:zhihuexplore
此次使用到的库有四个
请求+解析
urljoin为urllib库里面的一个整合相对链接的方法
可以对链接进行一个合并
利用了beautifulsoup的正则表达式查找
首先分析目标
可以看到每一个问题的链接都会有/question这个相对目录,而每一个专题则是/special
这样可以进行正则表达式的构造:^/question
可以非常快速的进行定位
question_regex = re.compile(r"^/question")
special_regex = re.compile(r"^/special")
利用正则表达式定位到a标签,之后使用bs对象的.attrs定位他的链接属性
.attrs["href"]
再使用urljoin进行拼接:
urljoin(init_url,a_q.attrs["href"])
即可获得完整链接
再利用.string获取问题的文本,写成字典格式一一对应
links_question[a_q.string]=urljoin(init_url,a_q.attrs["href"])
最后将字典写入文本当中