Python 爬虫实战入门(下)
上一篇(
跳转任意门)我们通过requests将豆瓣电影top250的网页内容都爬取下来了,但是爬取的是整个网页内容,我们需要对这些内容进行分析,只将我们需要的内容保存下来,不需要的就直接丢弃。
那在这呢,给大家介绍另外一个第三方库Beautiful Soup,这里是它的中文介绍:
https://www.crummy.com/software/BeautifulSoup/bs3/documentation.zh.html
可以大概看一下它的介绍:Beautiful Soup 是用Python写的一个HTML/XML的解析器,它可以很好的处理不规范标记并生成剖析树(parse tree)。它提供简单又常用的导航(navigating),搜索以及修改剖析树的操作。它可以大大节省你的编程时间。
那在这呢,咱们大概分析一下我们怎么对页面进行分析截取。
1.BeautifulSoup是基于标签的,所以我们第一步要准确定位到我们需要信息所在的标签。
2 .从定位的标签中提取我们需要的信息(一般在属性或者在string中)
3. 对于提取数据的简单处理
那我们照着上面的流程,对我们需要实现的程序进行分析
1. 需要准确定位到我们需要信息的标签,在这里,如果能有UI自动化基础,那就会更好理解一些,我们将标题所在的css selector拷贝出来
#content > div > div.article > ol > li:nth-child(1) > div > div.info > div.hd > a > span:nth-child(1)
2. 确认需要的信息在text属性里
那我们来简单的实现一下(test3.py):
根据打印出来的信息,我们已经可以看到,第一条信息被我们截取出来了
我们以标题为例,再来看看每一页不同信息之间的区别
第一条:#content > div > div.article > ol > li:nth-child(1) > div > div.info > div.hd > a > span:nth-child(1)
第二条:#content > div > div.article > ol > li:nth-child(2) > div > div.info > div.hd > a > span:nth-child(1)
第三条:#content > div > div.article > ol > li:nth-child(3) > div > div.info > div.hd > a > span:nth-child(1)
可以看出来,除了标红的地方不一致之外,其他的内容一毛一样,那我们可以做以下处理(test4.py):
根据打印信息,可以看到,当前单独页面的处理已经输出出来了
现在单独页面处理已经完成,接下来我们结合一下上一步的不同请求操作,和上面的页面处理,将所有的页面都来处理一下,参考以下代码(test5.py):
根据输出信息,可以看到top250的信息。到这里,其实我们的爬虫已经可以工作了。
现在,大家已经可以将豆瓣电影 top250的内容爬取下来,并提取出需要的信息,可是现在我们能看到信息并没有办法持续存储,每次需要的时候都得重新爬取。那在这呢,我们来试着将爬取出来的信息保存到本地。
那在这呢,我们需要借助文档写入来对当前内容进行保存,对文档写入的话,我们需要借助open函数来写入。
先对之前爬取出来的内容进行一下分析:
第1条信息
标题为:肖申克的救赎
评分为:9.7
标题为:希望让人自由。
第2条信息
标题为:霸王别姬
评分为:9.6
标题为:风华绝代。
第3条信息
标题为:阿甘正传
评分为:9.5
标题为:一部美国近现代史。
第4条信息
标题为:这个杀手不太冷
评分为:9.4
标题为:怪蜀黍和小萝莉不得不说的故事。
我们可以看出来,每一条信息都是比较规整的,那我们可以将这些数据存储成csv文件。
那在这里就需要将之前的代码进行一下小改动(testspider.py)
运行代码之后,可以看到当前目录下生成了一个豆瓣电影250.csv的文件,在这里要稍微注意一下,如果直接使用excel打开当前这个csv文件,会出现乱码:
我们可以使用记事本打开之后,另存为 – 选择编码为“ANSI”:再次用excel打开,就可以看到内容了
到这里,我们的Python 爬虫实战入门就告一段落,希望大家学习愉快。
本文所有代码都可以在github上下载,链接地址为:
https://github.com/chrisblue0605/testspider_for_py.git
作 者:Testfan Chris
出 处:微信公众号:自动化软件测试平台
版权说明:欢迎转载,但必须注明出处,并在文章页面明显位置给出文章链接