小做業:爬取貓眼電影top100, 保存
電影名
,排名
,評分
,主演
,封面圖片
,上映時間
到數據庫maoyan.com/board/4
代碼
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