美文网首页
网络爬虫入门 (四) 爬取豆瓣电影top250并写入数据库

网络爬虫入门 (四) 爬取豆瓣电影top250并写入数据库

作者: 闻榴莲的猫 | 来源:发表于2018-07-18 10:17 被阅读0次

链接:https://movie.douban.com/top250?start=0&filter
分析url后发现start=0为指定页数的字段,每页有25条所需数据,一共就有10页。
接下来分析我们需要的数据并找出它们的特征,以方将它们从原数据中取出来,需要的字段有电影名称导演姓名主演姓名时间地区剧情,如下图

所需要的数据

按F12进入控制台后查看该位置的元素标签,如下图:



发现所需信息全都在<div class="info">中,用bs取出

infos = soup_1.find_all("div", attrs={"class": "info"})

得到后发现infos的长度刚好是25,很棒的结果,下面只需要对infos的每个item操作取出我们需要的数据就ok了

titles = info.find_all("span")
title_zh= titles[0].get_text()
print(title_zh)
extra_infos = info.find("div", attrs={"class": "bd"}).find("p").get_text().strip().replace("'", "\\'").split("\n")  # 导演演员类别
dir_actors = extra_infos[0].split("\xa0\xa0\xa0")
print(dir_actors)
director = dir_actors[0].split("/")[0][4:].strip()  # 导演
if len(dir_actors) > 1:#实际爬取中发现有些电影的演员没有显示出来,所以取不到,这里要做非空判断
    actor = dir_actors[1].split("/")[0][4:].strip()  # 演员
year_area_genre = extra_infos[1].strip().replace("\xa0", "")
print(year_area_genre)
year, area, genre = re.match("(.+)[/]{1}(.+)[/]{1}(.+)", year_area_genre).groups()  # 时间/地区/剧情

然后mysql建库建表:

create database douban;
user douban;
create table top250(
    director varchar(50) COMMENT "导演",
    actor varchar(50) COMMENT "演员",
    year_ varchar(10) COMMENT "时间",
    area varchar(50) COMMENT "地区",
    genre varchar(150) COMMENT "剧情",
    name_ varchar(50) COMMENT "名称");

接下来就可以将爬取到的数据存入mysql了

项目地址:https://github.com/wsty/Douban-movie-Top250

相关文章

网友评论

      本文标题:网络爬虫入门 (四) 爬取豆瓣电影top250并写入数据库

      本文链接:https://www.haomeiwen.com/subject/jeenpftx.html