1. 程式人生 > >python實踐2——利用爬蟲抓取豆瓣電影TOP250資料及存入資料到MySQL資料庫

python實踐2——利用爬蟲抓取豆瓣電影TOP250資料及存入資料到MySQL資料庫

這次以豆瓣電影TOP250網為例編寫一個爬蟲程式,並將爬取到的資料(排名、電影名和電影海報網址)存入MySQL資料庫中。下面是完整程式碼:

Ps:在執行程式前,先在MySQL中建立一個數據庫"pachong"。

import pymysql
import requests
import re


#獲取資源並下載
def resp(listURL):
    #連線資料庫
    conn = pymysql.connect(
        host = '127.0.0.1',
        port = 3306,
        user = 'root',
        password = '******',  #資料庫密碼請根據自身實際密碼輸入
        database = 'pachong', 
        charset = 'utf8'
    )

    #建立資料庫遊標
    cursor = conn.cursor()

    #建立列表t_movieTOP250(執行sql語句)
    cursor.execute('create table t_movieTOP250(id INT PRIMARY KEY 												auto_increment NOT NULL ,movieName VARCHAR(20) NOT NULL 									,pictrue_address VARCHAR(100))')

    try:
        # 爬取資料
        for urlPath in listURL:
            # 獲取網頁原始碼
            response = requests.get(urlPath)
            html = response.text

            # 正則表示式
            namePat = r'alt="(.*?)" src='
            imgPat = r'src="(.*?)" class='

            # 匹配正則(排名【用資料庫中id代替,自動生成及排序】、電影名、電影海報(圖片地址))
            res2 = re.compile(namePat)
            res3 = re.compile(imgPat)
            textList2 = res2.findall(html)
            textList3 = res3.findall(html)

            # 遍歷列表中元素,並將資料存入資料庫
            for i in range(len(textList3)):
                cursor.execute('insert into t_movieTOP250(movieName,pictrue_address) 									VALUES("%s","%s")' % (textList2[i],textList3[i]))

        #從遊標中獲取結果
        cursor.fetchall()

        #提交結果
        conn.commit()
        print("結果已提交")

    except Exception as e:
        #資料回滾
        conn.rollback()
        print("資料已回滾")

    #關閉資料庫
    conn.close()

#top250所有網頁網址
def page(url):
    urlList = []
    for i in range(10):
        num = str(25*i)
        pagePat = r'?start=' + num + '&filter='
        urL = url+pagePat
        urlList.append(urL)
    return urlList


if __name__ == '__main__':
    url = r"https://movie.douban.com/top250"
    listURL = page(url)
    resp(listURL)

結果如下圖: