Python爬蟲(chóng)實(shí)現(xiàn)熱門電影信息采集
一、前言
好不容易女神喊我去看電影,但是她又不知道看啥,那么我當(dāng)然得準(zhǔn)備準(zhǔn)備~
二、前期準(zhǔn)備
1、使用的軟件
python 3.8 開(kāi)源 免費(fèi)的 (統(tǒng)一 3.8)
Pycharm YYDS python最好用的編輯器 不接受反駁…
2、需要用的模塊
requests >>> 數(shù)據(jù)請(qǐng)求模塊 pip install requests
parsel? ?>>> 數(shù)據(jù)解析模塊 pip install parsel
csv
3、模塊安裝問(wèn)題
模塊安裝問(wèn)題:
1)、如何安裝python第三方模塊:
第一種:win + R 輸入 cmd 點(diǎn)擊確定, 輸入安裝命令 pip install 模塊名 (pip install requests) 回車。
第二種:在pycharm中點(diǎn)擊Terminal(終端) 輸入安裝命令
2)安裝失敗原因:
第一種: pip 不是內(nèi)部命令
解決方法: 設(shè)置環(huán)境變量
第二種: 出現(xiàn)大量報(bào)紅 (read time out)
解決方法: 因?yàn)槭蔷W(wǎng)絡(luò)鏈接超時(shí), 需要切換鏡像源。
清華:https://pypi.tuna.tsinghua.edu.cn/simple 阿里云:http://mirrors.aliyun.com/pypi/simple/ 中國(guó)科技大學(xué) https://pypi.mirrors.ustc.edu.cn/simple/ 華中理工大學(xué):http://pypi.hustunique.com/ 山東理工大學(xué):http://pypi.sdutlinux.org/ 豆瓣:http://pypi.douban.com/simple/ 例如:pip3 install -i https://pypi.doubanio.com/simple/ 模塊名
第三種: cmd里面顯示已經(jīng)安裝過(guò)了, 或者安裝成功了, 但是在pycharm里面還是無(wú)法導(dǎo)入。
解決方法: 可能安裝了多個(gè)python版本 (anaconda 或者 python 安裝一個(gè)即可) 卸載一個(gè)就好,或者你pycharm里面python解釋器沒(méi)有設(shè)置好。
4、如何配置pycharm里面的python解釋器?
如何配置pycharm里面的python解釋器?
- 選擇file(文件) >>> setting(設(shè)置) >>> Project(項(xiàng)目) >>> python interpreter(python解釋器)
- 點(diǎn)擊齒輪, 選擇add
- 添加python安裝路徑
5、pycharm如何安裝插件?
- 選擇file(文件) >>> setting(設(shè)置) >>> Plugins(插件);
- 點(diǎn)擊 Marketplace 輸入想要安裝的插件名字 比如:翻譯插件 輸入 translation;
- 選擇相應(yīng)的插件點(diǎn)擊 install(安裝) 即可;
- 安裝成功之后 是會(huì)彈出 重啟pycharm的選項(xiàng) 點(diǎn)擊確定, 重啟即可生效;
三、思路
爬蟲(chóng)獲取數(shù)據(jù)是要分析服務(wù)器返回的數(shù)據(jù)內(nèi)容,無(wú)論你爬取任何網(wǎng)站數(shù)據(jù),都是可以按照這個(gè)幾步驟來(lái)。
1、明確需求
我們要爬取的內(nèi)容是什么 https://movie.douban.com/top250,要分析我們的想要數(shù)據(jù), 可以從哪里獲取/哪里來(lái)的… (數(shù)據(jù)來(lái)源分析)
用開(kāi)發(fā)者工具進(jìn)行抓包(數(shù)據(jù)包)分析,靜態(tài)網(wǎng)頁(yè)/網(wǎng)頁(yè)上面看到的數(shù)據(jù)內(nèi)容,在網(wǎng)頁(yè)源代碼里面都有。
2、發(fā)送請(qǐng)求
開(kāi)發(fā)者工具里面headers ,對(duì)于那個(gè)網(wǎng)址發(fā)送請(qǐng)求,發(fā)送什么樣的請(qǐng)求,攜帶那些請(qǐng)求頭參數(shù)。
3、獲取數(shù)據(jù)
獲取服務(wù)器返回的數(shù)據(jù)內(nèi)容,看服務(wù)器數(shù)據(jù)格式是什么樣的,或者說(shuō)我們想要的數(shù)據(jù)是什么樣的;
獲取文本數(shù)據(jù) response.text
獲取服務(wù)器json字典數(shù)據(jù) response.json()
獲取二進(jìn)制數(shù)據(jù) response.content
保存視頻/音頻/圖片/特定格式的文件內(nèi)容, 都是獲取二進(jìn)制數(shù)據(jù);
4、解析數(shù)據(jù)
提供我們想要的數(shù)據(jù)內(nèi)容
5、保存數(shù)據(jù)
保存本地
四、代碼部分?
import requests # 數(shù)據(jù)請(qǐng)求模塊 pip install requests import parsel # 數(shù)據(jù)解析模塊 pip install parsel import csv # 保存表格數(shù)據(jù) f = open('豆瓣數(shù)據(jù).csv', mode='a', encoding='utf-8', newline='') # 快速批量替換 全選內(nèi)容 使用正則表達(dá)式 替換內(nèi)容 csv_writer = csv.DictWriter(f, fieldnames=[ '電影名字', '導(dǎo)演', '主演', '年份', '國(guó)家', '電影類型', '評(píng)論人數(shù)', '評(píng)分', '概述', '詳情頁(yè)', ]) csv_writer.writeheader() for page in range(0, 250, 25): url = f'https://movie.douban.com/top250?start={page}&filter=' # headers 請(qǐng)求頭 用來(lái)偽裝python代碼 為了防止爬蟲(chóng)程序被服務(wù)器識(shí)別出來(lái), # User-Agent 瀏覽器的基本標(biāo)識(shí) 用戶代理 直接復(fù)制粘貼的 #Python學(xué)習(xí)交流群872937351 ,免費(fèi)領(lǐng)取視頻/電子書(shū)/解答等等 # 披著羊皮的狼 爬蟲(chóng)程序 >>> 狼 headers >>> 羊皮 服務(wù)器數(shù)據(jù) >>> 羊圈 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36' } # 發(fā)送請(qǐng)求 get # 通過(guò)requests數(shù)據(jù)請(qǐng)求模塊里面get請(qǐng)求方法 對(duì)于 url以及發(fā)送請(qǐng)求并且攜帶header請(qǐng)求頭, 最后用response變量接收返回?cái)?shù)據(jù) response = requests.get(url=url, headers=headers) # 獲取數(shù)據(jù) # print(response.text) # 解析數(shù)據(jù) re正則表達(dá)式 css選擇器 xpath 那一種更方便 更加舒服 就用哪一個(gè) # json 鍵值對(duì)取值 # 提取我們想要的數(shù)據(jù)內(nèi)容 # 把獲取下來(lái)的 response.text 網(wǎng)頁(yè)字符串?dāng)?shù)據(jù) 轉(zhuǎn)成selector 對(duì)象 selector = parsel.Selector(response.text) # <Selector xpath=None data='<html lang="zh-CN" class="ua-windows ...'> 對(duì)象 # css選擇器 根據(jù)標(biāo)簽屬性提取數(shù)據(jù) # 第一次解析數(shù)據(jù), 獲取所有l(wèi)i標(biāo)簽 lis = selector.css('.grid_view li') # css選擇器語(yǔ)法 # selector.xpath('//*[@class="grid_view"]/li') # xpath寫法 # [] 列表, 如果說(shuō)我想要一一提取列表里面的元素 怎么做? for li in lis: try: # span:nth-child(1) 組合選擇器 表示的選擇第幾個(gè)span標(biāo)簽 # 1 選擇第一個(gè)span標(biāo)簽 text 獲取標(biāo)簽文本數(shù)據(jù) title = li.css('.hd a span:nth-child(1)::text').get() href = li.css('.hd a::attr(href)').get() # 詳情頁(yè) # li.xpath('//*[@class="hd"]/a/span(1)/text()').get() # get返回字符串?dāng)?shù)據(jù) getall 是返回列表數(shù)據(jù) # get獲取第一個(gè)標(biāo)簽數(shù)據(jù) getall 獲取所有的 move_info = li.css('.bd p::text').getall() actor_list = move_info[0].strip().split(' ') # 列表索引位置取值 # print(actor_list) date_list = move_info[1].strip().split('/') # 列表索引位置取值 director = actor_list[0].replace('導(dǎo)演: ', '').strip() # 導(dǎo)演 actor = actor_list[1].replace('主演: ', '').replace('/', '').replace('...', '') # 演員 date = date_list[0].strip() # 年份 country = date_list[1].strip() # 國(guó)家 move_type = date_list[2].strip() # 電影類型 comment = li.css('.star span:nth-child(4)::text').get().replace('人評(píng)價(jià)', '') # 評(píng)論人數(shù) star = li.css('.star span:nth-child(2)::text').get() # 星級(jí) world = li.css('.inq::text').get() # 概述 # 字符串的高級(jí)方法 # replace() 字符串替換的方法 strip() 去除字符串左右兩端的空格 split() 分割 之后返回的列表 # 字符串如何去除空格呢? # print(title, actor_list, date_list) dit = { '電影名字': title, '導(dǎo)演': director, '主演': actor, '年份': date, '國(guó)家': country, '電影類型': move_type, '評(píng)論人數(shù)': comment, '評(píng)分': star, '概述': world, '詳情頁(yè)': href, } csv_writer.writerow(dit) print(title, director, actor, date, country, move_type, comment, star, world, href, sep=' | ') except: pass
到此這篇關(guān)于Python爬蟲(chóng)實(shí)現(xiàn)熱門電影信息采集的文章就介紹到這了,更多相關(guān)Python爬蟲(chóng)采集信息內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python爬蟲(chóng)采集微博視頻數(shù)據(jù)
- Python爬蟲(chóng)實(shí)戰(zhàn)演練之采集拉鉤網(wǎng)招聘信息數(shù)據(jù)
- Python爬蟲(chóng)實(shí)戰(zhàn)演練之采集糗事百科段子數(shù)據(jù)
- Python爬蟲(chóng)入門案例之回車桌面壁紙網(wǎng)美女圖片采集
- 基于Python爬蟲(chóng)采集天氣網(wǎng)實(shí)時(shí)信息
- Python爬蟲(chóng)_城市公交、地鐵站點(diǎn)和線路數(shù)據(jù)采集實(shí)例
- 講解Python的Scrapy爬蟲(chóng)框架使用代理進(jìn)行采集的方法
- Python制作爬蟲(chóng)采集小說(shuō)
- 詳解Python如何批量采集京東商品數(shù)據(jù)流程
相關(guān)文章
Python打包exe時(shí)各種異常處理方案總結(jié)
今天教大家用Python打包exe時(shí)各種異常處理的方案總結(jié),下文中有非常詳細(xì)的介紹,對(duì)正在學(xué)習(xí)python的小伙伴們很有幫助喲,需要的朋友可以參考下2021-05-05在Ubuntu系統(tǒng)中運(yùn)行python代碼的幾個(gè)步驟
項(xiàng)目中需要在Linux上運(yùn)行自己寫的python腳本,特此記錄一下操作流程,整個(gè)流程比較簡(jiǎn)單,下面這篇文章主要給大家介紹了關(guān)于在Ubuntu系統(tǒng)中運(yùn)行python代碼的幾個(gè)步驟,需要的朋友可以參考下2023-12-12python 實(shí)現(xiàn)mysql自動(dòng)增刪分區(qū)的方法
這篇文章主要介紹了python 實(shí)現(xiàn)mysql自動(dòng)增刪分區(qū)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04python實(shí)現(xiàn)快速文件格式批量轉(zhuǎn)換的方法
這篇文章主要介紹了python實(shí)現(xiàn)快速文件格式批量轉(zhuǎn)換的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10python實(shí)現(xiàn)簡(jiǎn)易聊天對(duì)話框
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡(jiǎn)易聊天對(duì)話框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02Tensorflow 利用tf.contrib.learn建立輸入函數(shù)的方法
這篇文章主要介紹了Tensorflow 利用tf.contrib.learn建立輸入函數(shù)的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-02-02