专栏:013:我要你知道实时票房.

用理工科思维看待这个世界

系列爬虫专栏

初学者,尽力实现最小化学习系统

主题:selenium + PhantomJS + sqlalchemy

selenium + PhantomJS 教程 SQLALchemy 教程

0:说明

实现编程学习的最小化系统。

使用selenium + PhantonJS获取网页源代码,此工具在异步加载处网页中很好用。之前使用的不多,觉得尝试使用此工具操作爬虫,目的是抓取中国票房首页的数据, 采用Xpath对数据进行解析。使用ORM技术实现自动创建数据表,并将数据存储入MySQL数据库中。

任务:抓取图示内容:

01.png


1:任务分解

  • 抓取网页源代码
  • 对网页源代码进行解析,抓取需要的数据
  • 数据结构化
  • 创建数据表
  • 将结构化数据存储入数据库中

技能需求:

  • selenium 的基本使用
  • unittest 的基本使用
  • sqlalchemy的基本使用
  • xpath语法的掌握
  • MySQL数据基本知识

2. 实战

全部数据: //div[@id="top_list"]/table/tbody/tr/td 图示:

02.png

  • sqlalchemy 的使用
    • 创建连接
    • 声明映射文件
    • 创建模式
    • 初始化映射类实例
    • 创建回话
    • 持久化实例对象
# 核心代码
engine = create_engine("mysql://root:123456@localhost:3306/test?charset=utf8", echo = True) # 创建连接
Base = declarative_base()
metadata = MetaData(engine)
sql_table = Table("Realtime_film", metadata,
                  Column("id", Integer, primary_key=True),
                  Column("Rank", String(32)),
                  Column("Moviename", String(32)),
                  Column("Realtime", String(12)),
                  Column("Ratio_of_movie", String(16)),
                  Column("sum_movie", String(128)),
                  Column("Ration_of_open", String(128)),
                  Column("Screen_time", String(128)),
                    mysql_engine='InnoDB',
                    mysql_charset='utf8')  # 表声明,定义字段及类型
sql_table.create()  # 创建数据库表
sql_table_2 = Table("Realtime_film", metadata, autoload=True)
i = sql_table_2.insert()
# for one in Movie_datas:
#     i.execute(one)
con = engine.connect()
con.execute(i, Movie_datas)  # 插入全部数据

效果展示: 自动在本地数据库创建数据表,并把数据插入数据库中.(省去了编写了sql语句)

03.png

完整版代码

3:总结

崇尚的思维是: 了解这是什么。 知道应该怎么做。 学会亲自动手。

最怕陷入学而不思则罔,思而不学则殆的地步

关于本人: 只有一个职业:学生 只有一个任务:学习 在这条路上,充满无尽的困境,我希望成为一个精神世界丰满的人。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏牛客网

快手Java开发面经(2技术面)

如果你要做一件事,请不要炫耀,也不要宣扬,只管安安静静的去做。因为那是你自己的事,别人不知道你的情况,也不可能帮你去实现。千万不要因为虚荣心而炫耀。也不要因为别...

70220
来自专栏更流畅、简洁的软件开发方式

【自然框架】用CMS的栏目举例,聊一聊从“一层”到“三层”的变化

  做CMS最基本的一个功能就是做一个栏目导航,如果这个导航想做成动态的(即需要从数据库里提取数据)那么要如何实现呢? 简单的方法——DataTable   ...

23590
来自专栏数据和云

数据恢复 - ORA-600 18018错误的重现和修复

小心,有一个ORA-600的错误正在靠近。 对于Oracle的管理员来说,600是一个熟悉而陌生的数字,熟悉的是很多的用户都会遇到几次,陌生的是绝大数情况下都...

36360
来自专栏程序员的SOD蜜

ORM查询语言(OQL)简介--概念篇

相关文章内容索引: ORM查询语言(OQL)简介--概念篇 ORM查询语言(OQL)简介--实例篇 ORM查询语言(OQL)简介--高级篇:脱胎换骨 ORM查...

289100
来自专栏大数据杂谈

Python 爬虫实践:《战狼2》豆瓣影评分析

25250
来自专栏我的博客

学会编程更要学会找错误【二】

页面乱码 页面乱码可能是初学者最最头疼的问题了,这里给你说个我经常用的办法 页面编码全用utf-8,数据库建立表设置字段的时候有个整理,我经常使用utf8_...

30180

Map-Reduce风格:数据感知vFabric GemFire中的分布式查询

大量快速的数据正在为当今市场上一些最有趣的计算机会提供动力。但想要达成目标,我们需要改变数据层的方法。企业正试图从昂贵的大型架构转向虚拟化数据中心,并更有效地利...

30360
来自专栏圆方圆学院精选

【刘文彬】EOS技术研究:合约与数据库交互

原文链接:醒者呆的博客园,https://www.cnblogs.com/Evsward/p/multi_index.html

13320
来自专栏牛客网

爱奇艺面经,Java后台开发

1,介绍下快排和归并各自的思路,优缺点 (讲了讲思路,然后说了下稳定性,最坏情况复杂度)知道Java里面的sort是哪种实现吗?(不知道,和面试官说了说Cpp里...

418150
来自专栏杨建荣的学习笔记

Oracle表空间检测异常的问题诊断

不知道大家在工作中的表空间管理情况如何,大体会分为两派。以前的公司我们更喜欢直接把空间都分配好,比如500G的容量规划,那就提前准备500G,另外一类是...

39290

扫码关注云+社区

领取腾讯云代金券