大三python就有开设过python课程,而且在平时逛知乎时便体会到了python的强大。这一次在学习了《Python网络爬虫与信息提取》的课程后,我逐渐将“爬虫”这一概念通过基础的实操具化,让我对这门语言更加感兴趣了。
课程循序渐进,通过这几周的学习,我大概了解了python网络爬虫和信息提取的相关知识。嵩天老师主要是从一下几点结合案例给我们讲解: 1. Requests库:自动爬取HTML页面以及网络请求提交。2 .Robots.txt:网络爬虫排除标准。3.Beautiful Soup库:解析HTML页面。4.Re库:正则表达式详解以及提取页面关键信息。5.Projects:实战项目A/B。6.Scrapy库:网络爬虫原理介绍以及专业爬虫框架介绍。
在第一周的课件“网络爬虫之规则”中,分别介绍了requests库,网络爬虫的弊端与解决方法,运用requests库的五个实例。网络爬虫很方便和高效的从HTML网页中提取信息,并且多线程,进程模块成熟稳定,提升整个系统和分析能力。但是,网络爬虫也存在一定的弊端,首先,受限于编写水平和目的,网络爬虫将会为web服务器带来巨大的资源开销;其次,网络爬虫的法律风险;最后,网络爬虫泄露隐私,但总体来说,利仍大于弊。在最后老师提出的五个实例中,其中,从亚马逊抓取一个商品信息的实例中,很好的体现了requests库的应用。
在第二周的课件“网络爬虫的提取”中,先是详细的介绍了Beautiful Soup库,然后再介绍信息标记的三种方法,最后介绍信息提取的方法,并给出实例。三种信息标记分别是:一、XML,Internet上的应用信息交互与传递;二、JSON,移动应用云端和节点的信息通信,无法注释;三、YAML,各类系统的配置文件,有注释易读。信息提取的一般方法:一、完整解析信息的标记形式,再提取关键信息;二、无视标记形式,直接搜索关键信息;三、融合方法,结合形式解析与搜索方法,提取关键信息。实例中采用了requests-bs4路线实现中国大学排名定向爬虫。
在第三周的课件“网络爬虫之实战”中,首先对正则表达式进行了详解。利用正则表达式和re库的结合提取页面的关键信息,并把此应用到淘宝商品的实例中。在股票数据定向爬虫中,采用requests-bs4-re路线实现了股票信息爬取和存储,实现了展示爬取进程的动态滚动条。
在第四周的课件“网络爬虫之框架”中,主要讲解了Scrapy爬虫框架。与requests库相比较,Scrapy是网站级爬虫,并且是一个框架,并发性好,性能较高,requests重点在页面下载,而Scrapy重点在于爬虫结构,一般定制灵活,深度定制困难。完整配置并实现Scrapy爬虫的主要过程:1.建立工程和Spider模板;2.编写Spider;3.编写Pipeline:处理spider提取信息的后续的功能;4.配置优化:使得爬虫运行的更好。
其中最让我感兴趣的还是这是第一周的实操部分,关于其中一个案例的实操:京东商品页面的爬取
对象:https://item.jd.com/100000947807.html
1.采用get()方法,获取Response对象;
import requests
url = 'https://item.jd.com/100000947807.html'
r = requests.get(url)
print(r.status_code)
r.status_code状态码为200,获取成功。
2.采用encoding,查看编码
print(r.encoding)
结果:gbk
说明从页面的头部分就可以解析页面的编码信息
全代码
import requests url = "https://item.jd.com/100000304401.html" try: r = requests.get(url) r.raise_for_status() r.encoding = r.apparent_encoding print(r.text[:1000]) except: print("爬取失败")
其中 r.raise_for_status()在方法内部判断r.status_code是否等于200,不需要增加额外的if语句,该语句便于利用try‐except进行异常处理
网络爬虫可以做到分析教务系统网络接口,用程序在网上抢最热门的课;爬取网络公开的用户信息,并汇总出售;持续关注某个人的微博或朋友圈,自动为新发布的内容点赞等。而个人电脑中数据没有联网且没有通过Web服务器以URL形式被网络访问,则不能用爬虫获取。作为一名程序员最重要的是谨记,能爬取数据,数据的知识产权仍然受保护,商业获利将涉嫌违法,不可触碰。
通过这一次的网络爬虫的学习,我发现python是一门干练有趣的语言,而且所做的项目都很实用,但如今的我大多数只是还只是停留在表面,距离一个合格的程序员还有很大的一段距离,在接下来的学习中我将多加学习扩展一些内容补充知识,做到全面的提升。