❶ 怎麼用python抓取豆瓣上用戶對電影的評分
#!/usr/bin/env python2.7# encoding=utf-8"""
爬取豆瓣電影TOP250 - 完整示例代碼
"""import codecsimport requestsfrom bs4 import BeautifulSoup
DOWNLOAD_URL = 'http://movie.douban.com/top250/'def download_page(url):
return requests.get(url, headers={ 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36'
}).contentdef parse_html(html):
soup = BeautifulSoup(html)
movie_list_soup = soup.find('ol', attrs={'class': 'grid_view'})
movie_name_list = [] for movie_li in movie_list_soup.find_all('li'):
detail = movie_li.find('div', attrs={'class': 'hd'})
movie_name = detail.find('span', attrs={'class': 'title'}).getText()
movie_name_list.append(movie_name)
next_page = soup.find('span', attrs={'class': 'next'}).find('a') if next_page: return movie_name_list, DOWNLOAD_URL + next_page['href'] return movie_name_list, Nonedef main():
url = DOWNLOAD_URL with codecs.open('movies', 'wb', encoding='utf-8') as fp: while url:
html = download_page(url)
movies, url = parse_html(html)
fp.write(u'{movies}\n'.format(movies='\n'.join(movies)))if __name__ == '__main__':
main()
❷ 如何安裝豆瓣FM客戶端
可以通過以下方法下載、安裝沃豆瓣FM客戶端:
1、電腦訪問網址:http://douban.fm/app#android_radio按頁面提示下載,並導入手機安裝客戶端。
2、訪問第三方市場:比如安卓市場、豌豆莢等,搜索「豆瓣FM」按頁面提示下載安裝。
溫馨提示:在非WIFI網路下,下載豆瓣FM客戶端按你手機套餐資費扣除流量費。
❸ 豆瓣 fm 怎麼搭建的
豆瓣的電台應該分成三部分:
1. 一部分是根據你的social行為推薦的音樂,例如你打分的專輯,你加入的標簽等等。
2. 另外一部分是根據你使用電台的行為推薦的音樂列表,這個估計是基於user-based或者item-based來計算的,數據就是喜歡、不喜歡和跳過。
3. 第三部分應該是通過編輯加入的歌曲,例如在特定的時期對特定的人群發送特定的歌曲(一個例子是在大年初一聽到的第一首歌是新年祝福相關的)
雖然只是這三部分,但是第一部分和第二部分會引入很多的參數,於是又有了一層演算法:參數調優。這里有三種實現形式:所有用戶用同一組參數;每個用戶用不同的參數;先把用戶聚類,然後每類用戶用一組參數。
這里的參數也會有很多種,一個關鍵在於比例的配置。例如,我們有15個源來產生推薦的歌曲,如何才能混合這些歌曲才能取得用戶最大的滿意度。理想情況是要同時考慮熟悉度、多樣度、和驚奇度。在具體演算法中也有選擇多少個相似用戶、每個用戶對最終結果的影響度是多少、貢獻的數量是多少。再有就是如何從用戶聽過的成百上千的歌曲中選擇一個子集來進行後續的運算。當然,雖然這么說,但是千萬不要讓自己陷入其中,最重要是找到一個簡約的方案來調優。
除此之外,不知道豆瓣可能還有另外一層的演算法,就是即使給一個用戶准備好了一堆可以推薦的歌曲,應該按照什麼順序來播放給用戶。這一點也能說出很多復雜的需要考慮的因素,我們在設計的時候也不要陷入在細節中,而應該找出最關鍵的幾點來撬動這個石頭:)
最後,豆瓣也應該有個過濾的前端,會根據大家對一首歌的整體評分來決定後續推薦的音樂集合。
❹ 豆瓣FM 的推薦演算法是怎樣的
豆瓣FM的推薦演算法沒有停止,反而是在不斷演進當中,伴隨著它成長的用戶,會慢慢發現越來越多的驚喜與滿意。豆瓣FM是中國互聯網實踐個性化服務的一個很好的土壤,其中糅合了包括演算法、ui/ue、數據清洗與整合、音頻分析技術、用戶行為分析、編輯與運營、後台架構等等大量的因素,即便是推薦演算法也只是演算法技術中的一部分。單論推薦演算法,就最簡單的演算法,也會極大地受到其它因素的影響,比如單曲推薦功能、新版的上線,對於演算法的學習與積累都會起到極大的正面作用。
❺ 豆瓣為什麼用python
1.不同編程語言的運行效率雖然有不同,但是沒有你想像的那麼大的差異。
2.大型架構要想提高運行效率,關鍵在於提高伸縮性和吞吐量,而不是考慮單一程序的效率。高級的...
3.人家只是在應用層用某種語言,在大型架構中,這只是佔到程序的一部分,特別是瓶頸不在這里。
4.Python也有高性能優化的方案,比如二次編譯,JIT和runtime的優化
❻ Python抓取豆瓣電影排行榜壓縮包
1.觀察url
首先觀察一下網址的結構 p250?start=0&filter=&type= :
可以看到,問號?後有三個參數 start、filter、type,其中start代表頁碼,每頁展示25部電影,0代表第一頁,以此類推25代表第二頁,50代表第三頁...
filter顧名思義,是過濾已經看過的電影,filter和type在這里不重要,可以不管。
2.查看網頁源代碼
打開上面的網址,查看源代碼,可以看到信息的展示結構如下:
1 <ol class="grid_view"> 2 <li> 3 <div class="item"> 4 <div class="pic"> 5 <em class="">1</em> 6 <a href="ht.com/subject/1292052/"> 7 <img alt="肖申克的救贖" src="hster_cover/ipst/public/p480747492.jpg" class=""> 8 </a> 9 </div>10 <div class="info">11 <div class="hd">12 <a href="han.com/subject/1292052/" class="">13 <span class="title">肖申克的救贖</span>14 <span class="title"> / The Shawshank Redemption</span>15 <span class="other"> / 月黑高飛(港) / 刺激1995(台)</span>16 </a>17 18 19 <span class="playable">[可播放]</span>20 </div>21 <div class="bd">22 <p class="">23 導演: 弗蘭克·德拉邦特 Frank Darabont 主演: 蒂姆·羅賓斯 Tim Robbins /...<br>24 1994 / 美國 / 犯罪 劇情25 </p>26 27 28 <div class="star">29 <span class="rating5-t"><em>9.6</em></span>30 <span>646374人評價</span>31 </div>32 33 <p class="quote">34 <span class="inq">希望讓人自由。</span>35 </p>36 </div>37 </div>38 </div>39 </li>
其中<em class="">1</em>代表排名,<span class="title">肖申克的救贖</span>代表電影名,其他信息的含義也很容易能看出來。
於是接下來可以寫正則表達式:
1 pattern = re.compile(u'<div.*?class="item">.*?<div.*?class="pic">.*?' 2 + u'<em.*?class="">(.*?)</em>.*?' 3 + u'<div.*?class="info">.*?<span.*?class="title">(.*?)' 4 + u'</span>.*?<span.*?class="title">(.*?)</span>.*?' 5 + u'<span.*?class="other">(.*?)</span>.*?</a>.*?' 6 + u'<div.*?class="bd">.*?<p.*?class="">.*?' 7 + u'導演: (.*?) ' 8 + u'主演: (.*?)<br>' 9 + u'(.*?) / (.*?) / '10 + u'(.*?)</p>'11 + u'.*?<div.*?class="star">.*?<em>(.*?)</em>'12 + u'.*?<span>(.*?)人評價</span>.*?<p.*?class="quote">.*?'13 + u'<span.*?class="inq">(.*?)</span>.*?</p>', re.S)
在此處flag參數re.S代表多行匹配。
3.使用面向對象的設計模式編碼
代碼如下:
1 # -*- coding:utf-8 -*- 2 __author__ = 'Jz' 3 import urllib2 4 import re 5 import sys 6 7 class MovieTop250: 8 def __init__(self): 9 #設置默認編碼格式為utf-810 reload(sys)11 sys.setdefaultencoding('utf-8')12 self.start = 013 self.param = '&filter=&type='14 self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64)'}15 self.movieList = []16 self.filePath = 'D:/coding_file/python_file/File/DoubanTop250.txt'17 18 def getPage(self):19 try:20 URL = 'ht.com/top250?start=' + str(self.start)21 request = urllib2.Request(url = URL, headers = self.headers)22 response = urllib2.urlopen(request)23 page = response.read().decode('utf-8')24 pageNum = (self.start + 25)/2525 print '正在抓取第' + str(pageNum) + '頁數據...' 26 self.start += 2527 return page28 except urllib2.URLError, e:29 if hasattr(e, 'reason'):30 print '抓取失敗,具體原因:', e.reason31 32 def getMovie(self):33 pattern = re.compile(u'<div.*?class="item">.*?<div.*?class="pic">.*?'34 + u'<em.*?class="">(.*?)</em>.*?'35 + u'<div.*?class="info">.*?<span.*?class="title">(.*?)'36 + u'</span>.*?<span.*?class="title">(.*?)</span>.*?'37 + u'<span.*?class="other">(.*?)</span>.*?</a>.*?'38 + u'<div.*?class="bd">.*?<p.*?class="">.*?'39 + u'導演: (.*?) '40 + u'主演: (.*?)<br>'41 + u'(.*?) / (.*?) / '42 + u'(.*?)</p>'43 + u'.*?<div.*?class="star">.*?<em>(.*?)</em>'44 + u'.*?<span>(.*?)人評價</span>.*?<p.*?class="quote">.*?'45 + u'<span.*?class="inq">(.*?)</span>.*?</p>', re.S)46 while self.start <= 225:47 page = self.getPage()48 movies = re.findall(pattern, page)49 for movie in movies:50 self.movieList.append([movie[0], movie[1], movie[2].lstrip(' / '),
51 movie[3].lstrip(' / '), movie[4],
52 movie[5], movie[6].lstrip(), movie[7], movie[8].rstrip(),53 movie[9], movie[10], movie[11]])54 55 def writeTxt(self):56 fileTop250 = open(self.filePath, 'w')57 try:58 for movie in self.movieList:59 fileTop250.write('電影排名:' + movie[0] + '\r\n')60 fileTop250.write('電影名稱:' + movie[1] + '\r\n')61 fileTop250.write('外文名稱:' + movie[2] + '\r\n')62 fileTop250.write('電影別名:' + movie[3] + '\r\n')63 fileTop250.write('導演姓名:' + movie[4] + '\r\n')64 fileTop250.write('參與主演:' + movie[5] + '\r\n')65 fileTop250.write('上映年份:' + movie[6] + '\r\n')66 fileTop250.write('製作國家/地區:' + movie[7] + '\r\n')67 fileTop250.write('電影類別:' + movie[8] + '\r\n')68 fileTop250.write('電影評分:' + movie[9] + '\r\n')69 fileTop250.write('參評人數:' + movie[10] + '\r\n')70 fileTop250.write('簡短影評:' + movie[11] + '\r\n\r\n')71 print '文件寫入成功...'72 finally:73 fileTop250.close()74 75 def main(self):76 print '正在從豆瓣電影Top250抓取數據...'77 self.getMovie()78 self.writeTxt()79 print '抓取完畢...'80 81 DouBanSpider = MovieTop250()82 DouBanSpider.main()
代碼比較簡單,最後將信息寫入一個文件,沒有什麼需要解釋的地方。
❼ 豆瓣FM怎麼用
打開電台
音樂對話框的上面有個白色小長方形你點開就會出現這樣的圖片
你根據自己的喜歡來選擇聽什麼類型的歌
聽到喜歡的歌你可以點桃心不喜歡點箭頭跳過這首歌
❽ Python抓取豆瓣電影排行榜
1.觀察url
首先觀察一下網址的結構 http://movie.douban.com/top250?start=0&filter=&type= :
可以看到,問號?後有三個參數 start、filter、type,其中start代表頁碼,每頁展示25部電影,0代表第一頁,以此類推25代表第二頁,50代表第三頁...
filter顧名思義,是過濾已經看過的電影,filter和type在這里不重要,可以不管。
2.查看網頁源代碼
打開上面的網址,查看源代碼,可以看到信息的展示結構如下:
1 <ol class="grid_view"> 2 <li> 3 <div class="item"> 4 <div class="pic"> 5 <em class="">1</em> 6 <a href="http://movie.douban.com/subject/1292052/"> 7 <img alt="肖申克的救贖" src="http://img3.douban.com/view/movie_poster_cover/ipst/public/p480747492.jpg" class=""> 8 </a> 9 </div>10 <div class="info">11 <div class="hd">12 <a href="http://movie.douban.com/subject/1292052/" class="">13 <span class="title">肖申克的救贖</span>14 <span class="title"> / The Shawshank Redemption</span>15 <span class="other"> / 月黑高飛(港) / 刺激1995(台)</span>16 </a>17 18 19 <span class="playable">[可播放]</span>20 </div>21 <div class="bd">22 <p class="">23 導演: 弗蘭克·德拉邦特 Frank Darabont 主演: 蒂姆·羅賓斯 Tim Robbins /...<br>24 1994 / 美國 / 犯罪 劇情25 </p>26 27 28 <div class="star">29 <span class="rating5-t"><em>9.6</em></span>30 <span>646374人評價</span>31 </div>32 33 <p class="quote">34 <span class="inq">希望讓人自由。</span>35 </p>36 </div>37 </div>38 </div>39 </li>
其中<em class="">1</em>代表排名,<span class="title">肖申克的救贖</span>代表電影名,其他信息的含義也很容易能看出來。
於是接下來可以寫正則表達式:
1 pattern = re.compile(u'<div.*?class="item">.*?<div.*?class="pic">.*?' 2 + u'<em.*?class="">(.*?)</em>.*?' 3 + u'<div.*?class="info">.*?<span.*?class="title">(.*?)' 4 + u'</span>.*?<span.*?class="title">(.*?)</span>.*?' 5 + u'<span.*?class="other">(.*?)</span>.*?</a>.*?' 6 + u'<div.*?class="bd">.*?<p.*?class="">.*?' 7 + u'導演: (.*?) ' 8 + u'主演: (.*?)<br>' 9 + u'(.*?) / (.*?) / '10 + u'(.*?)</p>'11 + u'.*?<div.*?class="star">.*?<em>(.*?)</em>'12 + u'.*?<span>(.*?)人評價</span>.*?<p.*?class="quote">.*?'13 + u'<span.*?class="inq">(.*?)</span>.*?</p>', re.S)
在此處flag參數re.S代表多行匹配。
3.使用面向對象的設計模式編碼
代碼如下:
1 # -*- coding:utf-8 -*- 2 __author__ = 'Jz' 3 import urllib2 4 import re 5 import sys 6 7 class MovieTop250: 8 def __init__(self): 9 #設置默認編碼格式為utf-810 reload(sys)11 sys.setdefaultencoding('utf-8')12 self.start = 013 self.param = '&filter=&type='14 self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64)'}15 self.movieList = []16 self.filePath = 'D:/coding_file/python_file/File/DoubanTop250.txt'17 18 def getPage(self):19 try:20 URL = 'http://movie.douban.com/top250?start=' + str(self.start)21 request = urllib2.Request(url = URL, headers = self.headers)22 response = urllib2.urlopen(request)23 page = response.read().decode('utf-8')24 pageNum = (self.start + 25)/2525 print '正在抓取第' + str(pageNum) + '頁數據...' 26 self.start += 2527 return page28 except urllib2.URLError, e:29 if hasattr(e, 'reason'):30 print '抓取失敗,具體原因:', e.reason31 32 def getMovie(self):33 pattern = re.compile(u'<div.*?class="item">.*?<div.*?class="pic">.*?'34 + u'<em.*?class="">(.*?)</em>.*?'35 + u'<div.*?class="info">.*?<span.*?class="title">(.*?)'36 + u'</span>.*?<span.*?class="title">(.*?)</span>.*?'37 + u'<span.*?class="other">(.*?)</span>.*?</a>.*?'38 + u'<div.*?class="bd">.*?<p.*?class="">.*?'39 + u'導演: (.*?) '40 + u'主演: (.*?)<br>'41 + u'(.*?) / (.*?) / '42 + u'(.*?)</p>'43 + u'.*?<div.*?class="star">.*?<em>(.*?)</em>'44 + u'.*?<span>(.*?)人評價</span>.*?<p.*?class="quote">.*?'45 + u'<span.*?class="inq">(.*?)</span>.*?</p>', re.S)46 while self.start <= 225:47 page = self.getPage()48 movies = re.findall(pattern, page)49 for movie in movies:50 self.movieList.append([movie[0], movie[1], movie[2].lstrip(' / '),
51 movie[3].lstrip(' / '), movie[4],
52 movie[5], movie[6].lstrip(), movie[7], movie[8].rstrip(),53 movie[9], movie[10], movie[11]])54 55 def writeTxt(self):56 fileTop250 = open(self.filePath, 'w')57 try:58 for movie in self.movieList:59 fileTop250.write('電影排名:' + movie[0] + '\r\n')60 fileTop250.write('電影名稱:' + movie[1] + '\r\n')61 fileTop250.write('外文名稱:' + movie[2] + '\r\n')62 fileTop250.write('電影別名:' + movie[3] + '\r\n')63 fileTop250.write('導演姓名:' + movie[4] + '\r\n')64 fileTop250.write('參與主演:' + movie[5] + '\r\n')65 fileTop250.write('上映年份:' + movie[6] + '\r\n')66 fileTop250.write('製作國家/地區:' + movie[7] + '\r\n')67 fileTop250.write('電影類別:' + movie[8] + '\r\n')68 fileTop250.write('電影評分:' + movie[9] + '\r\n')69 fileTop250.write('參評人數:' + movie[10] + '\r\n')70 fileTop250.write('簡短影評:' + movie[11] + '\r\n\r\n')71 print '文件寫入成功...'72 finally:73 fileTop250.close()74 75 def main(self):76 print '正在從豆瓣電影Top250抓取數據...'77 self.getMovie()78 self.writeTxt()79 print '抓取完畢...'80 81 DouBanSpider = MovieTop250()82 DouBanSpider.main()
代碼比較簡單,最後將信息寫入一個文件,沒有什麼需要解釋的地方。
❾ python有沒有語音控制模塊
SAPI是微軟Speech API ,
是微軟公司推出的語音介面,而細心的人會發現從WINXP開始,系統上就已經有語音識別的功能了,可是用武之地相當之少,他並沒有給出一些人性化的自定義
方案,僅有的語音操控命令顯得相當雞脅。 那麼這篇文章的任務就是利用SAPI進行個性化的語音識別。
defcallback(phrase,listener):
print(":%s"%phrase)
ifphrase==closeMainSystem:
speech.say("Goodbye.人機交互即將關閉,謝謝使用")
listener.stoplistening()
sys.exit()
elifphrase==openEclipse:
speech.say("請問您要寫PYTHON還是JAVA程序?")
speech.listenforanything(callback)
elifphrase==listenMusic:
speech.say("即將為你啟動豆瓣電台")
webbrowser.open_new("http://douban.fm/")
elifphrase==blog:
speech.say("即將進入Dreamforce.me")
webbrowser.open_new("http://dreamforce.me/")
elifphrase==php:
speech.say("啟動PHP編寫器")
os.popen("E:IDEphp_eclipseeclipseeclipse.exe")
elifphrase==php:
speech.say("啟動JAVA編寫器")
os.popen("E:IDEphp_eclipseeclipseeclipse.exe")
❿ 豆瓣fm怎麼用,沒有任何顯示怎樣設置啊
原創回答:
豆瓣FM分為「私人兆赫」和「公共兆赫」,按鈕在網頁左中。
「私人兆赫」是根據你已「加紅心」的音樂風格,自動篩選出類似的曲目進行播放。
「公共兆赫」現在有24個頻道,上下拖動頁面最右邊的滑鈕,頻道會隨之上下滾動,點擊頻道即可播放。
你圖片中的心形按鈕在播放音樂時點擊會變紅,這樣這首樂曲就被收藏了。
紅心右邊的垃圾箱形按鈕在播放「私人兆赫」的音樂時點擊,當前的音樂會被加入不再播放的音樂列表。
點擊垃圾箱形按鈕右邊的雙三角按鈕可以跳到下一首音樂。
你圖片中方框內的右上角,也就是雙三角上面的那個按鈕是播放/停止按鈕。