用理工科思維看待這個世界
初學者段只,盡力實現(xiàn)最小化學習系統(tǒng)
主題:selenium + PhantomJS + sqlalchemy
selenium + PhantomJS 教程
SQLALchemy 教程
0:說明
實現(xiàn)編程學習的最小化系統(tǒng)。
使用selenium + PhantonJS
獲取網(wǎng)頁源代碼溺欧,此工具在異步加載處網(wǎng)頁中很好用痊剖。之前使用的不多矫废,覺得嘗試使用此工具操作爬蟲望伦,目的是抓取中國票房首頁的數(shù)據(jù)秫逝, 采用Xpath對數(shù)據(jù)進行解析贺辰。使用ORM技術(shù)實現(xiàn)自動創(chuàng)建數(shù)據(jù)表户盯,并將數(shù)據(jù)存儲入MySQL數(shù)據(jù)庫中嵌施。
任務(wù):抓取圖示內(nèi)容:
01.png
1:任務(wù)分解
- 抓取網(wǎng)頁源代碼
- 對網(wǎng)頁源代碼進行解析,抓取需要的數(shù)據(jù)
- 數(shù)據(jù)結(jié)構(gòu)化
- 創(chuàng)建數(shù)據(jù)表
- 將結(jié)構(gòu)化數(shù)據(jù)存儲入數(shù)據(jù)庫中
技能需求:
- selenium 的基本使用
- unittest 的基本使用
- sqlalchemy的基本使用
- xpath語法的掌握
- MySQL數(shù)據(jù)基本知識
2. 實戰(zhàn)
- selenium 使用:
參考:點我試試 - xpath 的使用
全部數(shù)據(jù):
//div[@id="top_list"]/table/tbody/tr/td
圖示:
02.png
- sqlalchemy 的使用
- 創(chuàng)建連接
- 聲明映射文件
- 創(chuàng)建模式
- 初始化映射類實例
- 創(chuàng)建回話
- 持久化實例對象
# 核心代碼
engine = create_engine("mysql://root:123456@localhost:3306/test?charset=utf8", echo = True) # 創(chuàng)建連接
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() # 創(chuàng)建數(shù)據(jù)庫表
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) # 插入全部數(shù)據(jù)
效果展示:
自動在本地數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)表艰管,并把數(shù)據(jù)插入數(shù)據(jù)庫中.(省去了編寫了sql語句)
03.png
3:總結(jié)
崇尚的思維是:
了解這是什么。
知道應(yīng)該怎么做蒋川。
學會親自動手牲芋。
最怕陷入學而不思則罔,思而不學則殆的地步
關(guān)于本人:
只有一個職業(yè):學生
只有一個任務(wù):學習
在這條路上捺球,充滿無盡的困境缸浦,我希望成為一個精神世界豐滿的人。