环境配置好之后,我们便可以开心地撸爬虫了
框架思路
首先我们随便找一个分类地址,外语学习 – 爱问知识人:http://iask.sina.com.cn/c/978-all-1.html,打开之后可以看到一系列的问题列表。
我们在这个页面需要获取的东西有:
总的页码数,每一页的所有问题链接。
接下来我们需要遍历所有的问题,来抓取每一个详情页面,提取问题,问题内容,回答者,回答时间,回答内容。
最后,我们需要把这些内容存储到数据库中。
要点简析
其实大部分内容相信大家会了前面的内容,这里的爬虫思路已经融汇贯通了,这里就说一下一些扩展的功能
1.日志输出
日志输出,我们要输出时间和爬取的状态,比如像下面这样:
[2015-08-10 03:05:20] 113011 号问题存在其他答案 我个人认为应该是樱桃沟很美的
[2015-08-10 03:05:20] 保存到数据库,此问题的ID为 113011
[2015-08-10 03:05:20] 当前爬取第 2 的内容,发现一个问题 百度有一个地方,花儿带着芳香,水儿流淌奔腾是什么意思 多多帮忙哦 回答数量 1
[2015-08-10 03:05:19] 保存到数据库,此问题的ID为 113010
所以,我们需要引入时间函数,然后写一个获取当前时间的函数

以上分别是获取带具体时间和获取日期的函数,在输出时,我们可以在输出语句的前面调用这函数即可。
然后我们需要将缓冲区设置输出到log中,在程序的最前面加上这两句即可

这样,所有的print语句输出的内容就会保存到out.log文件中了。
2.页码保存
爬虫爬取过程中可能出现各种各样的错误,这样会导致爬虫的中断,如果我们重新运行爬虫,那么就会导致爬虫从头开始运行了,这样显然是不合理的。所以,我们需要把当前爬取的页面保存下来,比如可以保存到文本中,假如爬虫中断了,重新运行爬虫,读取文本文件的内容,接着爬取即可。
大家可以稍微参考一下函数的实现:

这样,不管我们爬虫中途遇到什么错误,妈妈也不会担心了
3.页面处理
页面处理过程中,我们可能遇到各种各样奇葩的HTML代码,和上一节一样,我们沿用一个页面处理类即可。

我们可以用一段含有HTML代码的文字,经过调用replace方法之后,各种冗余的HTML代码就会处理好了。
比如我们这么一段代码:

经过处理后便会变成如下的样子:

经过上面的处理,所有乱乱的代码都会被处理好了。
4.保存到数据库
在这里,我们想实现一个通用的方法,就是把存储的一个个内容变成字典的形式,然后执行插入语句的时候,自动构建对应的sql语句,插入数据。
比如我们构造如下的字典:

构造sql语句并插入到数据库的方法如下:

(1)Python所有方向的学习路线(新版)
这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
最近我才对这些路线做了一下新的更新,知识体系更全面了。

(2)Python学习视频
包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。

(3)100多个练手项目
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
很难做到真正的技术提升。**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

被折叠的 条评论
为什么被折叠?



