爬取步骤:
# 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("请输入你想要获取的电影类型(热门、最新、经典、可播放、冷门佳片、华语、欧美、韩国、日本、动作、喜剧、爱情、科幻、悬疑、恐怖、动画) : ") # 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('电影名,主页信息,评分,图片链接 ') #注意逗号打成中文的不会报错,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('{},{},{},{} '.format(title,url,rate,cover,)) if __name__ == '__main__': word = input("请输入你想要获取的电影类型(热门、最新、经典、可播放、冷门佳片、华语、欧美、韩国、日本、动作、喜剧、爱情、科幻、悬疑、恐怖、动画) : ") 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)