㈠ 第5課 實例二:爬取電影
1. 選擇一個網站: https://www.douban.com
2. 在進行爬取之前,我們先去看看它的robots協議。
協議網址: https://www.douban.com /robots.txt
3. 進入首頁 https://movie.douban.com/top250?start=0&filter= ,打開檢查工具,在Elements里查看這個網頁,是什麼結構。
點擊開發者工具左上角的小箭頭,選中「肖申克的救贖」,這樣就定位了電影名的所在位置,審查元素中顯示<span class="title">:<span>標簽內的文本,class屬性;推薦語和評分也是如此,<span class='inq'>,<span class='rating_num'>;序號:<em class>,<em>標簽內的文本,class屬性;推薦語<span class='inq'>;鏈接是<a>標簽里href的值。最後,它們最小共同父級標簽,是<li>。
4. 我們再換個電影驗證下找的規律是否正確。
5. check後,我們再看一共10頁,每頁的url有什麼相關呢?
第1頁: https://movie.douban.com/top250?start=0&filter=
第3頁: https://movie.douban.com/top250?start=50&filter=
第7頁: https://movie.douban.com/top250?start=150&filter=
發現只有start後面是有變化,規律就是第N頁,start=(N-1)*25
6. 基於以上分析,我們有兩種寫爬蟲的思路。
思路一:先爬取最小共同父級標簽 <li>,然後針對每一個父級標簽,提取裡面的序號/電影名/評分/推薦語/鏈接。
思路二:分別提取所有的序號/所有的電影名/所有的評分/所有的推薦語/所有的鏈接,然後再按順序一一對應起來。
import requests# 引用requests庫
from bs4 import BeautifulSoup# 引用BeautifulSoup庫
res_films=requests.get('https://movie.douban.com/')# 獲取數據
bs_films=BeautifulSoup(res_films.text,'html.parser')# 解析數據
fil_title=bs_films.find_all(class_='title')
fil_num=bs_films.find_all(class_="")
list_all=[]# 創建一個空列表,用於存儲信息
for x in range(len(fil_num)):
list_films=[fil_num[x].text[18:-14],fil_title[x].find('a')['href']]
list_all.append(list_films)
print(list_all)
㈡ Python爬蟲實戰,Python多線程抓取5千多部最新電影下載鏈接
利用Python多線程爬了5000多部最新電影下載鏈接,廢話不多說~
讓我們愉快地開始吧~
Python版本: 3.6.4
相關模塊:
requests模塊;
re模塊;
csv模塊;
以及一些Python自帶的模塊。
安裝Python並添加到環境變數,pip安裝需要的相關模塊即可。
拿到鏈接之後,接下來就是繼續訪問這些鏈接,然後拿到電影的下載鏈接
但是這里還是有很多的小細節,例如我們需要拿到電影的總頁數,其次這么多的頁面,一個線程不知道要跑到什麼時候,所以我們首先先拿到總頁碼,然後用多線程來進行任務的分配
我們首先先拿到總頁碼,然後用多線程來進行任務的分配
總頁數其實我們用re正則來獲取
爬取的內容存取到csv,也可以寫個函數來存取
開啟4個進程來下載鏈接
您學廢了嗎?最後祝大家天天進步!!學習Python最重要的就是心態。我們在學習過程中必然會遇到很多難題,可能自己想破腦袋都無法解決。這都是正常的,千萬別急著否定自己,懷疑自己。如果大家在剛開始學習中遇到困難,想找一個python學習交流環境,可以加入我們,領取學習資料,一起討論,會節約很多時間,減少很多遇到的難題。
㈢ Python爬蟲實戰(1)requests爬取豆瓣電影TOP250
爬取時間:2020/11/25
系統環境:Windows 10
所用工具:Jupyter NotebookPython 3.0
涉及的庫:requestslxmlpandasmatplotlib
umpy
蛋肥想法: 先將電影名稱、原名、評分、評價人數、分類信息從網站上爬取下來。
蛋肥想法: print數據列表後發現電影原名、分類信息等存在不需要的字元,需預先處理;同時因為後續想做一個豆瓣電影TOP250的維度分布圖,而同一電影存在多個發行國家、類型(如「法國 美國 / 劇情 動作 犯罪」),為了簡(偷)便(懶),這里均取第一個作為記入的數據;最後將數據保存為xlsx。
蛋肥想法: 蛋肥想知道在豆瓣電影TOP250中年份、國家、類型的維度數據,為了練手,使用剛才保存成xlsx的數據,並分別畫成雷達圖、柱形圖、扇形圖。
㈣ 從電影網站爬取數據並進行可視化分析會用到哪些數據
從電影網站爬取數據並進行可視化分析會用到的數據如下。
1、beautifulsoup、re、urllib庫。
2、SQLite包,數據可視化方面主要用到flask框架、echarts和wordcloud等。
3、此類數據可以搭建簡單的數據可視化網站。
㈤ 怎樣用python獲取電影
實驗室這段時間要採集電影的信息,給出了一個很大的數據集,數據集包含了4000多個電影名,需要我寫一個爬蟲來爬取電影名對應的電影信息。
其實在實際運作中,根本就不需要爬蟲,只需要一點簡單的Python基礎就可以了。
前置需求:
Python3語法基礎
HTTP網路基礎
===================================
第一步,確定API的提供方。IMDb是最大的電影資料庫,與其相對的,有一個OMDb的網站提供了API供使用。這家網站的API非常友好,易於使用。
第二步,確定網址的格式。
第三步,了解基本的Requests庫的使用方法。
㈥ python爬取豆辮電影時候怎麼樣找到影片的url
看你爬什麼咯?如果是網頁,那就是頁面代碼;如果是制定內容,那爬取的時候就給定匹配的關鍵字,返回你指定的數據(字串,list,json都可以)
㈦ 用Python爬蟲爬取愛奇藝上的VIP電影視頻,是違法行為嗎
屬於違法行為,情節嚴重者,愛奇藝將有權對您追究法律責任
㈧ python爬蟲抓取電影top20排名怎麼寫
初步接觸python爬蟲(其實python也是才起步),發現一段代碼研究了一下,覺得還比較有用處,Mark下。
上代碼:
#!/usr/bin/python#coding=utf-8#Author: Andrew_liu#mender:cy"""
一個簡單的Python爬蟲, 用於抓取豆瓣電影Top前100的電影的名稱
Anthor: Andrew_liu
mender:cy
Version: 0.0.2
Date: 2017-03-02
Language: Python2.7.12
Editor: JetBrains PyCharm 4.5.4
"""import stringimport reimport urllib2import timeclass DouBanSpider(object) :
"""類的簡要說明
主要用於抓取豆瓣Top100的電影名稱
Attributes:
page: 用於表示當前所處的抓取頁面
cur_url: 用於表示當前爭取抓取頁面的url
datas: 存儲處理好的抓取到的電影名稱
_top_num: 用於記錄當前的top號碼
"""
def __init__(self):
self.page = 1
self.cur_url = "h0?start={page}&filter=&type="
self.datas = []
self._top_num = 1
print u"豆瓣電影爬蟲准備就緒, 准備爬取數據..."
def get_page(self, cur_page):
"""
根據當前頁碼爬取網頁HTML
Args:
cur_page: 表示當前所抓取的網站頁碼
Returns:
返回抓取到整個頁面的HTML(unicode編碼)
Raises:
URLError:url引發的異常
"""
url = self.cur_url try:
my_page = urllib2.urlopen(url.format(page=(cur_page - 1) * 25)).read().decode("utf-8") except urllib2.URLError, e: if hasattr(e, "code"): print "The server couldn't fulfill the request."
print "Error code: %s" % e.code elif hasattr(e, "reason"): print "We failed to reach a server. Please check your url and read the Reason"
print "Reason: %s" % e.reason return my_page def find_title(self, my_page):
"""
通過返回的整個網頁HTML, 正則匹配前100的電影名稱
Args:
my_page: 傳入頁面的HTML文本用於正則匹配
"""
temp_data = []
movie_items = re.findall(r'<span.*?class="title">(.*?)</span>', my_page, re.S) for index, item in enumerate(movie_items): if item.find(" ") == -1:
temp_data.append("Top" + str(self._top_num) + " " + item)
self._top_num += 1
self.datas.extend(temp_data) def start_spider(self):
"""
爬蟲入口, 並控制爬蟲抓取頁面的范圍
"""
while self.page <= 4:
my_page = self.get_page(self.page)
self.find_title(my_page)
self.page += 1def main():
print u"""
###############################
一個簡單的豆瓣電影前100爬蟲
Author: Andrew_liu
mender: cy
Version: 0.0.2
Date: 2017-03-02
###############################
"""
my_spider = DouBanSpider()
my_spider.start_spider()
fobj = open('/data/moxiaokai/HelloWorld/cyTest/blogcode/top_move.txt', 'w+') for item in my_spider.datas: print item
fobj.write(item.encode("utf-8")+'
')
time.sleep(0.1) print u"豆瓣爬蟲爬取完成"if __name__ == '__main__':
main()
運行結果: