本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

作者 Dark Horse

前言

在使用 Python 开发爬虫的过程中,requests 和 BeautifulSoup4(别名bs4) 应用的比较广泛,requests主要用于模拟浏览器的客户端请求,以获取服务器端响应,接收到的响应结果,如:网页HTML源码则交由 bs4 封装后再解析提取目标内容数据。

今天的案例中,我们将使用一个新库 MechanicalSoup 该库事实上是对 requests 和 bs4 的进一步封装,让请求和解析的工作进一步简化,如果你已经熟悉 requests 和 bs4 的基本操作,下面的代码理解起来应该不会很困难。

Python爬虫、数据分析、网站开发等案例教程视频免费在线观看

https://space.bilibili.com/523606542

Python学习交流群:1039649593

准备工作

mechanicalsoup 安装

终端下使用 pip 安装即可,也会自动安装相关依赖组件库

pip install mechanicalsoup

网页分析

今天我们要请求的是全球是最大的电影数据库网站 IMDb,其官网地址是 http://www.imdb.com 首页显示效果如图所示:

我们要爬取数据的页面,可以通过“Menu“ 导航的子菜单项 "Top Rated Movies" 进入,或直接访问 https://www.imdb.com/chart/top/

我们要采集的目标数据为左侧页面的列表,经过浏览器右键“检查”分析,得知第一条数据项均包含在一个表格行内,此时我们进一步明确要采集的数据为排名、电影标题、发行年份三列,分析得到以下HTML元素:

目标数据均包含在一个td class="titleColumn" 单元格内,此时只需要批量获取有该特征的批量单元格,再取出目标数据并清理即可。

编码实现

采集并打印

初步代码结构:

imdb.py

import mechanical# 数据容器
data = []def fetch_data():# 此处爬取页面目标数据def main():fetch_data()if __name__ == "__main__":main()

重点的代码逻辑是包含在 fetch_data() 函数内,具体代码如下(含注释):

def fetch_data():url = "https://www.imdb.com/chart/top/"# 构造浏览器对象b = mechanicalsoup.StatefulBrowser()# 请求目标网址b.open(url)# b.page 即为当前响应页面源码,且已封装为 BeautifulSoup 对象# 页面中找出所有具有 class="titleColumn" 属性的 td 单元格集合items = b.page.find_all("td", class_="titleColumn")# 遍历所有项for item in items:# 取出当前单元格中所所有文本,以"\n"分隔为三个元素row = item.text.strip().split("\n")# 进一步清理元素值的空格# 此时列表中三个元素对应为排名、标题、年份row = [x.strip() for x in row]# 将数据添加至data列表容器,便于进一步处理data.append(row)# 打印显示print(row)

此时代码如下:

import mechanicalsoupdata = []def fetch_data():url = "https://www.imdb.com/chart/top/?ref_=nv_mv_250"b = mechanicalsoup.StatefulBrowser()b.open(url)items = b.page.find_all("td", class_="titleColumn")for item in items:row = item.text.strip().split("\n")row = [x.strip() for x in row]data.append(row)print(row)def main():fetch_data()if __name__ == "__main__":main()

此时运行代码 python imdb.py 结果如下:

可以看到在逐行提取时打印的效果,此时数据窗口 data 中也包括了所有行250行的电影信息。

将批量数据写入Excel文件

如果将采集的批量电影数据(250条)一次性写入Excel 表格文件,可以安装使用 Excel 操作库,比如:openpyxl 等,在执行完前述步骤 fetch_data() 执行新建、并写入Excel 操作即可。

