哪里有做推文的网站,做阿里巴巴网站公司,最好的推广平台是什么软件,阿里云可以做电影网站#xff08;2024#xff09;豆瓣电影TOP250爬虫详细讲解和代码
爬虫目的
获取 https://movie.douban.com/top250 电影列表的所有电影的属性。并存储起来。说起来很简单就两步。
第一步爬取数据第二步存储
爬虫思路
总体流程图
由于是分页的#xff0c;要先观察分页的规…2024豆瓣电影TOP250爬虫详细讲解和代码
爬虫目的
获取 https://movie.douban.com/top250 电影列表的所有电影的属性。并存储起来。说起来很简单就两步。
第一步爬取数据第二步存储
爬虫思路
总体流程图
由于是分页的要先观察分页的规律如下很容易知道每一页的规律。
第一页https://movie.douban.com/top250?start0filter第二页https://movie.douban.com/top250?start25filter 代码思路
函数 getAllPageUrl 生成分页链接列表函数 getMoiveListByUrl 根据某一页的分页链接输出电影属性
函数getAllPageUrl
def getAllPageUrl():通过观察规律生成所有分页的链接list:return:list []for i in range(10):url fhttps://movie.douban.com/top250?start{i*25}filterlist.append(url)# print(url)return list测试代码
if __name__ __main__:urlList getAllPageUrl()pprint(len(urlList))pprint(urlList)输出结果
可以一一校验链接是否有效准确 函数getMoiveListByUrl
分析dom //juery获取一部电影的dom
$(#content .grid_view .item)[0]OK经过分析我们找到了使用jquery 获取电影dom的方式只需要经过两步就能拿到电影列表了。
第一步获取电影列表dom $(#content .grid_view .item)第二步处理单个电影dom,拿到信息。
代码
def getMoiveListByUrl(url):由一个分页链接开始通dom节点的形式 数据处理(正则处理、字符处理、类型转换等) 获取电影信息:return: list: 包含每部电影详细信息的字典组成的列表。# 定义请求头headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3,Accept: text/html,application/xhtmlxml,application/xml;q0.9,image/webp,*/*;q0.8,# 其他需要的请求头...}movieList []# 发送 GET 请求并获取响应内容response requests.get(url, headersheaders)if response.status_code 200:#todo pyquery 解析dom经过循环数据处理(正则处理、字符处理、类型转换等)得到正确的电影属性信息doc pq(response.text)movie_list_doc doc(#content .grid_view .item)for item in movie_list_doc.items():item_dict {} #存储单个电影对象的字典cover item(.pic img).attr(src)movie_url item(.pic a).attr(href)title item(.info .hd .title:first).text()review_count_text item(.info .bd .star span:contains(人评价)).text()rating_num item(.info .bd .star .rating_num).text()review_count int(review_count_text.replace(人评价, ))item_dict[title] titleitem_dict[cover] coveritem_dict[review_count] review_countitem_dict[rating_num] rating_numitem_dict[movie_url] movie_url# print(title)movieList.append(item_dict)return movieListelse :return movieList测试代码
if __name__ __main__:pageUrl02 https://movie.douban.com/top250?start25filtermovieList getMoiveListByUrl(pageUrl02)pprint(movieList)输出结果
可以一一校验链接是否有效准确