1. 程式人生 > >爬取豆瓣電影top250提取電影分類進行資料分析

爬取豆瓣電影top250提取電影分類進行資料分析

下的一部分 ”’ content = selector.xpath(‘//div[@class=”info”]/div[@class=”bd”]/p/text()’) print(content) for i in content[1::2]: print(str(i).strip().replace(‘nr’, ”)) # print(str(i).split(‘/’)) i = str(i).split(‘/’) i = i[len(i) – 1] key = i.strip().replace(‘n’, ”).split(‘ ‘) # 這裡的strip和replace的使用目的是去除空格和空行之類 print(key)通過獲取下來的內容我們發現一部電影的各項內容都是用’/’分隔著,我們只需要提取電影分類中的東西,所以我們需要使用
1 i=str(i).split('/')

來把內容分隔成幾項內容,因為電影分類排在最後,所以我們通過
1 i=i[len(i)-1]

來獲取分隔後的最後一項也就是我們需要的電影分類,還有最後一步我們需要完成的,因為一部電影裡面一般都有多個電影分類的標籤,所以我們還要繼續分隔獲取到的電影分類,並且觀察可以知道電影分類之間只是用一個空格隔開,所以我們使用下面一行程式碼就可以分離出各個分類:
1 key=i.strip().replace('\n','').split(' ')

二、接下來就是儲存到mysql資料庫

把電影分類儲存在mysql資料庫以便下面進行資料分析,這裡我們使用到pymysql來連線mysql資料庫,首先我們需要在mysql資料庫建好表:

然後我們通過pymysql把資料儲存到資料庫中,程式碼如下:
首先要連線資料庫:

1234 # 連線mysql資料庫conn=pymysql.connect(host='localhost',user='root',passwd='2014081029',db='mysql',charset='utf8') # user為資料庫的名字,passwd為資料庫的密碼,一般把要把字符集定義為utf8,不然存入資料庫容易遇到編碼問題cur=conn.cursor() # 獲取操作遊標cur.execute('use douban') # 使用douban這個資料庫

在儲存到資料庫之前,我們還有一個需要做得,那就是把250部電影的分類彙總數量,所以我們定義了一個字典來統計電影分類的個數,這裡的程式碼是get_page函式的一部分,程式碼如下:

Python
123456789101112 foriincontent[1::2]:print(str(i).strip().replace('\n\r',''))# print(str(i).split('/'))i=str(i).split('/')i=i[len(i)-1]key=i.strip().replace('\n','').split(' ')print(key)foriinkey:ifinotindouban.keys():douban[i]=1else:douban[i]+=1

然後定義一個儲存函式,執行插入操作,如果出現插入失敗,就執行回滾操作,還有記得在操作完成之後,使用conn.close()和cur.close()來關閉資料庫連線,程式碼如下:

Python
12345678910111213 defsave_mysql(douban):print(douban)# douban在主函式中定義的字典forkey indouban:print(key)print(douban[key])ifkey!='':try:sql='insert douban(類別, 數量) value('+"\'"+key+"\',"+"\'"+str(douban[key])+"\'"+');'cur.execute(sql)conn.commit()except:print('插入失敗')conn.rollback()

三、使用matplotlib進行資料視覺化操作

首先,從資料庫中把電影分類和每個分類的數量分別存入一個列表中,然後使用matplotlib進行視覺化操作,具體如下:

1234567891011121314151617181920212223242526 def pylot_show():sql='select * from douban;'cur.execute(sql)rows=cur.fetchall()# 把表中所有欄位讀取出來count=[]# 每個分類的數量category=[]# 分類forrow inrows:count.append(int(row[2]))category.append(row[1])y_pos=np.arange(len(category))# 定義y軸座標數plt.barh(y_pos,count,align='center',alpha=0.4)# alpha圖表的填充不透明度(0~1)之間plt.yticks(y_pos,category)# 在y軸上做分類名的標記forcount,y_pos inzip(count,y_pos):# 分類個數在圖中顯示的位置,就是那些數字在柱狀圖尾部顯示的數字plt.text(count,y_pos,count,horizontalalignment='center',verticalalignment='center',weight='bold')plt.ylim(+28.0,-1.0)# 視覺化範圍,相當於規定y軸範圍plt.title(u'豆瓣電影250')# 圖表的標題plt.ylabel(u'電影分類')# 圖表y軸的標記plt.subplots_adjust(bottom=0.15)plt.xlabel(u'分類出現次數')# 圖表x軸的標記plt.savefig('douban.png')# 儲存圖片

下面說明一下matplotlib的一些簡單使用,首先我們要匯入matplotlib和numpy的包

12 import numpy asnpimport matplotlib.pyplot asplt

這次視覺化是柱狀圖,這裡給出brah()函式的定義:

barh()
主要功能:做一個橫向條形圖,橫向條的矩形大小為: left, left + width, bottom, bottom + height
引數:barh ( bottom , width , height =0.8, left =0, **kwargs )
返回型別:一個 class 類別, matplotlib.patches.Rectangle**例項
引數說明:

  • bottom: Bars 的垂直位置的底部邊緣
  • width: Bars 的長度
    可選引數:
  • height: bars 的高度
  • left: bars 左邊緣 x 軸座標值
  • color: bars 顏色
  • edgecolor: bars 邊緣顏色
  • linewidth: bar 邊緣寬度;None 表示預設寬度;0 表示不 i 繪製邊緣
  • xerr: 若不為 None,將在 bar 圖上生成 errobars
  • yerr: 若不為 None,將在 bar 圖上生成 errobars
  • ecolor: 指定 errorbar 顏色
  • capsize: 指定 errorbar 的頂部(cap)長度
  • align: ‘edge’ (預設) | ‘center’:‘edge’以底部為準對齊;‘center’以 y 軸作為中心
  • log: [False|True] False (預設),若為 True,使用 log 座標

然後就可以顯示出圖片來了

相關推薦

Python微信公眾號歷史文章進行資料分析

思路: 1. 安裝代理AnProxy,在手機端安裝CA證書,啟動代理,設定手機代理; 2. 獲取目標微信公眾號的__biz; 3. 進入微信公眾號的歷史頁面; 4. 使用Monkeyrunner控制滑屏;獲取更多的歷史訊息; 5. 記錄文章標題,摘要,建立時間,創作型別,地

豆瓣電影top250提取電影分類進行資料分析

下的一部分 ”’ content = selector.xpath(‘//div[@class=”info”]/div[@class=”bd”]/p/text()’) print(content) for i in content[1::2]: print(str(i).strip().replace(‘nr

爬蟲-豆瓣圖書TOP250

info spa data inf code pla select lac lec import requests from bs4 import BeautifulSoup def get_book(url): wb_data = requests.get(u

用Requests和正則表示式豆瓣圖書TOP250

思路和上文大同小異。 import requests from requests.exceptions import RequestException import re import json headers = {'User-Agent':'Mozilla/5.0(Macinto

python3豆瓣圖書Top250圖片

本部落格只爬取豆瓣圖書Top250的圖片,各位愛書的小夥伴趕緊學起來,爬完的效果圖如下: 我這段程式碼的目錄結構如下: 程式碼在此: # -*- coding:utf-8 -*- import requests from lxml import etree def spid

requests+正則表示式豆瓣讀書top250

簡單的python練手專案,通過rquests庫請求得到豆瓣top250網頁原始碼,並通過正則表示式匹配得到對應資訊-書名,作者資訊,評分以及簡介。 網站的URL為’https://book.douban.com/top250?start=0’,但我們拉到底部發現250本讀書的資訊被分成了1

Python3 豆瓣圖書Top250並存入Excel中

#coding=utf-8 import re import xlwt import requests from bs4 import BeautifulSoup def getHtml(url): headers = {'User-Agent': 'Mo

教你用Python豆瓣圖書Top250

質量、速度、廉價,選擇其中兩個 這篇文章將會用到上一篇文章所講的內容,如果沒有看過可以去看一下教你用Python寫excel 今天我們要做的就是用Python爬取豆瓣圖書Top250,先開啟網站看一下 今天不談這豆瓣圖書top250垃圾不垃圾的問題,只看看怎麼用p

利用Requests庫和正則表示式豆瓣影評Top250

說明         最近看了下爬蟲基礎,想寫個部落格來記錄一下,一來是可以方便和我一樣剛入門的小白來參考學習,二來也當做自己的筆記供自己以後查閱。         本文章是利用python3.6和Requests庫(需自行安裝,cmd裡執行pip install r

豆瓣圖書top250

from lxml import etree import requests import csv f=open('H://python/douban.csv','wt',newline='',encoding='utf-8') writer=csv.writ

Python爬蟲實戰(3)-豆瓣音樂Top250資料(超詳細)

前言 首先我們先來回憶一下上兩篇爬蟲實戰文章: 第一篇:講到了requests和bs4和一些網頁基本操作。 第二篇:用到了正則表示式-re模組 今天我們用lxml庫和xpath語法來爬蟲實戰。 1.安裝lxml庫 window:直接用pip去

利用python豆瓣音樂TOP250

最近無所事事,在逼乎看到別人爬取了豆瓣電影,發現挺適合我這菜雞練練手 所以我來爬音樂。。 #對不起豆瓣,又是爬你。。 目標網站:https://music.douban.com/top250?start=0 首先正常瀏覽分析網頁 開啟網址,點選下一頁,發現網站URL變成 

豆瓣音樂Top250並存入xls

import requests from bs4 import BeautifulSoup import re import xlwt class DoubanMusic: def __ini

python 爬蟲實戰(一)豆瓣圖書top250

import requests from lxml import etree with open('booktop250.txt','w',encoding='utf-8') as f: f

python 豆瓣網 搜尋結果 同城活動 資料

主要使用的庫: requests:爬蟲請求並獲取原始碼 re:使用正則表示式提取資料 json:使用JSON提取資料 pandas:使用pandans儲存資料 bs4:網頁程式碼解析 以下是原始碼: #!coding=utf-8 import requests

scrapy豆瓣電影top250

imp port 爬取 all lba item text request top 1 # -*- coding: utf-8 -*- 2 # scrapy爬取豆瓣電影top250 3 4 import scrapy 5 from douban.items i

團隊-張文然-需求分析-python爬蟲分類豆瓣電影信息

工具 新的 翻頁 需求 使用 html 頁面 應該 一個 首先要明白爬網頁實際上就是:找到包含我們需要的信息的網址(URL)列表通過 HTTP 協議把頁面下載回來從頁面的 HTML 中解析出需要的信息找到更多這個的 URL,回到 2 繼續其次還要明白:一個好的列表應該:包含

團隊-豆瓣電影TOP250-需求分析

影評 鏈接 lock 分析 strong str 需求分析 豆瓣 信息 團隊-爬取豆瓣電影TOP250-需求分析 需求:爬取豆瓣電影TOP250 *向用戶展示電影的排名,分數,名字,簡介,導演,演員,前10條影評信息,鏈接信息 實現思路: 分析豆瓣電影TOP250

《團隊-豆瓣電影TOP250-需求分析

round ack 地址 align wid ica san pad ext 需求: 1.搜集相關電影網址 2.實現相關邏輯的代碼 項目步驟: 1.通過豆瓣網搜索關鍵字,獲取相關地址 2.根據第三方包實現相關邏輯《團隊-爬取豆瓣電影TOP250-需求分析》

團隊-豆瓣電影TOP250-開發環境搭建過程

技術 團隊 img mage www. 9.png 官網下載 har image 從官網下載安裝包(http://www.python.org)。 安裝Python 選擇安裝路徑(我選的默認) 安裝Pycharm 1.從官網下載安裝包(ht