一、爬取网页,获取需要内容
我们今天要爬取的是豆瓣电影top250
页面如下所示:
我们需要的是里面的电影分类,通过查看源代码观察可以分析出我们需要的东西。直接进入主题吧!
知道我们需要的内容在哪里了,接下来就使用我们python强大的request库先获取网页内容下来吧!获取内容后,再使用一个好用的lxml库来分析网页内容,然后获取我们的内容就可以做下一步操作了。
先贴出使用request库和lxml分析的代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
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库提取内容 ''' 通过观察页面就能发现内容在<div class="info">下的一部分 ''' 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) |
1 |
i = str(i).split('/') |
来把内容分隔成几项内容,因为电影分类排在最后,所以我们通过
1 |
i = i[len(i) - 1] |
来获取分隔后的最后一项也就是我们需要的电影分类,还有最后一步我们需要完成的,因为一部电影里面一般都有多个电影分类的标签,所以我们还要继续分隔获取到的电影分类,并且观察可以知道电影分类之间只是用一个空格隔开,所以我们使用下面一行代码就可以分离出各个分类:
1 |
key = i.strip().replace('\n', '').split(' ') |
二、接下来就是保存到mysql数据库
把电影分类保存在mysql数据库以便下面进行数据分析,这里我们使用到pymysql来连接mysql数据库,首先我们需要在mysql数据库建好表:
然后我们通过pymysql把数据保存到数据库中,代码如下:
首先要连接数据库:
1 2 3 4 |
# 连接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函数的一部分,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 |
for i in content[1::2]: print(str(i).strip().replace('\n\r', '') 知道我们需要的内容在哪里了,接下来就使用我们python强大的request库先获取网页内容下来吧!获取内容后,再使用一个好用的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(‘nr’, ”)) # print(str(i).split(‘/’)) i = str(i).split(‘/’) i = i[len(i) – 1] key = i.strip().replace(‘n’, ”).split(‘ ‘) # 这里的strip和replace的使用目的是去除空格和空行之类 print(key)通过获取下来的内容我们发现一部电影的各项内容都是用’/’分隔着,我们只需要提取电影分类中的东西,所以我们需要使用
来把内容分隔成几项内容,因为电影分类排在最后,所以我们通过
来获取分隔后的最后一项也就是我们需要的电影分类,还有最后一步我们需要完成的,因为一部电影里面一般都有多个电影分类的标签,所以我们还要继续分隔获取到的电影分类,并且观察可以知道电影分类之间只是用一个空格隔开,所以我们使用下面一行代码就可以分离出各个分类:
二、接下来就是保存到mysql数据库把电影分类保存在mysql数据库以便下面进行数据分析,这里我们使用到pymysql来连接mysql数据库,首先我们需要在mysql数据库建好表: 然后我们通过pymysql把数据保存到数据库中,代码如下:
在保存到数据库之前,我们还有一个需要做得,那就是把250部电影的分类汇总数量,所以我们定义了一个字典来统计电影分类的个数,这里的代码是get_page函数的一部分,代码如下:
|