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

出  处:微信公众号:自动化软件测试平台

版权说明:欢迎转载,但必须注明出处,并在文章页面明显位置给出文章链接

 

猜你喜欢

转载自www.cnblogs.com/testfan2019/p/12525862.html
今日推荐