一.打开IMDB电影T250排行可以看见250条电影数据,电影名,评分等数据都可以看见

按F12进入开发者模式,找到这些数据对应的HTML网页结构,如下所示

可以看见里面有链接,点击链接可以进入电影详情页面,这可以看见导演,编剧,演员信息

同样查看HTML结构,可以找到相关信息的节点位置

演员信息可以在这个页面的cast中查看完整的信息

HTML页面结构

分析完整个要爬取的数据,现在来获取首页250条电影信息

1.整个爬虫代码需要使用的相关库

import re
import pymysql
import json
import requests
from bs4 import BeautifulSoup
from requests.exceptions import RequestException
'''
遇到不懂的问题?Python学习交流群:1136201545满足你的需求,资料都已经上传群文件,可以自行下载!
'''

2.请求首页的HTML网页,(如果请求不通过可以添加相关Header),返回网页内容

def get_html(url):response=requests.get(url)if response.status_code==200:#判断请求是否成功return  response.textelse:return None

3.解析HTML

def parse_html(html):#进行页面数据提取soup = BeautifulSoup(html, 'lxml')movies = soup.select('tbody tr')for movie in movies:poster = movie.select_one('.posterColumn')score = poster.select_one('span[name="ir"]')['data-value']movie_link = movie.select_one('.titleColumn').select_one('a')['href']#电影详情链接year_str = movie.select_one('.titleColumn').select_one('span').get_text()year_pattern = re.compile('\d{4}')year = int(year_pattern.search(year_str).group())id_pattern = re.compile(r'(?<=tt)\d+(?=/?)')movie_id = int(id_pattern.search(movie_link).group())#movie_id不使用默认生成的,从数据提取唯一的IDmovie_name = movie.select_one('.titleColumn').select_one('a').string#使用yield生成器,生成每一条电影信息yield {'movie_id': movie_id,'movie_name': movie_name,'year': year,'movie_link': movie_link,'movie_rate': float(score)}

4.我们可以保存文件到txt文本

def write_file(content):with open('movie12.txt','a',encoding='utf-8')as f:f.write(json.dumps(content,ensure_ascii=False)+'\n')def main():url='https://www.imdb.com/chart/top'html=get_html(url)for item in parse_html(html):write_file(item)if __name__ == '__main__':main()

5.数据可以看见

6.如果成功了,可以修改代码保存数据到MySQL,使用Navicat来操作非常方便先连接到MySQL

db = pymysql.connect(host="localhost", user="root", password="********", db="imdb_movie")
cursor = db.cursor()

创建数据表

CREATE TABLE `top_250_movies` (
`id` int(11) NOT NULL,
`name` varchar(45) NOT NULL,
`year` int(11) DEFAULT NULL,
`rate` float NOT NULL,
PRIMARY KEY (`id`)
)

接下来修改代码,操作数据加入数据表

def store_movie_data_to_db(movie_data):sel_sql =  "SELECT * FROM top_250_movies \WHERE id =  %d" % (movie_data['movie_id'])try:cursor.execute(sel_sql)result = cursor.fetchall()except:print("Failed to fetch data")if result.__len__() == 0:sql = "INSERT INTO top_250_movies \(id, name, year, rate) \VALUES ('%d', '%s', '%d', '%f')" % \(movie_data['movie_id'], movie_data['movie_name'], movie_data['year'], movie_data['movie_rate'])try:cursor.execute(sql)db.commit()print("movie data ADDED to DB table top_250_movies!")except:# 发生错误时回滚db.rollback()else:print("This movie ALREADY EXISTED!!!")

运行

def main():url='https://www.imdb.com/chart/top'html=get_html(url)for item in parse_html(html):store_movie_data_to_db(item)if __name__ == '__main__':main()