Python爬取全球是最大的电影数据库网站IMDb数据相关推荐

  1. python实战(一)Python爬取猫眼评分排行前100电影及简单数据分析可视化python实战(一)Python爬取猫眼排行前一百电影及简单数据分析可视化

    python实战(一)Python爬取猫眼排行前一百电影及简单数据分析可视化 一.抓取数据 需要的库 request库 响应http请求 json库 将文本保存成json形式 pyquery 类似JQ ...

  2. Python爬取豆瓣正在上映的电影

    Python爬取豆瓣正在上映的电影 #爬取豆瓣正在上映的电影 import requests from lxml import etree #1.将目标从网站上的页面抓取下来 headers = {' ...

  3. 使用Python爬取不同类别的豆瓣电影简介

    使用Python爬取不同类别的豆瓣电影简介 之前做过一点文本分类的工作,从豆瓣上爬取了不同类别的数千条电影的简介. 爬取目标 我们爬取的目标是 豆瓣影视,打开豆瓣网,随便点击一部电影,即可看到电影的介 ...

  4. Python 爬取 201865 条《隐秘的角落》弹幕数据,发现看剧不如爬山?

    Python 爬取 201865 条<隐秘的角落>弹幕数据,发现看剧不如爬山? 本文不涉及剧透!请放心食用 最近又火了一步国产剧:<隐秘的角落> 如果你没看过,那可能会对朋友圈 ...

  5. python爬取某城市各监测站点历史空气质量数据

    python爬取某城市各监测站点历史空气质量数据 引言 正文 一.安装Web driver 二.安装selenium 三.数据爬取 引言 由于要使用某地各监测站点的空气质量数据做数据预测,因此需要去网 ...

  6. Python爬取了《雪中悍刀行》数据,数据可视化分析

    Python爬取了<雪中悍刀行>数据,数据可视化分析 如何查找视频id 项目结构 制作词云图 制作最近评论数条形图与折线图 制作每小时评论条形图与折线图 制作最近评论数饼图 制作每小时评论 ...

  7. python爬取猫眼正在热映电影

    用python写爬虫爬取需要的数据比较容易,以Python简洁的语法和一大波成熟的库,写起来相当的快 python的版本以及使用的库 Python 3.6.4 requests lxml 这次主要是爬 ...

  8. python 爬取当当网商品价格并写入数据库

    python 爬取数据并写入数据库案例: import requests import pymysql import re from fake_useragent import UserAgent f ...

  9. Python爬取「英语流利说」的配音视频数据(第一次粉一个人)

    一.故事开端 程序猿有时候很痛苦,遇到问题解决不了就睡不着,也找不到人倾诉,只能通过失眠来解脱,那天长夜漫漫,我却无心睡眠,就拿起手机继续刷朋友圈,发现了睡前故事这个信息: 就手贱点进去一看,妈呀顿时 ...

最新文章

  1. LINUX - pthread_detach()与pthread_join()
  2. CPPUNIT的安装和编译
  3. SpringBoot启动流程是怎样的
  4. HBase详细的安装和使用方法
  5. Highcharts改Y轴的刻度值
  6. Linux内存管理:函数调用图谱-1
  7. Vue.js 2.0版
  8. Comprehensive learning path – Data Science in Python深度学习路径-用python进行数据学习
  9. 革新—决定磁带未来的最大挑战
  10. ASCII码判断大小
  11. 第二章 OpenHarmony工程介绍
  12. BZOJ 3669 luogu 2387 魔法森林
  13. vue 使用animate动画
  14. Ubuntu18.04 使用gnome-tweak美化系统主题
  15. NBA球员生涯数据统计系统(中南大学C语言课设)
  16. 腾讯云服务器用户名在哪里看,腾讯云服务器如何查看账号操作日志信息
  17. c#中获得windows、system、system32等一些系统文件夹的路径
  18. 训练SSD时,viz报错
  19. 惊叹!前NASA员工绘大型精美地面立体画(高清组图)
  20. shell一键部署mysql

热门文章

  1. 百度红包架构分析与推测
  2. 一位医疗 AI 创业者的自述:这个行业到底需要什么样的产品?
  3. 为什么键盘没反应了 键盘没反应原因分析及解决方法
  4. 对多项式求积分和微分
  5. 配置虚拟机(VMware Workstation)静态 IP 地址
  6. 如何查看自己WiFi密码
  7. excel在双显示器上打开两个独立的xlsx表格
  8. 史上最被低估的神级学科,看完忍不住感慨“它”也太重要了!
  9. 反向数学归纳法的提出与周氏猜测的证明
  10. STM32 F446RET6多通道ADC采集