2020-爬虫学习-实战练习:爬取豆瓣电影排名前25部的电影信息
前言:
在开始本文之前,我非常建议先学习下我写的第一篇爬虫练习的文章:https://blog.csdn.net/hahameier/article/details/110558398,里面有涉及到一些基本的东西。
在本文中,我会循序渐进,从爬取两个信息来带大家熟悉和学习下整体的流程(代码较少,帮助小白克服一堆代码的恐惧),然后才会延伸至多个信息的爬取。
本文将会非常适合知道了一些爬虫的基础知识,但是还没用实际例子来尝试的朋友。
参考链接:
1、百度大脑的教程《深度学习导论与应用实践》第二章节的课后习题:
https://aistudio.baidu.com/aistudio/projectDetail/101811
【但是代码部分已经不适用于现在的版本了,需要进行重构,本文会给出自己写的能运行的最新版的代码。】
2、上一篇自己写的爬虫练习:https://blog.csdn.net/hahameier/article/details/110558398
核心代码:
1、爬取所需要的内容:
def getContent(self, html):findTitle = re.compile(r'<span class="title">(.*)</span>') # 找到片名findLink = re.compile(r'<a href="(.*?)">') # 找到影片详情链接datalist = []for item in html.find_all('div', class_='item'): # 找到每一个影片项data = []item = str(item) # 转换成字符串link = re.findall(findLink, item)[0]data.append(link) # 添加详情链接titles = re.findall(findTitle, item)# 片名可能只有一个中文名,没有外国名;但我们只取中文名if len(titles) == 2:ctitle = titles[0]data.append(ctitle) # 添加中文片名otitle = titles[1].replace("/", "") # 去掉无关符号else:data.append(titles[0]) # 添加中文片名datalist.append(data)return datalist
2、保存所爬取的内容:
def saveData(self, datalist):book = xlwt.Workbook(encoding='utf-8', style_compression=0)sheet = book.add_sheet('豆瓣电影Top25', cell_overwrite_ok=True)col = ('电影详情链接', '影片中文名')for i in range(0, 2):sheet.write(0, i, col[i]) # 列名for i in range(0, 25):for j in range(0, 2):print(datalist[i][j])sheet.write(i+1, j, datalist[i][j]) # 数据book.save(self.path) # 保存
完整代码:
from bs4 import BeautifulSoup
import re
import xlwt
import requestsclass GetTopMovie:def __init__(self, url):self.url = urlself.path = r'/Users/NewScenery/SelfLearning-20201203/豆瓣电影Top25.xls'self.headers = {"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS 。。。) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36","referer": "https://movie.douban.com/top250?start="} # headers用你们自己的# 获取Htmldef getHtml(self, url):res = requests.get(url, headers=self.headers)if res.status_code == 200:html = BeautifulSoup(res.text, 'html.parser')return htmldef getContent(self, html):findTitle = re.compile(r'<span class="title">(.*)</span>') # 找到片名findLink = re.compile(r'<a href="(.*?)">') # 找到影片详情链接findRating = re.compile(r'<span class="rating_num" property="v:average">(.*)</span>') # 找到评分findJudge = re.compile(r'<span>(\d*)人评价</span>') # 找到评价人数findInq = re.compile(r'<span class="inq">(.*)</span>') # 找到概况findBd = re.compile(r'<p class="">(.*?)</p>', re.S) # 找到影片相关内容:导演,主演,年份,地区,类别remove = re.compile(r' |\n|</br>|\.*') # 去掉无关内容datalist = []for item in html.find_all('div', class_='item'): # 找到每一个影片项data = []item = str(item) # 转换成字符串# print(item)link = re.findall(findLink, item)[0]data.append(link) # 添加详情链接titles = re.findall(findTitle, item)if len(titles) == 2: # 中文名字,其他名字ctitle = titles[0]data.append(ctitle) # 添加中文片名otitle = titles[1].replace("/", "") # 去掉无关符号else:data.append(titles[0]) # 添加中文片名rating = re.findall(findRating, item)[0]data.append(rating) # 添加评分judgeNum = re.findall(findJudge, item)[0]data.append(judgeNum) # 添加评论人数inq = re.findall(findInq, item)if len(inq) != 0:inq = inq[0].replace("。", "") # 去掉句号data.append(inq) # 添加概况else:data.append(' ') # 留空bd = re.findall(findBd, item)[0]bd = re.sub(remove, "", bd)bd = re.sub('<br(\s+)?\/?>(\s+)?', " ", bd) # 去掉<br >bd = re.sub('/', " ", bd) # 替换/data.append(bd.strip())datalist.append(data)return datalistdef saveData(self, datalist):book = xlwt.Workbook(encoding='utf-8', style_compression=0)sheet = book.add_sheet('豆瓣电影Top25', cell_overwrite_ok=True)col = ('电影详情链接', '影片中文名')for i in range(0, 2):sheet.write(0, i, col[i]) # 列名for i in range(0, 25):for j in range(0, 2):print(datalist[i][j])sheet.write(i+1, j, datalist[i][j]) # 数据book.save(self.path) # 保存def func(self):url = self.urlself.saveData(self.getContent(self.getHtml(url)))if __name__ == '__main__':b = GetTopMovie('https://movie.douban.com/top250?start=') # 获取前25部电影b.func()print('爬取并保存成功!')
后记:
如果对你有收获,请不要吝惜你的双手,给我点个赞吧~哈哈哈
如果有问题的小伙伴可以留言~
要一点一点的进步哦~
2020-爬虫学习-实战练习:爬取豆瓣电影排名前25部的电影信息相关推荐
- Python爬虫实战(1) | 爬取豆瓣网排名前250的电影(下)
在Python爬虫实战(1) | 爬取豆瓣网排名前250的电影(上)中,我们最后爬出来的结果不是很完美,这对于"精益求精.追求完美的"程序猿来说怎么能够甘心 所以,今天,用pyth ...
- Python爬虫实战(1) | 爬取豆瓣网排名前250的电影(上)
今天我们来爬取一下豆瓣网上排名前250的电影. 需求:爬取豆瓣网上排名前250的电影,然后将结果保存至一个记事本里. 开发环境: python3.9 pycharm2021专业版 我们先观察网页,看看 ...
- Python爬虫学习---------根据分类爬取豆瓣电影的电影信息
代码的入口: if __name__ == '__main__': main() #! /usr/bin/python3 # -*- coding:utf-8 -*- # author:Sirius. ...
- Python爬虫菜鸟入门,爬取豆瓣top250电影 (自己学习,如有侵权,请联系我删除)
Python爬虫菜鸟入门,爬取豆瓣top250电影 (自己学习,如有侵权,请联系我删除) import requests from bs4 import BeautifulSoup import ti ...
- Python网络爬虫:利用正则表达式爬取豆瓣电影top250排行前10页电影信息
在学习了几个常用的爬取包方法后,转入爬取实战. 爬取豆瓣电影早已是练习爬取的常用方式了,网上各种代码也已经很多了,我可能现在还在做这个都太土了,不过没事,毕竟我也才刚入门-- 这次我还是利用正则表达式 ...
- Python爬虫入门 | 7 分类爬取豆瓣电影,解决动态加载问题
比如我们今天的案例,豆瓣电影分类页面.根本没有什么翻页,需要点击"加载更多"新的电影信息,前面的黑科技瞬间被秒-- 又比如知乎关注的人列表页面: 我复制了其中两个人昵称 ...
- python爬虫(一)爬取豆瓣电影排名前50名电影的信息
python爬虫(一)爬取豆瓣电影排名前50名电影的信息 在Python爬虫中,我们可以使用beautifulsoup对网页进行解析. 我们可以使用它来爬取豆瓣电影排名前50名的电影的详细信息,例如排 ...
- python爬虫学习 之 定向爬取 淘宝商品价格
python爬虫学习 之 定向爬取 淘宝商品价格 import requests import redef getHTMLText(url):try:r = requests.get(url, tim ...
- 第一个爬虫程序之定向爬取中国大学排名(收获良多,不仅仅是写个程序,更是编程的步骤方法)
第一个爬虫程序之定向爬取中国大学排名(收获良多,不仅仅是写个程序,更是编程的想法) 名称:定向爬取--中国大学排名定向爬取 首先,爬之前,看看你要定向爬取的网站和数据是什么类型的? 打开你要爬取网站, ...
最新文章
- 节点部署_国际电联设定大星座部署节点要求
- python读文件代码-简单了解Python读取大文件代码实例
- ASP.NET文件上传和下载
- C++(十)——模板(上)
- 马斯克又要搞事情,不锈钢材质的Space X“星际飞船”正式亮相
- python transform方法_Python transforms.BboxTransformFrom方法代码示例
- 数据结构--栈和队列记事本
- 啦啦外卖小程序上传提示43003解决办法
- 想做数字孪生项目?这款数据可视化软件值得你了解
- 上位机和FPGA开发板--串口通信实验
- 算法竞赛宝典 递归算法 地盘划分
- linux docker启动指定字符集,【字符集】解决docker 容器中中文乱码问题
- css3 3d特效汇总
- 【转】正则表达式高级学习技巧
- c语言程序项目设计三角函数,《C语言及程序设计》实践参考——编制三角函数表...
- 很全的大数据分析平台
- 建设一个SaaS平台需要知道什么,做什么
- 从程序员到架构师的转型思维的转变 NLP思维利器(二)
- JMS(Java Messaging Service)基础
- Websocket无法连接
热门文章
- 英语中10类对女人的搞笑称呼
- 苹果cms怎么推荐视频到网站首页
- 想要进入IB国际学校,这些证书你要知道
- Flash原生文字描边
- mtb检出_Xpert MTB/RIF法和涂片法检测痰液结核分枝杆菌的比较
- 现货黄金白银的致命伤:偏执
- ThinkPad 开机总提示找到新硬件 PCI Device
- ios mailto:// 用邮箱发邮件_英雄联盟手游公测,安卓/苹果iOS注册最新下载安装教程!...
- bibli直播弹幕实时爬取
- 【C++·Qt】Qt透明无边框窗口以及拖动