Python爬取并分析IMDB电影相关推荐

  1. Python爬取视频之爱情电影及解密TS文件和两种合并ts的方法

    俗话说,兴趣所在,方能大展拳脚.so结合兴趣的学习才能事半功倍,更加努力专心,apparently本次任务是在视频网站爬取一些好看的小电影,地址不放(狗头保命)只记录过程. 实现功能: 从网站上爬取采 ...

  2. Python爬取2022春节档电影信息

    Python爬取2022春节档电影信息 前提条件 相关介绍 实验环境 具体步骤 确定目标网站 分析网站 按F12打开浏览器操作台 按Ctrl+Shift+C快捷键,用鼠标找到目标元素 按Ctrl+F快 ...

  3. python爬取+BI分析5000条内衣数据,发现妹子最爱这款文胸

    生活中我们经常会用python进行数据爬取,但是爬取简单分析难,很多人喜欢用echarts图表接口或者是python的第三方库进行数据可视化,甚至是用matlab,基本上都需要用代码实现,在数据展示上 ...

  4. python爬取并分析淘宝商品信息

    python爬取并分析淘宝商品信息 背景介绍 一.模拟登陆 二.爬取商品信息 1. 定义相关参数 2. 分析并定义正则 3. 数据爬取 三.简单数据分析 1.导入库 2.中文显示 3.读取数据 4.分 ...

  5. Python爬取豆瓣热映电影

    Python爬取豆瓣热映电影 # encoding: utf-8import requests from lxml import etree# 1. 将目标网站上的页面抓取下来 headers = { ...

  6. python 怎么爬桌软件数据_如何利用Python爬取并分析红岭创投的数据?

    第一步:爬取数据 通过 selenium + Firefox 的无头模式将需要的数据爬取出来,代码实现不在赘述,详细步骤可查看我的上一篇图文(如何利用Python爬取网易新闻), 由于 seleniu ...

  7. 用Python爬取并分析了B站最热排行榜,我发现了这些秘密

    现在大家的生活中,已经越来越离不开B站了,2020年的第一季度,B站月活跃用户达到了1.72亿,日活跃用户也已经突破了5000万个用户.源源不断的流量让B站的up主们也是粉丝数目不断暴涨,百万粉丝的u ...

  8. python b站 礼物_用Python爬取并分析了B站最热排行榜,我发现了这些秘密

    现在大家的生活中,已经越来越离不开B站了,2020年的第一季度,B站月活跃用户达到了1.72亿,日活跃用户也已经突破了5000万个用户.源源不断的流量让B站的up主们也是粉丝数目不断暴涨,百万粉丝的u ...

  9. 用Python爬取并分析Box Office Mojo网站2019年每日票房数据

    最近在处理一些和有关电影的工作,需要用到一些北美电影票房数据,而这部分数据最权威的网站当属Box Office Mojo(以下简称BOM),于是就上去查看了一下.估计经常关注这个网站的盆友们都知道,这 ...

  10. 用Python爬取了上万部电影的排名,周末周末好带女神一起去

    文章目录 一.写在前面 二.准备工作 1.使用的软件 2.使用的模块 3.爬虫思路 1. 明确需求 2. 发送请求 (开发者工具里面headers) 3. 获取数据 4. 解析数据 5. 保存数据 三 ...

最新文章

  1. 【深度学习】我用 PyTorch 复现了 LeNet-5 神经网络(自定义数据集篇)!
  2. 【每日一题】7月6日精讲—平衡二叉树
  3. c#:mysql高效查询_C# LLSQL快速查询框架
  4. php中echo有哪些,php中echo和print有什么区别
  5. 【Elasticsearch】Elasticsearch 7.6 IDEA 源码环境搭建
  6. jquery 滑动取值
  7. MIT6.006Lec03:插入排序,归并排序,递归树
  8. 报 刊 集 锦(转载)
  9. excel函数公式html文档,excel公式embed怎么用
  10. Web开发——Photoshop(PSD格式截取)
  11. 深度学习常用算子(一)
  12. java手机充值_话费充值示例代码
  13. Pyecharts绘制地图(世界地图,城市地图,热力图)
  14. GraphicsLab Project之简易贴画系统(Decal System)
  15. STM32_基础篇(1)学习资料准备
  16. [Mysql] 多表连接查询
  17. NC WebService开发参考
  18. 爬取7160网站总是不成功。。。求大神分析分析
  19. python——常见内置函数、可迭代对象与迭代器对象
  20. IDEA的全局搜索框中,无法输入中文

热门文章

  1. 时间序列度量算法之SBD
  2. python从键盘上输入10个数、求其平均值_从键盘上循环输入10个数,求其平均值,并打印输出....
  3. 怎样在 iPhone 或 iPad 上使用“快捷指令”?
  4. 最原始的yuv图像叠加文字的实现--手动操作像素
  5. OKR 如何转变你的绩效管理策略
  6. ios设备的弹窗页面,光标错位,光标乱跳
  7. 高通开发-烧写及异常启动分析
  8. 第八问:hub 集线器是啥,作用
  9. 平安科技java机试题_2017年华为优招机试题_平安果_编程题
  10. python webp图片转化格式