貓哥教你寫爬蟲 040--存儲數據-做業

小做業:爬取貓眼電影top100, 保存 電影名, 排名, 評分, 主演, 封面圖片, 上映時間到數據庫

maoyan.com/board/4

1559375538602

代碼

import requests, pymysql
from bs4 import BeautifulSoup
# 鏈接數據庫
connection = pymysql.connect(host='localhost', user='root', password='root', port=3306)
# 建立遊標
cursor = connection.cursor()
# 建庫, 建表
def create_table():
    # 若是存在即刪除數據庫 maoyan
    cursor.execute('drop database if exists maoyan')
    # 建立maoyan數據庫, 字符集utf8
    cursor.execute('create database maoyan character set utf8')
    # 使用數據庫
    cursor.execute('use maoyan')
    # 建立數據表movie, id主鍵, title電影名, score評分, img圖片路徑, actors主演, release_date上映日期, ranking排名
    cursor.execute(''' create table movie( id int primary key auto_increment, title varchar(255) not null, score decimal(2,1) not null, img varchar(255) not null, actors varchar(255) not null, release_date varchar(20) not null, ranking int not null ) ''')
    # 提交sql語句, 增刪改須要提交
    connection.commit()
# 獲取電影信息
def get_movies():
    # https://maoyan.com/board/4?offset=0
    # 0,1,2,3,4,5,6,7,8,9
    for i in range(1):
        print(i)
        soup = BeautifulSoup(requests.get('https://maoyan.com/board/4?offset={}'.format(i*10)).text, 'html.parser')
        # 在dl裏面找dd, 每一個dd都保存了一部電影的信息
        for dd in soup.find('dl', class_='board-wrapper').find_all('dd'):
            # 電影標題
            title = dd.find('a')['title']
            # 電影的圖片連接
            img = dd.find('img', class_='board-img')['data-src'].split('jpg')[0]+'jpg'
            # 電影的主演
            actors = dd.find('p', class_='star').text.strip()
            # 電影的評分
            score = dd.find('p', class_='score').text
            # 電影的排行
            ranking = dd.find('i').text
            # 電影的上映日期
            release_date = dd.find('p',class_="releasetime").text[5:15]
            # 插入數據庫
            add_movies(title, img, actors, score, ranking, release_date)
# 把電影信息寫入數據庫
def add_movies(title, img, actors, score, ranking, release_date):
    # 拼接sql語句
    sql = "insert into movie(title, img, actors, score, ranking, release_date) values({},{},{},{},{},{})".format(
        repr(title), repr(img), repr(actors), score, ranking, repr(release_date))
    print(sql)
    # 執行
    cursor.execute(sql)
    # 提交
    connection.commit()
def query_movie():
    sql = "select * from movie"
    # 執行sql
    cursor.execute(sql)
    # 獲取全部數據
    res = cursor.fetchall()
    for i in res:
        print(i)
if __name__ == "__main__":
    create_table()
    get_movies()
    query_movie()
複製代碼

快速跳轉:

貓哥教你寫爬蟲 000--開篇.md
貓哥教你寫爬蟲 001--print()函數和變量.md
貓哥教你寫爬蟲 002--做業-打印皮卡丘.md
貓哥教你寫爬蟲 003--數據類型轉換.md
貓哥教你寫爬蟲 004--數據類型轉換-小練習.md
貓哥教你寫爬蟲 005--數據類型轉換-小做業.md
貓哥教你寫爬蟲 006--條件判斷和條件嵌套.md
貓哥教你寫爬蟲 007--條件判斷和條件嵌套-小做業.md
貓哥教你寫爬蟲 008--input()函數.md
貓哥教你寫爬蟲 009--input()函數-人工智能小愛同窗.md
貓哥教你寫爬蟲 010--列表,字典,循環.md
貓哥教你寫爬蟲 011--列表,字典,循環-小做業.md
貓哥教你寫爬蟲 012--布爾值和四種語句.md
貓哥教你寫爬蟲 013--布爾值和四種語句-小做業.md
貓哥教你寫爬蟲 014--pk小遊戲.md
貓哥教你寫爬蟲 015--pk小遊戲(全新改版).md
貓哥教你寫爬蟲 016--函數.md
貓哥教你寫爬蟲 017--函數-小做業.md
貓哥教你寫爬蟲 018--debug.md
貓哥教你寫爬蟲 019--debug-做業.md
貓哥教你寫爬蟲 020--類與對象(上).md
貓哥教你寫爬蟲 021--類與對象(上)-做業.md
貓哥教你寫爬蟲 022--類與對象(下).md
貓哥教你寫爬蟲 023--類與對象(下)-做業.md
貓哥教你寫爬蟲 024--編碼&&解碼.md
貓哥教你寫爬蟲 025--編碼&&解碼-小做業.md
貓哥教你寫爬蟲 026--模塊.md
貓哥教你寫爬蟲 027--模塊介紹.md
貓哥教你寫爬蟲 028--模塊介紹-小做業-廣告牌.md
貓哥教你寫爬蟲 029--爬蟲初探-requests.md
貓哥教你寫爬蟲 030--爬蟲初探-requests-做業.md
貓哥教你寫爬蟲 031--爬蟲基礎-html.md
貓哥教你寫爬蟲 032--爬蟲初體驗-BeautifulSoup.md
貓哥教你寫爬蟲 033--爬蟲初體驗-BeautifulSoup-做業.md
貓哥教你寫爬蟲 034--爬蟲-BeautifulSoup實踐.md
貓哥教你寫爬蟲 035--爬蟲-BeautifulSoup實踐-做業-電影top250.md
貓哥教你寫爬蟲 036--爬蟲-BeautifulSoup實踐-做業-電影top250-做業解析.md
貓哥教你寫爬蟲 037--爬蟲-寶寶要聽歌.md
貓哥教你寫爬蟲 038--帶參數請求.md
貓哥教你寫爬蟲 039--存儲數據.md
貓哥教你寫爬蟲 040--存儲數據-做業.md
貓哥教你寫爬蟲 041--模擬登陸-cookie.md
貓哥教你寫爬蟲 042--session的用法.md
貓哥教你寫爬蟲 043--模擬瀏覽器.md
貓哥教你寫爬蟲 044--模擬瀏覽器-做業.md
貓哥教你寫爬蟲 045--協程.md
貓哥教你寫爬蟲 046--協程-實踐-吃什麼不會胖.md
貓哥教你寫爬蟲 047--scrapy框架.md
貓哥教你寫爬蟲 048--爬蟲和反爬蟲.md
貓哥教你寫爬蟲 049--完結撒花.mdhtml

相關文章
相關標籤/搜索