用BeautifulSoup爬取豆瓣的电影排行榜,并用xlwt把数据保存成excel

来源:互联网 发布:神华低碳研究所 知乎 编辑:程序博客网 时间:2024/06/05 18:19

用BeautifulSoup爬取豆瓣的电影排行榜,并用xlwt把数据保存成excel

大家好,这是我的第一篇博文,如有不当之处请各位谅解并及时指出!
python强大的第三方module,使他成为网络爬虫和各种数据分析的首选工具.

工具

安装了pydev的eclipse(具体的安装pydev和使用方式请百度或者Google),如果你习惯用sublime text,可以使用sublime编辑,然后在eclipse上编译运行

步骤

1.爬取网页豆瓣高分电影榜的内容

根据网页上的信息

image

我们建立一个DouBanItem的类,把要爬取的项目列出来,这里我是这样设置的

class DouBanItem(object):"""docstring for DouBanItem"""    name = None    point = None    director = None    staring = None    type = None    country = None    year = None

相信用过scrapy框架的应该有点熟悉这种方式。

2.然后再建立一个GetDouBanMovie类,这里面是整个project的核心,包括url的构造,response的获取,以及内容的抓取,这里我还设置了一个下载函数,用于生成.txt文件。
所以我设置的函数有以下几个

def __init__(self)def getUrls(self)def getResponseContent(self,url)def spider(self,urls)def piplines(self,items)

def getUrls(self)函数里面

image

image

我截取前两页的url,可以看出第一张和第二张的区别在于’start=’后面的数字,说明每个url的间隔是一个step = 25

image

而这里总共有12页,所以问题就很简单了,构造一个urls = [],里面有12个url。
具体的源码我会上传到github,大家可以自行下载参考。

不过在spider函数里我遇到一个问题,想在这里和大家分享一下:
在https://www.douban.com/doulist/240962/?start=0&sort=seq&sub_type=“>(其中一个url的源代码)中,我要获取的item中包括这几个

导演: 弗兰克·德拉邦特主演: 蒂姆·罗宾斯 / 摩根·弗里曼 / 鲍勃·冈顿类型: 犯罪 / 剧情制片国家/地区: 美国年份: 1994

但是用以下代码

content = tag.find('div',attrs={'class':"abstract"})details = content.get_text()

执行后的details结果为

'导演: 弗兰克·德拉邦特         主演: 让·雷诺/娜塔莉·波特曼/加里·奥德曼      类型: 剧情/动作/犯罪         制片国家/地区: 法国      年份: 1994'

它是一个字符串。(注意这里每个冒号后面都有一个空格,这让我很头疼)

而我需要获取的只是每个冒号后面的内容。
所以我加了以下的代码

details = details.replace(' ','').split()

第一次replace后details还是一个字符串,只不过冒号后面的空格不见了
结果如下:

'导演:弗兰克·德拉邦特       主演:让·雷诺/娜塔莉·波特曼/加里·奥德曼       类型:剧情/动作/犯罪         制片国家/地区:法国       年份:1994'

第二次使用split()后,details就变成了一个list,即

['导演:弗兰克·德拉邦特','主演:让·雷诺/娜塔莉·波特曼/加里·奥德曼','类型:剧情/动作/犯罪','制片国家/地区:法国','年份:1994']

接下来就好办了,分别使用五个split(‘:’)[1],把冒号后面的内容提取到相应的item上

item.director = details[0].split(':')[1]item.staring = details[1].split(':')[1]item.type = details[2].split(':')[1]item.country = details[3].split(':')[1]item.year = details[4].split(':')[1]

3.使用xlwt把数据保存成一个excel文件所以我又建立了一个saveExcel3.py文件,里面是xlwt的一些基本用法,语法不是很难,只要大家不要把坐标和相应的内容填错就没什么问题。具体的我就不再赘述,大家可以参考我的源码。

4.同时里面有一个log.py文件,他是用于记录运行过程中的各种信息,以便我们知道爬取数据和保存数据成功或者失败的信息,它适用于其他project,大家可以灵活使用。

5.最后整个project的整体框架和运行结果如下如下:


这是eclipse的框架图,没有把excel文件显示出来,我也不知道为什么…


这是在sublime text3上的框架图,(sublime 是我最喜欢的编辑器,没有之一)

image


这是在文件里面的框架,这里显示的比较全面

image


这是在sublime显示的txt文件部分数据,贴出来只是因为它比较好看

image


这是部分表格的数据

image

具体的大家可以在我的GitHub上查看源代码

最后这是我的第一篇博文,如有缺漏或者错误之处,还请各位海涵,并帮我指出错误。谢谢!!!

阅读全文
1 0
原创粉丝点击