美文网首页
网络爬虫入门 (四) 爬取豆瓣电影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