作業來源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3075
一.把爬取的内容儲存取MySQL資料庫
- import pandas as pd
- import pymysql
- from sqlalchemy import create_engine
- conInfo = "mysql+pymysql://user:passwd@host:port/gzccnews?charset=utf8"
- engine = create_engine(conInfo,encoding='utf-8')
- df = pd.DataFrame(allnews)
- df.to_sql(name = ‘news', con = engine, if_exists = 'append', index = False)
二.爬蟲綜合大作業
- 選擇一個熱點或者你感興趣的主題。
- 選擇爬取的對象與範圍。
- 了解爬取對象的限制與限制。
- 爬取相應内容。
- 做資料分析與文本分析。
- 形成一篇文章,有說明、技術要點、有資料、有資料分析圖形化展示與說明、文本分析圖形化展示與說明。
- 文章公開釋出。
爬取目标:爬取豆瓣top250的電影
豆瓣top250的網頁結構:

可以看出該網頁的資料是分别以item,info,bd,star..等等來命名的class
是以我們可以通過class爬取他們的屬性
代碼如下:
# -*- coding: utf-8 -*-
import requests
from lxml import etree
if __name__ == '__main__':
ranks=[]
names=[]
directors=[]
types=[]
juqing=[]
stars=[]
dd=[]
gg=[]
people=[]
grades=[]
quotes=[]
numbers=['0','25','50','75','100','125','150','175','200','225']
for number in numbers:
url = 'https://movie.douban.com/top250?start={}&filter='.format(number)#實作翻頁功能
headers = {
"User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"
}
req = requests.get(url = url,headers = headers)
req.encoding = 'utf-8'
html = req.text
html1=etree.HTML(html)
rank=html1.xpath('//div[@class="item"]/div/em/text()')#x-path位址并擷取文字
for rank1 in rank:
ranks.append(rank1)
name=html1.xpath('//div[@class="info"]/div[1]/a/span[1]/text()')
for name1 in name:
names.append(name1)
director=html1.xpath('//div[@class="bd"]/p[1]/text()')
for director1 in director:
directors.append(director1)
people1=html1.xpath('//div[@class="star"]/span[4]/text()')
for people2 in people1:
people.append(people2)
grade=html1.xpath('//div[@class="star"]/span[@class="rating_num"][@property="v:average"]/text()')
for grade1 in grade:
grades.append(grade1)
quote=html1.xpath('//p[@class="quote"]/span/text()')
for quote1 in quote:
quotes.append(quote1)
for i in directors:
gg.append(i.strip())
for k in gg:
dd.append("".join(k.split()))
for q in range(25):
juqing.append(dd[2*q-1])
for q in range(25):
stars.append(dd[2*q])
import pandas as pd
#字典中的key值即為csv中列名
columns1= ['豆瓣排名','電影名','劇情','導演/主演','評分','評價人數','queto']#csv會按首字母進行排序,是以加表格自己排序
dataframe = pd.DataFrame({'豆瓣排名':ranks,'電影名':names,'劇情':juqing,'導演/主演':stars,'評分':grades,'評價人數':people,'queto':quotes})
#dataframe = pd.DataFrame({'類型':types})
#将DataFrame存儲為csv,index表示是否顯示行名,default=True
dataframe.to_csv("豆瓣電影top250.csv",encoding="utf_8_sig",index=False,columns=columns1)
生成的CSV檔案
檔案分析:
1. 可以看出劇情類的電影在TOP250中的數量是最多的,也就是說比較多人偏向純劇情類型的電影,還有20部電影是劇情音樂類型的,也是會有挺多人的喜歡看得
2. 犯罪劇情奇幻懸疑,劇情愛情家庭,戰争西部片,比較少好的電影,也比較少人看,也有部分的喜劇類電影比較少人看,比如犯罪類型和家庭類喜劇。
3. 從上圖也可以看出來在1994年的電影占豆瓣TOP250比較多的比例,一共32部電影入選。1975和1991年就比較少了,隻有1部電影,13和15年亦是如此隻有一部電影可以進入豆瓣TOP250
4. 從上圖可以分析得出,在豆瓣TOP250中,美國的電影是占了大部分的,250部電影裡就有105部電影,可以說美國在電影産業是遙遙領先的,而中國總共隻有30部電影榜上有名,看來中國的電影産業有待發展
5. 美國在1994年,電影行業迅速發展,一下子有22部電影可以進入豆瓣YOP250。而在中國台灣就比較慘淡了,隻有一部電影可以進入豆瓣TOP250。在1994年之後全球的電影又回到平平淡淡的時期了
6. 我們從所有的評分人數統計可以看出,大多數人會是比較中肯,都會評價8.7或者8.8 分,而且越往兩邊就人數越少。
7. 犯罪類型和喜劇類型收獲過最高分9.6分,看來大家還是比較喜歡看犯罪類型的電影去尋求一些刺激。