Python爬虫(4)获得所有Top250部电影的信息并存入数据库

2023-05-16

上次我们完成了单页电影的获取并保存到了Excel文件中,不知道小伙伴们都完成了没?有没有把Top250部电影都保存下来的?在编写这些代码过程中遇到什么问题了没?如果遇到但是没有解决,或是解决了但不知道原因的请在公众号中发消息给小编,一起讨论,共同进步。

OK,今天继续把所有的电影都获取并保存下来,不过这次保存的位置我们做一些改动,通常情况下,这样有规则的信息我们都保存到数据库中,毕竟Excel文件还是仅限于个人数据存放,而真正的数据库才是相对通用的数据存储办法,好处太多,比如,存储和查询方便,数据的完整性和有效性都更有保障等等。

 

  1. 公布所有电影信息的获取代码

我们已经获取了一页的所有需要的信息,那么再来9页的信息几乎一点困难都没有,不就是通过一个For循环就能搞定吗?

不过,回顾一下我们之前写的代码,虽然功能都实现了,但是整个代码写下来有点流水账的感觉,阅读性和维护性相对较差,如果能以结构化的方式书写,在今后问题排查或是功能扩展都会带来不少便利。所以在这里我们把一些功能单独抽出来写成函数。如下截图:

这样我们把抓取网页信息以及保存信息到数据库或文件分成了几个块,这样我们这个Python文件的程序阅读和维护起来就会非常方便。

首先看AskURL这个函数,通过传参url就可以获取url所指定网页页面信息,而这个信息就是需要我们接下来通过GetData对这些信息进行解析拆分存储到一个列表返回,然后让SaveDataToDB函数来处理存入到数据库中。另外所有这个流程都在main函数中体现,这样只需要通过main函数就可以一目了然知道整个程序的结构以及实现的方法都有哪些。

 

本次代码你可以扫描下方二维码关注微信公众号阅读历史文章获取

 

2. SQLite数据库

 该数据库是Python3之后就默认支持的数据库,它为我们学习和做一些测试提供了很多便利,不太需要过多的关注数据库方面的知识,你只需要知道怎么使用就可以了。

使用 conn = sqlite3.connect(“test.db”) 就可以连接当前目录下存在的test.db数据库文件,如果不存在则会自动创建该文件。

通过获取游标然后执行SQL语句来创建数据表。

 

同样在将获取的数据保存到数据库的时候,通过for循环语句,采用构造INSERT INTO 语句向数据表中添加新的记录。

 

至此,数据库的创建以及记录的保存就已经完成,因为数据库在这里不是我们的重点,这里使用数据库是为了后续我们的引用,后续会讲到通过网页是如何调用我们数据库的记录信息然后通过表、动态图根据用户的选择而实时显示在网页上的。

 

