爬取豆瓣电影top250提取电影分类进行数据分析
admin
2023-07-31 00:45:53
0

一、爬取网页,获取需要内容

我们今天要爬取的是豆瓣电影top250
页面如下所示:

我们需要的是里面的电影分类,通过查看源代码观察可以分析出我们需要的东西。直接进入主题吧!

知道我们需要的内容在哪里了,接下来就使用我们python强大的request库先获取网页内容下来吧!获取内容后,再使用一个好用的lxml库来分析网页内容,然后获取我们的内容就可以做下一步操作了。
先贴出使用request库和lxml分析的代码

12345678910111213141516171819     def get_page(i):            url = \’https://movie.douban.com/top250?start={}&filter=\’.format(i)                            html = requests.get(url).content.decode(\’utf-8\’)    # 使用request库获取网页内容                    selector = etree.HTML(html)    # 使用lxml库提取内容            \’\’\’                通过观察页面就能发现内容在
下的一部分            \’\’\’            content = selector.xpath(\’//div[@class=\”info\”]/div[@class=\”bd\”]/p/text()\’)            print(content)                    for i in content[1::2]:                print(str(i).strip().replace(\’\\n\\r\’, \’\’))                # print(str(i).split(\’/\’))                i = str(i).split(\’/\’)                  i = i[len(i) 1]                key = i.strip().replace(\’\\n\’, \’\’).split(\’ \’) # 这里的strip和replace的使用目的是去除空格和空行之类                print(key)

下的一部分 ”’ content = selector.xpath(‘//div[@class=”info”]/div[@class=”bd”]/p/text()’) print(content) for i in content[1::2]: print(str(i).strip().replace(‘nr’, ”)) # print(str(i).split(‘/’)) i = str(i).split(‘/’) i = i[len(i) – 1] key = i.strip().replace(‘n’, ”).split(‘ ‘) # 这里的strip和replace的使用目的是去除空格和空行之类 print(key)通过获取下来的内容我们发现一部电影的各项内容都是用’/’分隔着,我们只需要提取电影分类中的东西,所以我们需要使用

1 i = str(i).split(\’/\’)



来把内容分隔成几项内容,因为电影分类排在最后,所以我们通过

1 i = i[len(i) 1]



来获取分隔后的最后一项也就是我们需要的电影分类,还有最后一步我们需要完成的,因为一部电影里面一般都有多个电影分类的标签,所以我们还要继续分隔获取到的电影分类,并且观察可以知道电影分类之间只是用一个空格隔开,所以我们使用下面一行代码就可以分离出各个分类:

1 key = i.strip().replace(\’\\n\’, \’\’).split(\’ \’)

二、接下来就是保存到mysql数据库

把电影分类保存在mysql数据库以便下面进行数据分析,这里我们使用到pymysql来连接mysql数据库,首先我们需要在mysql数据库建好表:

然后我们通过pymysql把数据保存到数据库中,代码如下:
首先要连接数据库:

1234 # 连接mysql数据库conn = pymysql.connect(host = \’localhost\’, user = \’root\’, passwd = \’2014081029\’, db = \’mysql\’, charset = \’utf8\’)  # user为数据库的名字,passwd为数据库的密码,一般把要把字符集定义为utf8,不然存入数据库容易遇到编码问题cur = conn.cursor()  # 获取操作游标cur.execute(\’use douban\’)  # 使用douban这个数据库

在保存到数据库之前,我们还有一个需要做得,那就是把250部电影的分类汇总数量,所以我们定义了一个字典来统计电影分类的个数,这里的代码是get_page函数的一部分,代码如下:

123456789101112     for i in content[1::2]:        print(str(i).strip().replace(\’\\n\\r\’, \’\’)class=\”crayon-sy\”>).strip().replace(\’\\n\\r\’, \’\’)。直接进入主题吧!

知道我们需要的内容在哪里了,接下来就使用我们python强大的request库先获取网页内容下来吧!获取内容后,再使用一个好用的lxml库来分析网页内容,然后获取我们的内容就可以做下一步操作了。
先贴出使用request库和lxml分析的代码

12345678910111213141516171819     def get_page(i):            url = \’https://movie.douban.com/top250?start={}&filter=\’.format(i)                            html = requests.get(url).content.decode(\’utf-8\’)    # 使用request库获取网页内容                    selector = etree.HTML(html)    # 使用lxml库提取内容            \’\’\’                通过观察页面就能发现内容在
下的一部分            \’\’\’            content = selector.xpath(\’//div[@class=\”info\”]/div[@class=\”bd\”]/p/text()\’)            print(content)                    for i in content[1::2]:                print(str(i).strip().replace(\’\\n\\r\’, \’\’))                # print(str(i).split(\’/\’))                i = str(i).split(\’/\’)                  i = i[len(i) 1]                key = i.strip().replace(\’\\n\’, \’\’).split(\’ \’) # 这里的strip和replace的使用目的是去除空格和空行之类                print(key)

下的一部分 ”’ content = selector.xpath(‘//div[@class=”info”]/div[@class=”bd”]/p/text()’) print(content) for i in content[1::2]: print(str(i).strip().replace(‘nr’, ”)) # print(str(i).split(‘/’)) i = str(i).split(‘/’) i = i[len(i) – 1] key = i.strip().replace(‘n’, ”).split(‘ ‘) # 这里的strip和replace的使用目的是去除空格和空行之类 print(key)通过获取下来的内容我们发现一部电影的各项内容都是用’/’分隔着,我们只需要提取电影分类中的东西,所以我们需要使用

1 i = str(i).split(\’/\’)



来把内容分隔成几项内容,因为电影分类排在最后,所以我们通过

1 i = i[len(i) 1]



来获取分隔后的最后一项也就是我们需要的电影分类,还有最后一步我们需要完成的,因为一部电影里面一般都有多个电影分类的标签,所以我们还要继续分隔获取到的电影分类,并且观察可以知道电影分类之间只是用一个空格隔开,所以我们使用下面一行代码就可以分离出各个分类:

1 key = i.strip().replace(\’\\n\’, \’\’).split(\’ \’)

二、接下来就是保存到mysql数据库

把电影分类保存在mysql数据库以便下面进行数据分析,这里我们使用到pymysql来连接mysql数据库,首先我们需要在mysql数据库建好表:

然后我们通过pymysql把数据保存到数据库中,代码如下:
首先要连接数据库:

1234 # 连接mysql数据库conn = pymysql.connect(host = \’localhost\’, user = \’root\’, passwd = \’2014081029\’, db = \’mysql\’, charset = \’utf8\’)  # user为数据库的名字,passwd为数据库的密码,一般把要把字符集定义为utf8,不然存入数据库容易遇到编码问题cur = conn.cursor()  # 获取操作游标cur.execute(\’use douban\’)  # 使用douban这个数据库

在保存到数据库之前,我们还有一个需要做得,那就是把250部电影的分类汇总数量,所以我们定义了一个字典来统计电影分类的个数,这里的代码是get_page函数的一部分,代码如下:

123456789101112     for i in content[1::2]:        print

相关内容

热门资讯

Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
python清除字符串里非数字... 本文实例讲述了python清除字符串里非数字字符的方法。分享给大家供大家参考。具体如下: impor...