爬取豆瓣电影

时间:2022-07-10 16:56:46
爬取步骤:
# 1、#找到url地址 # url = "https://movie.douban.com/j/search_subjects?type=movie&tag=%E7%83%AD%E9%97%A8&sort=recommend&page_limit=20&page_start=0" # 2、解析URL,得到网页源码 # 3、从网页源代码里提取数据 # 4、保存数据

 

# -*- coding: utf-8 -*-
# @Author  : Jackzz

import requests,json

# 1、#找到url地址
# url = "https://movie.douban.com/j/search_subjects?type=movie&tag=%E7%83%AD%E9%97%A8&sort=recommend&page_limit=20&page_start=0"
# 2、解析URL,得到网页源码
# 3、从网页源代码里提取数据
# 4、保存数据
def douban_spider(word,start_url):
    # word = input("请输入你想要获取的电影类型(热门、最新、经典、可播放、冷门佳片、华语、欧美、韩国、日本、动作、喜剧、爱情、科幻、悬疑、恐怖、动画)\n: ")
    # start_url = "https://movie.douban.com/j/search_subjects?type=movie&tag="+word+"&sort=recommend&page_limit=20&page_start={}"
    # start_url ="https://movie.douban.com/j/search_subjects?type=movie&tag=%E7%83%AD%E9%97%A8&sort=recommend&page_limit=20&page_start={}"

    with open('douban.csv','a') as f:
        f.write('电影名,主页信息,评分,图片链接\n') #注意逗号打成中文的不会报错,4个内容写到一列而无法写入到不同4列
        #2、解析URL,得到网页源码,所有电影信息都在XHR 数据中
        for i in range(25):#想爬几页这里设置改range数据
            url= start_url.format(i*20)    #url的&page_start=0 加载更多这里数值+20的变化
            # print(url)
            r = requests.get(url=start_url) #
            # #page_code=r.content  page_code是页面源码,但他是一个二进制类型数据
            ret = r.content.decode()#为字符串类型
            # # 3、从网页源代码里提取数据
            result = json.loads(ret)
            res = result['subjects'] #XHR 加载内容查看到是subjects:[{rate: "7.0", cover_x: 7142, title: "飞驰人生", url: "https://movie.douban.com/subject/30163509/",…},…]
            for i in res:
                title = i['title'] #电影名
                url = i['url'] #主页地址
                rate = i['rate'] #评分
                cover = i['cover'] #图片地址
                # 4、保存数据
                f.write('{},{},{},{}\n'.format(title,url,rate,cover,))




if __name__ == '__main__':
    word = input("请输入你想要获取的电影类型(热门、最新、经典、可播放、冷门佳片、华语、欧美、韩国、日本、动作、喜剧、爱情、科幻、悬疑、恐怖、动画)\n: ")
    start_url = "https://movie.douban.com/j/search_subjects?type=movie&tag=" + word + "&sort=recommend&page_limit=20&page_start={}"
    douban_spider(word,start_url)