该段代码不是很完美,我只是考虑到数据库以及记录都是一次性创建,后续我们不再动态根据网站而实时更新此数据库,所以并没有考虑到数据表增加,记录增加等,有兴趣可以自行尝试去完善。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python爬虫(4)获得所有Top250部电影的信息并存入数据库 的相关文章

  • Python、Tkinter、更改标签颜色

    有没有一种简单的方法来更改按钮中文本的颜色 I use button text input text here 更改按下后按钮文本的内容 是否存在类似的颜色变化 button color red Use the foreground设置按钮
  • 使用 openCV 对图像中的子图像进行通用检测

    免责声明 我是计算机视觉菜鸟 我看过很多关于如何在较大图像中查找特定子图像的堆栈溢出帖子 我的用例有点不同 因为我不希望它是具体的 而且我不确定如何做到这一点 如果可能的话 但我感觉应该如此 我有大量图像数据集 有时 其中一些图像是数据集的
  • 如何使用固定的 pandas 数据框进行动态 matplotlib 绘图?

    我有一个名为的数据框benchmark returns and strategy returns 两者具有相同的时间跨度 我想找到一种方法以漂亮的动画风格绘制数据点 以便它显示逐渐加载的所有点 我知道有一个matplotlib animat
  • DreamPie 不适用于 Python 3.2

    我最喜欢的 Python shell 是DreamPie http dreampie sourceforge net 我想将它与 Python 3 2 一起使用 我使用了 添加解释器 DreamPie 应用程序并添加了 Python 3 2
  • Flask 和 uWSGI - 无法加载应用程序 0 (mountpoint='')(找不到可调用或导入错误)

    当我尝试使用 uWSGI 启动 Flask 时 出现以下错误 我是这样开始的 gt cd gt root localhost uwsgi socket 127 0 0 1 6000 file path to folder run py ca
  • 更改自动插入 tkinter 小部件的文本颜色

    我有一个文本框小部件 其中插入了三条消息 一条是开始消息 一条是结束消息 一条是在 单位 被摧毁时发出警报的消息 我希望开始和结束消息是黑色的 但被毁坏的消息 参见我在代码中评论的位置 插入小部件时颜色为红色 我不太确定如何去做这件事 我看
  • 如何等到 Excel 计算公式后再继续 win32com

    我有一个 win32com Python 脚本 它将多个 Excel 文件合并到电子表格中并将其另存为 PDF 现在的工作原理是输出几乎都是 NAME 因为文件是在计算 Excel 文件内容之前输出的 这可能需要一分钟 如何强制工作簿计算值
  • __del__ 真的是析构函数吗?

    我主要用 C 做事情 其中 析构函数方法实际上是为了销毁所获取的资源 最近我开始使用python 这真的很有趣而且很棒 我开始了解到它有像java一样的GC 因此 没有过分强调对象所有权 构造和销毁 据我所知 init 方法对我来说在 py
  • 在循环中每次迭代开始时将变量重新分配给原始值(在循环之前定义)

    在Python中 你使用 在每次迭代开始时将变量重新分配给原始值 在循环之前定义 时 也就是说 original 1D o o o for i in range 0 3 new original 1D revert back to orig
  • 运行多个 scrapy 蜘蛛的正确方法

    我只是尝试使用在同一进程中运行多个蜘蛛新的 scrapy 文档 http doc scrapy org en 1 0 topics practices html但我得到 AttributeError CrawlerProcess objec
  • 在 NumPy 中获取 ndarray 的索引和值

    我有一个 ndarrayA任意维数N 我想创建一个数组B元组 数组或列表 其中第一个N每个元组中的元素是索引 最后一个元素是该索引的值A 例如 A array 1 2 3 4 5 6 Then B 0 0 1 0 1 2 0 2 3 1 0
  • 在pyyaml中表示具有相同基类的不同类的实例

    我有一些单元测试集 希望将每个测试运行的结果存储为 YAML 文件以供进一步分析 YAML 格式的转储数据在几个方面满足我的需求 但测试属于不同的套装 结果有不同的父类 这是我所拥有的示例 gt gt gt rz shorthand for
  • Python:计算字典的重复值

    我有一本字典如下 dictA unit1 test1 alpha unit1 test2 beta unit2 test1 alpha unit2 test2 gamma unit3 test1 delta unit3 test2 gamm
  • glpk.LPX 向后兼容性?

    较新版本的glpk没有LPXapi 旧包需要它 我如何使用旧包 例如COBRA http opencobra sourceforge net openCOBRA Welcome html 与较新版本的glpk 注意COBRA适用于 MATL
  • 用于运行可执行文件的python多线程进程

    我正在尝试将一个在 Windows 上运行可执行文件并管理文本输出文件的 python 脚本升级到使用多线程进程的版本 以便我可以利用多个核心 我有四个独立版本的可执行文件 每个线程都知道要访问它们 这部分工作正常 我遇到问题的地方是当它们
  • Python - 字典和列表相交

    给定以下数据结构 找出这两种数据结构共有的交集键的最有效方法是什么 dict1 2A 3A 4B list1 2A 4B Expected output 2A 4B 如果这也能产生更快的输出 我可以将列表 不是 dict1 组织到任何其他数
  • Python:元类属性有时会覆盖类属性?

    下面代码的结果让我感到困惑 class MyClass type property def a self return 1 class MyObject object metaclass MyClass a 2 print MyObject
  • Python 分析:“‘select.poll’对象的‘poll’方法”是什么?

    我已经使用 python 分析了我的 python 代码cProfile模块并得到以下结果 ncalls tottime percall cumtime percall filename lineno function 13937860 9
  • Pandas 与 Numpy 数据帧

    看这几行代码 df2 df copy df2 1 df 1 df 1 values 1 df2 ix 0 0 我们的教练说我们需要使用 values属性来访问底层的 numpy 数组 否则我们的代码将无法工作 我知道 pandas Data
  • PyAudio ErrNo 输入溢出 -9981

    我遇到了与用户相同的错误 Python 使用 Pyaudio 以 16000Hz 录制音频时出错 https stackoverflow com questions 12994981 python error audio recording

随机推荐