日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python爬虫实例——中国电影票房

發布時間:2023/12/10 python 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python爬虫实例——中国电影票房 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

剛好最近在做一個關于中國電影市場的分析,所以這篇實例就誕生啦!!!

一、觀察網頁

我所爬取的網站是:中國票房——年度票房。
網址甩出來:http://www.cbooo.cn/year?year=2019

我們需要的數據是從2015年到2019年,每部電影的名稱詳情頁url、類型、總票房國家及地區、上映日期

點進去的頁面是介個樣子滴~它總共有25條數據,就是2019年的TOP25!

左上角框出來的地方是可以選擇年份的,我們可以通過它來觀察不同年份間url的相似點。如下圖:我們觀察到他們的網址是有規律的,即:http://www.cbooo.cn/year?year= + 年份 這樣我們就可以直接獲取到所有的網址

二、分步實現

1.導包
導入我們所需要的包

import os import requests from lxml import etree import pandas as pd

2.定義獲取數據的函數
因為每年都要請求一遍,所以為了方便,我們將它寫成一個函數,直接調用,方便我們自己。

headers = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) \AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'} cookies = {'SUB':'_2A25wmfkgDeRhGeBI4lcU9irOzD2IHXVQZYdorDV6PUJbkdAKLUvAkW1NRkZNESdNnLdqXAeecDulr43bOma1k9ut'} def get_data(url):r = requests.get(url, headers=headers, cookies=cookies, timeout=30)r.raise_for_status() #查看是否正常,正常返回200,否則返回404等r.encoding='utf-8'return r.text

此函數會返回url的網頁源代碼的內容,以url='http://www.cbooo.cn/year?year=2019’為例,下圖為get_data后的結果,得到data后,我們就可以解析它,獲取到我們想要的部分

3.提前創建csv表

local_data='D:/Learn' local_main2=local_data+'/'+'movie.csv'#設置路徑 if not os.path.exists(local_main2):data = pd.DataFrame(columns=['電影名稱','電影詳情頁','電影類型','電影票房','國家及地區','上映時間'])data.to_csv(local_main2,index = None,encoding="utf_8_sig")

經過創建,在D盤下的learn文件夾下就會建好一個名為movie的csv空表。如下圖:

4.獲取近五年url

urls=[] for year in range(5):urls.append('http://www.cbooo.cn/year?year={}'.format(2019-year))

結果如下:


5.獲取我們需要的信息
這里我使用的是xpath,使用beautifulsoup也可以達到同樣的效果

for url in urls:data = get_data(url)selector = etree.HTML(data)url = selector.xpath('//td[@class="one"]/a/@href') #詳情頁urlname = selector.xpath('//td[@class="one"]/a/@title') #電影名稱movie_type = selector.xpath('//*[@id="tbContent"]//tr//td[2]/text()') #電影類型box_office = selector.xpath('//*[@id="tbContent"]//tr//td[3]/text()') #電影票房country = selector.xpath('//*[@id="tbContent"]//tr//td[6]/text()') #國家及地區time = selector.xpath('//*[@id="tbContent"]//tr//td[7]/text()') #上映時間

6.將獲取的信息存入剛創建的csv

for i in range(len(url)):data = pd.DataFrame({'電影名稱':name[i],'電影詳情頁':url[i],'電影類型':movie_type[i],'電影票房':box_office[i],'國家及地區':country[i],'上映時間':time[i]},columns=['電影名稱','電影詳情頁','電影類型','電影票房','國家及地區','上映時間'],index=[0])data.to_csv(local_main2,index = None,mode = 'a' ,header= None,sep=',',encoding="utf_8_sig")

至此,我們的電影票房就獲取完成啦!

三、匯總代碼

完整代碼如下:

# -*- coding: utf-8 -*- """ Created on Sat Dec 7 09:57:06 2019@author: chensiyi """import os import requests from lxml import etree import pandas as pdheaders = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) \AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'} cookies = {'SUB':'_2A25wmfkgDeRhGeBI4lcU9irOzD2IHXVQZYdorDV6PUJbkdAKLUvAkW1NRkZNESdNnLdqXAeecDulr43bOma1k9ut'} def get_data(url):r = requests.get(url, headers=headers, cookies=cookies, timeout=30)r.raise_for_status() #查看是否正常,正常返回200,否則返回404等r.encoding='utf-8'return r.textlocal_data='D:/Learn' local_main2=local_data+'/'+'movie.csv'#設置路徑 if not os.path.exists(local_main2):data = pd.DataFrame(columns=['電影名稱','電影詳情頁','電影類型','電影票房','國家及地區','上映時間'])data.to_csv(local_main2,index = None,encoding="utf_8_sig")urls=[] for year in range(5):urls.append('http://www.cbooo.cn/year?year={}'.format(2019-year))for url in urls:data = get_data(url)selector = etree.HTML(data)url = selector.xpath('//td[@class="one"]/a/@href') #詳情頁urlname = selector.xpath('//td[@class="one"]/a/@title') #電影名稱movie_type = selector.xpath('//*[@id="tbContent"]//tr//td[2]/text()') #電影類型box_office = selector.xpath('//*[@id="tbContent"]//tr//td[3]/text()') #電影票房country = selector.xpath('//*[@id="tbContent"]//tr//td[6]/text()') #國家及地區time = selector.xpath('//*[@id="tbContent"]//tr//td[7]/text()') #上映時間for i in range(len(url)):data = pd.DataFrame({'電影名稱':name[i],'電影詳情頁':url[i],'電影類型':movie_type[i],'電影票房':box_office[i],'國家及地區':country[i],'上映時間':time[i]},columns=['電影名稱','電影詳情頁','電影類型','電影票房','國家及地區','上映時間'],index=[0])data.to_csv(local_main2,index = None,mode = 'a' ,header= None,sep=',',encoding="utf_8_sig")

爬取的數據如下(部分):

總結

以上是生活随笔為你收集整理的python爬虫实例——中国电影票房的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。