用python爬取豆瓣电影TOP250获取电影排名、电影名称、电影别名、电影链接、导演、主演、年份、地点、类型、评分、评价人数、摘要、海报下载地址。

python小白,第一次爬虫,如有不对的地方还请多多指出。

用BeautifulSoup获取电影排名、电影名称、电影别名、电影链接、导演、主演、年份、地点、类型、评分、评价人数、摘要、海报下载地址。

cur_url:每一页的地址,例如:https://movie.douban.com/top250?start=0&filter=

html = requests.get(cur_url)
soup = BeautifulSoup(html.text, "html.parser")

每一个电影都在

  • 中,就用for循环获取每一个电影的信息。

    用python爬取豆瓣电影TOP250获取电影排名、电影名称、电影别名、电影链接、导演、主演、年份、地点、类型、评分、评价人数、摘要、海报下载地址。_第1张图片

    film_list = soup.find_all("div", class_="item")

    for list in film_list:

    1.获取电影排名

    用python爬取豆瓣电影TOP250获取电影排名、电影名称、电影别名、电影链接、导演、主演、年份、地点、类型、评分、评价人数、摘要、海报下载地址。_第2张图片


    film_ranking = list.find("div", class_="pic").find('em').text

    2.电影名称



    film_chinese_name = list.find("span", class_="title").text

    3.电影别名

    将别名左边的空格和“/”去掉



    film_other_name = list.find("span", class_="other").text.strip().lstrip("/").strip()

    4.电影链接


    film_url = list.find("a").get("href")

    5.导演、主演、年份、地点、类型


    用python爬取豆瓣电影TOP250获取电影排名、电影名称、电影别名、电影链接、导演、主演、年份、地点、类型、评分、评价人数、摘要、海报下载地址。_第3张图片

    # 导演/主演/年份/地点/类型  split():拆分   strip():方法用于移除字符串头尾指定的字符(默认为空格)
    film_information = list.find("div", class_="bd").find("p").text.strip()
    # 以"\n"形式将字符串拆分
    film_information_split = film_information.split("\n")
    # print(film_information_split)
    film_information_split_1 = film_information_split[0]     # 导演和演员的信息
    film_information_split_2 = film_information_split[1]     # 年份、地点、类型的信息
    # print(film_information_split_1)
    # print(film_information_split_2)
    # film_information_split_1以"\xa0\xa0\xa0"形式拆分
    film_information_1 = film_information_split_1.split("\xa0\xa0\xa0")  # 将导演和演员的信息用"\xa0\xa0\xa0"拆分
    # 导演
    film_director_1 = film_information_1[0].strip()
    film_director = film_director_1.split(":")[1]
    # print(film_director)
    # 主演
    film_actor_1 = film_information_1[1].strip()
    if ":" in film_actor_1:
        film_actor = film_actor_1.split(":")[1]
    else:
        film_actor = ""
    # print(film_actor)
    
    # film_information_split_2以"\"形式拆分
    film_information_2 = film_information_split_2.split("/")   # 将年份、地点、类型的信息用"/"进行拆分
    # 年份
    film_year = film_information_2[0].strip()
    # print(film_year)
    # 地区
    film_area = film_information_2[1].strip()
    # print(film_area)
    # 类型
    film_genre = film_information_2[2].strip()
    # print(film_genre)

    6.评分



    rating = list.find("span", class_="rating_num").text

    7.评价人数



    find_next_sibling():返回符合条件的后面的第一个tag节点

    film_rating_num = list.find("span", class_="rating_num").find_next_sibling().find_next_sibling().text

    对评价字段进行拆分,只留下数字

    film_comment_num = re.findall('\d{0,}', film_rating_num)[0]

    8.摘要



    film_quote = list.find("span", class_="inq").text

    9.海报下载地址


    film_post = list.find("img").get("src")


    在列表中添加字典需要使用copy方法。

        列表名.append(字典名.copy())

    你可能感兴趣的:(python)