基于bs4+requests的豆瓣电影爬虫
1.爬取豆瓣电影前250详情页面
豆瓣电影前250详情页面持久化为250个htm文件,打包文件下载链接: https://pan.baidu.com/s/1_zlZJQJtl9pPEJUGYVMYaw 密码: ehrq
文件解压后的文件夹命名为doubanSourcePages,下面代码复制到py文件中,py文件和doubanSourcePages文件夹在同一级目录下。
from bs4 import BeautifulSoup as bs
import re
import pandas as pddef cssFind(movie,cssSelector,nth=1):if len(movie.select(cssSelector)) >= nth:return movie.select(cssSelector)[nth-1].text.strip()else:return ''def reFind(pattern,sourceStr,nth=1):if len(re.findall(pattern,sourceStr)) >= nth:return re.findall(pattern,sourceStr)[nth-1]else:return ''if __name__ == "__main__":movie_list =[]for i in range(1,251):print("正在解析排名第%d页"%i)fileName = "doubanSourcePages/%03d.html"%itry:with open(fileName,encoding='utf8') as file:soup = bs(file,'lxml')movie = {}movie['得分'] = cssFind(soup, 'strong[class="ll rating_num"]')movie['片名'] = cssFind(soup, 'span[property="v:itemreviewed"]')info = cssFind(soup, "div[id='info']")for item in info.split('\n')[:9]:key = item.split(":")[0]value = item.split(":")[1]movie[key] = valuemovie_list.append(movie)movie['标签'] = ','.join([k.text for k in soup.select("div.tags a")])movie['图片链接'] = soup.select('a.nbgnbg img')[0]['src']except:print("解析排名第%d页失败"%i)movie_list.append({})df = pd.DataFrame(movie_list,columns=movie_list[0].keys())df.to_excel("豆瓣电影详情信息.xlsx")
2.详情页面持久化
代码如下:
from bs4 import BeautifulSoup as bs
import requests
from time import sleepdef save_webPage(url,fileName):response = requests.get(url)response.encoding = 'utf-8'with open(fileName,'w',encoding='utf-8') as file:file.write(response.text)if __name__ == "__main__":#解析网页并将每条电影信息插入mysql数据库url_before = "https://movie.douban.com/top250?start={}"count = 0for i in range(0,250,25):url = url_before.format(i)fileName = "{}-{}.html".format(i+1,i+25)save_webPage(url,fileName)response = requests.get(url)response.encoding = 'utf-8'soup = bs(response.text, 'lxml')movie_list = soup.select("ol.grid_view li")for movie in movie_list:nextUrl = movie.select("div.hd a")[0]['href']count +=1fileName = "%03d.html"%countprint("正在把排名第%d的电影详情页面保存到本地"%count)save_webPage(nextUrl,fileName)sleep(3)
3.人员随机分组
import randomdef getGroup(lt,n):lt_len = len(lt)left = lt_len%nm = lt_len//ngroup_number_list = [m] * (n-left) + [m+1] * leftrandom.shuffle(group_number_list)group_list = []print(group_number_list)for group_number in group_number_list:group = random.sample(lt,group_number)print(group)for i in group:lt.remove(i)group_list.append(group)return group_listif __name__ == "__main__":name_str = "陶宇,王燕琪,雷杰,韦民童,余鹏,李波,雷坤,"\"石月,丁松,郑志杰,陶雨,程韶曦,葛振刚,王雪虎,李响,仲雯,王海宾"name_list = name_str.split(',')getGroup(name_list,4)
基于bs4+requests的豆瓣电影爬虫相关推荐
- 使用requests库豆瓣电影爬虫
import requests from lxml import etree# 1,将目标网站的页面抓取下来 headers = {'User-Agent': 'Mozilla/5.0 (Window ...
- 使用Java语言开发在线电影推荐网 电影推荐系统 豆瓣电影爬虫 基于用户、物品的协同过滤推荐算法实现 SSM(Spring+SpringMVC+Mybatis)开发框架 机器学习、人工智能、大数据开发
使用Java语言开发在线电影推荐网 电影推荐系统 豆瓣电影爬虫 基于用户.物品的协同过滤推荐算法实现 SSM(Spring+SpringMVC+Mybatis)开发框架 机器学习.人工智能.大数据开发 ...
- 使用Java+SSM框架+JSP开发简单在线电影推荐网 电影推荐系统 豆瓣电影爬虫 基于用户、物品的协同过滤推荐算法 大数据 机器学习 SimpleMovieRecommendOnline
使用Java+SSM框架+JSP开发简单在线电影推荐网 电影推荐系统 豆瓣电影爬虫 基于用户.物品的协同过滤推荐算法 大数据 机器学习 SimpleMovieRecommendOnline 一.项目简 ...
- python豆瓣电影爬虫
前言 作为本人的第一篇博客,不知道怎么写才好.同时作为一个编程的菜鸟,第一次分享自己的练习之作,希望能够通过写博客这种方式慢慢的提高自己的表述能力. 本人最近学习python,学习了基本的语法,就想着 ...
- python用bs4爬取豆瓣电影排行榜 Top 250的电影信息和电影图片,分别保存到csv文件和文件夹中
python用bs4爬取豆瓣电影排行榜 Top 250的电影信息和图片,分别保存到csv文件和文件夹中. 爬取的数据包括每个电影的电影名 , 导演 ,演员 ,评分,推荐语,年份,国家,类型. py如果 ...
- Golang语言快速上手到综合实战(Go语言、Beego框架、高并发聊天室、豆瓣电影爬虫) 下载
下载Golang语言快速上手到综合实战(Go语言.Beego框架.高并发聊天室.豆瓣电影爬虫) 下载地址:请加QQ:397245854 Go是Google开发的一种编译型,可并行化,并具有垃圾回收功能 ...
- 老板,今年有哪些大众好电影?(nodejs豆瓣电影爬虫)
老板,今年有哪些大众好电影?(nodejs豆瓣电影爬虫) 前言 目标页面分析 设计思路 效果演示 GitHub 和源码 前言 现在看电影通常都会看豆瓣评分,虽然豆瓣本身有筛选功能,但是缺乏了一个重要元 ...
- 基于Python的海量豆瓣电影、数据获取、数据预处理、数据分析、可视化、大屏设计项目(含数据库)
目录 项目介绍 研究背景 国内外研究现状分析 研究目的 研究意义 研究总体设计 网络爬虫介绍 豆瓣电影数据的采集 数据预处理 大数据分析及可视化 豆瓣影评结构化分析 大屏可视化 文本可视化 总结 每文 ...
- Python豆瓣电影爬虫实战(超详解)-----我的机器人女友《阿丽塔》
写在前面 爬虫基础详见我另一篇博客:https://blog.csdn.net/weixin_43329700/article/details/86768422 我的机器人女友----<阿丽塔& ...
最新文章
- linux——环境变量与文件查找
- hadoop 动态调整mapred参数
- web工程导入MyEclipse 就变成Java工程 ———— 解决方案
- P4180-[BJWC2010]严格次小生成树【Kruskal,倍增】
- osg动态加载模型不显示_OSG仿真案例(8)——读取FBX格式文件并显示(无动画)...
- vos3000 2.1.1.5 安装包及注册机【电销电话机器人源码私有云部署 www.ruikesoft.com 正版授权 抵制盗版】
- 百度Android在线语音识别SDK使用方法
- 关于UI设计学习,推荐6个高质量的学习网站!
- python str center_Python str方法总结
- 计算机信息管理参考文献,计算机信息管理本科论文参考文献大全 计算机信息管理本科论文参考文献哪里找...
- 为什么要阅读——兼分享《首先,打破一切常规》[中译文]:世界顶级管理者的成功秘诀/(美)马库斯#183;白金汉,(美)柯特#183;科夫曼 著...
- 当MySQL想恋爱,java和navicate抢着做媒婆 ------ java连接MySQL数据库 navicat for MySQL 连接
- python matplotlib笔记:饼状图
- 硬件版--苹果ios免越狱脚本实现硬件方案
- atan和tan什么的差别,数学不好的人要去死啊
- 全国大学的戏精,都在论文致谢里了
- macOS Big Sur正式版下载
- 《Flutter 控件大全》第五十二个:Hero
- IE浏览器报错Unhandled promise rejection Error: 拒绝访问。文件流下载
- 服务器南北桥芯片 维修,[故障处理日记] 集显主板北桥虚焊故障及维修工具与技巧...
热门文章
- 【ES6】JS的Set和Map数据结构
- ListView的高级使用
- ASP .NET Core Web Razor Pages系列教程四:使用数据库进行交互 entity-framework(MySQL/MariaDB 版)
- File `listings.sty' not found. usepackage
- c++深拷贝和浅拷贝
- 【带你重拾Redis】Redis数据结构及使用场景
- 大白话详解Spring Security认证流程
- 多重采样和超级采样哪个流畅_OpenGL多重采样:结果与未使用多重采样时的结果相同...
- 祁阳一中2021年高考成绩查询,祁阳一中2019高考成绩喜报、一本二本上线人数情况...
- element vue 动态单选_软件更新丨vue-element-admin 4.0.0 beta 发布,后台集成方案