第3次作业-MOOC学习笔记:Python网络爬虫与信息提取

1.注册中国大学MOOC
2.选择北京理工大学嵩天老师的《Python网络爬虫与信息提取》MOOC课程
3.学习完成第0周至第4周的课程内容,并完成各周作业

 

4.提供图片或网站显示的学习进度,证明学习的过程。

 

5.写一篇不少于1000字的学习笔记,谈一下学习的体会和收获。

学习笔记:

      通过一周的时间,我学习了北京理工大学嵩天老师的《Python网络爬虫与信息提取》MOOC课程的前四周内容,了解了从未知晓的Python知识。大三第一次接触Python的时候,就觉得这是一个很厉害的编程语言,它拥有强大的第三方库,以及简单、可扩展、免费、开源等特点,并在任课老师的介绍下,我初次认识到可以用Python进行网络爬虫。而这一次网络课程的学习,正是让我进一步探究Python的高级之处。

      前四周课程分别讲了网络爬虫的规则、提取、实战和框架。

      在《规则》中,我学习了Requests库以及它的7个方法,而get()方法是最常使用的方法。网络连接有风险,异常处理很重要,嵩天老师给出一个代码框架,是利用try-except的方式来实现,保证网络连接的异常能够被有效处理。另外,网络爬虫也是需要遵守一定的规则,那就是遵守Robots协议。

      在《提取》中,Beautiful Soup库是用来解析HTML和XML文档的功能库。bs4库提供了5种基本元素和3种遍历功能。XML用尖括号和标签标记信息;JSON用有类型的键值对标记信息,适合程序的使用;而YAML用无类型的键值对标记信息,适合人们理解。在实例1:中国大学排名爬虫中,我学习到一个输出对齐的小技巧,即采用中文字符的空格填充chr(12288),将它引入print中就可以。

      在《实战》中,我学习了正则表达式,它有两种调用方式:一种是re.(方法)直接调用函数,另一种是先用re.compile()函数编译成正则表达式对象,再用正则表达式对象调用函数。可以说,正则表达式能找到想提取的任何关键信息。有特征的数据可以用正则表达式库来提取,如果数据的位置比较固定,则适合用Beautiful Soup库定位到它的位置,再用正则表达式库获得内容。如果,合理地将Beautiful Soup库和正则表达式库结合起来获取内容,那么这将是一种非常不错的方法。实例3:股票数据定向爬虫,老师实现了展示爬取进程的动态滚动条,给用户一个很好的用户体验。

      在《框架》中,我了解到Scrapy框架包括“5+2”结构和三个数据流的路径,它是通过cmd命令行实现配置文件的创建,并修改相应文件的代码实现Scrapy爬虫。整个过程大致分为4个步骤,分别是:建立工程和Spider模板、编写Spider、编写Pipeline、配置优化。

      听课时,我跟着老师编写了很多实例,虽然说有源代码可以参考,但实际操作起来还是存在大大小小的问题。在“最好大学”的实例中,遇到了'NoneType' object has no attribute 'children’的问题,起初是以为requests包没有导入,后来才发现是url的原因,老师给的url是https开头,将https改为http即可。再比如,“淘宝比价获取”实例,根据老师的代码,无法读取页面信息,只有自定义表头,后来百度找到原因:在淘宝获取页面时,淘宝设置了登录验证才能访问,此时在requests请求时,需要设置cookies和user-agent,于是,我通过浏览器查看,将user-agent和cookies写入getHTMLText()中。另外,百度股票页面如今已无法访问,所以只能换成其他的股票网站来进行练习。

      虽然花的时间有点久,但总归是有所收获。比如:正则表达式库很好地支撑了文本匹配、文本替换的工作;好的程序和一般的程序,最大的差别不在于功能上,而在于用户体验,完成一个程序并不难,难就难在后续不断优化的过程。看完视频后再去做限时的题目,我感到并不容易,因为题目里很多都是细节性的问题,看视频时稍微一走神可能就会错过这个知识点,所以课后还是需要多加理解和练习。

 

posted on 2019-10-21 17:18  HiWangLu  阅读(235)  评论(0编辑  收藏  举报

导航