P4-自动化批量保存文章的方法与系统设计指南
兄弟们大家好,这里是DrissionPage自动化采集合集的第五集,这集视频我们将会演示如何使用自动化批量采集保存文章,相当于将网站保存到本地做一个备份的功能。
场景有哪些呢?文章,视频,新闻,博客之类的都可以,具体的就需要大家自己发挥想象力了,我说太多估计对视频不太好。
其实我们可以将我们的目标拆分成几小步,自动化批量保存文章,拆分成:
- 保存文章
- 批量保存
- 系统设计
- 代码实现
拆分成上面四小步之后,仿佛我们的目标就变得清晰和简单了起来,首先我们大致看一下这四步。
第一步保存文章,其实可以保存页面的html源代码,这对于我们的自动化来说简直就是易如反掌,但是有一种更好的方式是保存网页的mhtml,mhtml可以将这个网页的内容保存为一个文件,包含图片,这意味着就算你的电脑没有联网也可以查看这个网页,适用于完整保存备份页面的情况。但这并不意味着保存html源代码没有作用,我们保存页面源代码可以用来后续提取结构化信息。所以我的建议是备份文章的话两种结构都保存下来。
接下来是批量保存,在可以保存一篇文章之后,批量保存同样是易如反掌,仅仅需要写个循环而已。
第三步是系统设计,如果你只是小打小闹,保存两三篇文章,那么你完全没必要使用代码保存。手动在页面中ctrl+s即可保存到本地。但如果你想要做出一个通用的系统或者项目。那么你要考虑的事情可就多了。比如如何规划数据库和表之间的关联关系,如何实现去重,如何实现增量,如何定时运行,有的可能还会有些反爬什么的都需要你去解决。
第四步就是代码实现,同样没啥好说的,这集也不会给出代码,因为这个项目存在于我的脑子中,我也没有做出来它。这集我们主要看下简单的示例。然后项目目录如何规划,可以抽象出哪些通用的方法,可以使用什么设计模式,如何优雅的兼容多个平台等。
好,上面就是我们简单的分析,下面我们将每一步的内容用代码或者设计具体化一下。
首先第一步:如何使用DrissionPage保存html源代码与mhtml文件。
from DrissionPage import Chromium,ChromiumPage
browser = Chromium()
tab = browser.latest_tab
tab.get('https://drissionpage.cn/browser_control/get_page_info#-save')
print(tab.html)
print(tab.save(name='1.mhtml'))第二步:批量,就是个循环,没啥演示的,跳过。
第三步:系统设计,代码没有,所以没啥设计,数据存储可以大致设计下,我觉得在开发流程中数据库还是很重要的。我们这里就对大致的数据存储进行分析下
- 博主信息:id,主页链接,平台,文章列表链接
- 文章列表信息:链接,采集状态(是否采集)
- 文章详情信息:mthml,html源代码
- 文章详情结构化信息:从html中提取到的结构化信息