python爬取阳光电影的电影信息

2020-03-29  本文已影响0人  park_one

一个朋友要我帮忙写个作业,说是今天要交了。作业要求是爬虫爬取给定区间IMDb分数的电影的信息,并把信息写入一个excel文档。我也很久没写代码了,就当回顾一下知识。

看了一下,发现阳光电影应该就是之前的电影天堂,既然要爬取指定分数区间的电影,就从‘综合电影’里面入手。可是这个破网站电影信息的格式并不统一,因此不好进行统一处理,所以只能把不符合总体信息格式的数据忽略掉了(当然也可以进行处理,不过代码看起来会很臃肿)。

首先给定一个IMDb评分的输入范围以便后面过滤信息。然后对‘综合电影’的每一个分页中的信息进行爬取(这里一共有183个分页,方便起见,这个数字我直接写在代码里了):

对每一个分页,找到其中所有电影的详情链接,并进一步跳到链接页面里获取电影信息,这里用BeautifulSoup库对返回的html进行解析,找到对应标签并获取信息:

跳转到电影信息页面后,便可直接搜索相关的信息,依旧是用BeautifulSoup库进行解析,然后对得到的字符串信息进行处理。因为每个电影的信息格式不尽相同,为了免去不必要的麻烦,这里直接对信息的操作进行异常处理,将符合要求的电影信息放到一个字典里,然后将每个封装好的信息添加到数组中。这里有一个点要注意的是,一开始我把字典moviesInfo定义在了全局开头,结果每次循环添加进数组的时候,字典里的数据进行了重写,所以最后输出的数组里每组数据都是最后写入的那组数据。因为全局变量每次赋值时都会覆盖原来的数,尽管每次循环append进了数组,但理论上依然是变量。所以应该把字典改为局部变量再进行添加:

最后是将爬取到的信息写入excel文件,这里需要引用第三方库xlwt模块,首先根据数组中每个数据字典的key值写入excel表的标题,然后再把每组数据依次填入:

最后爬取分数在5-8之间的电影信息,结果如下:

execl表截图
上一篇 下一篇

猜你喜欢

热点阅读