Ⅰ Python爬蟲如何抓取豆瓣影評中的所有數據
你可以用前嗅爬蟲採集豆瓣的影評,我之前用的,還可以過濾只採集評分在6分以上的所有影評,非常強大,而且他們軟體跟資料庫對接,採集完數據後,直接入庫,導出excel表。很省心。
Ⅱ 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抓取豆瓣上用戶對電影的評分
#!/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()
Ⅳ 如何寫爬蟲程序爬取豆瓣網或者新浪微博里的內容
用前嗅的ForeSpider數據採集軟體可以採集,我之前采過豆瓣的影評,可以設置各種過濾規律,比如我只要豆瓣評分6.0以上的電影,就可以精確的過濾。
可以下載一個免費版的試試,沒有功能和使用時長限制。
軟體內部集成了數據挖掘功能,可以通過一個採集模板,精準挖掘全網的內容。在數據採集入庫的同時,可以完成分類、統計、自然語言處理等諸多功能。
軟體與ForeAna數據分析系統對接,可以實現強大的數據分析功能,對數據進行深度的大數據分析。
ForeSpider除了強大的可視化採集之外,還自帶一套爬蟲腳本語言,可以採集任何公開的數據。
Ⅳ 怎麼在豆瓣里看到自己的影評
短評還是長評?短評就是你加這個片子為「看過」時彈出的對話框寫的內容,可以點開「我看」找到「看過」,點看過旁邊的數字,就能看到自己所有的短評。同樣,在「我看」頁面,即「id號的電影」頁面,點「影評」就可以看到自己為影片寫的長評論。
也可以打開那個片子的頁面,在海報下方,評星的位置下面就看得到你自己寫的短評。在電影頁面的下方有大家的評論即「XXX影片的評論」,找自己的就可以(但是對於那些評論很多的片子,還是需要找上一陣的,不方便)。
Ⅵ 2022豆瓣如何快速找到自己的影評
具體操作步驟如下:
電腦端:
打開瀏覽器,搜索豆瓣,進入豆瓣首頁
然後在搜索框輸入你想看的電影,進入搜索頁,點擊第一欄,進入詳情頁
進入詳情頁後,向下拉,你就可以看到精彩的影評了。
手機端:
開啟豆瓣網APP,賬號登錄。
點一下右下方「我的」這一菜單鍵,你能見到「我的公布」這一選擇項。
進到「我的公布」頁面,尋找「評價」,你全部的評價, 閱讀 日記都會上邊。
Ⅶ 怎樣避開豆瓣對爬蟲的封鎖,從而抓取豆瓣上電影內容
在互聯網中,有網路爬蟲的地方,絕對少不了反爬蟲的身影。網站反爬蟲的攔截前提是要正確區分人類訪問用戶和網路機器人,當發現可疑目標時,通過限制IP地址等措施阻止你繼續訪問。爬蟲該如何突破反爬蟲限制?
一、構建合理的HTTP請求頭
HTTP的請求頭是在你每次向網路伺服器發送請求時,傳遞的一組屬性和配置信息。由於瀏覽器和Python爬蟲發送的請求頭不同,有可能被反爬蟲檢測出來。
二、設置cookie的學問
Cookie是一把雙刃劍,有它不行,沒它更不行。網站會通過cookie跟蹤你的訪問過程,如果發現你有爬蟲行為會立刻中斷你的訪問,比如你特別快的填寫表單,或者短時間內瀏覽大量頁面。而正確地處理cookie,又可以避免很多採集問題,建議在採集網站過程中,檢查一下這些網站生成的cookie,然後想想哪一個是爬蟲需要處理的。
三、正常的時間訪問路徑
合理控制採集速度,是Python爬蟲不應該破壞的規則,盡量為每個頁面訪問時間增加一點兒間隔,可以有效幫助你避免反爬蟲。
四、使用http
對於分布式爬蟲和已經遭遇反爬蟲的人來說,使用http將成為你的首選。Ipidea分布地區廣,可滿足分布式爬蟲使用需要。支持api提取,對Python爬蟲來說再適合不過。
Ⅷ 誰來告訴我豆瓣上,在哪看自己發過的影評、短評
誰來告訴我豆瓣上,在哪看自己發過的影評、短評?
誰來告訴我豆瓣上,在哪看自己發過的影評、短評?登錄豆瓣——點擊「豆瓣電影」——上數第二行,點擊「我看」——「XX的電影」下面,第二項「影評」。
豆瓣的影評與短評區別影評是長篇大論,短評一兩句話就可以啦
豆瓣寫過的影評在哪裡看我的豆瓣~~找到自己的電影框那裡點我看過的~~然後再選影評~~就有了~~
為什麼我在豆瓣上發的電影短評別人看不到?豆瓣電影有一套自己的評分、短評處理系統。
出現這種情況的很大原因是把你的評論默認為水軍評論(即來自於機器人的評論)而不顯示。
有可能是因為你的賬戶特別新,比如新注冊的,或者評論的電影數量不夠多。
解決這個問題的辦法是:當你繼續使用一段時間這個賬戶後,多多給別的電影打分、寫評論,系統就會被默認為活躍的「老賬戶」,你之前和之後的評論就不至於被隱藏了。
多用用就好了,別老用新賬戶。
我也是這樣,用的谷歌瀏覽器,寫了很多精彩評論,結果別人看不到??!
怎樣在豆瓣電影發表短評?你需要看看你是不是在小組裡面發言,有些小組只能是組員發言的,你要先加入小組
如何評價豆瓣上裝逼的影評人看電影不只是你看的電影多了,你就能夠當一個影評人,你得需要許多的知識來充實,豐滿自己,比如歷史文化,文學藝術等。1有的影評人評論的頭頭是道,影評表面上看上去貌似是很專業,如果你懂的話,深入剖析,你會發現他評的很幼稚,垃圾。而有的影評人確實也是比較專業的
怎麼在豆瓣上確定自己看過的電影呃。。。
在豆瓣寫的電影短評,怎麼找不到自己的可能是短評太多了,你發完找找最後一頁
誰來告訴我豆瓣音樂人怎麼看歌詞音樂很好聽,令人陶醉。但提些小建議:1、不支持後台播放,至少不是完美支持,鎖屏或者後台之後就無法自動播放下一首歌了;2、無法建立自己的歌曲列表;3、沒了~
Ⅸ 求一份Python爬取豆瓣影評數據集,多部電影,多影評的,哎
這種類型的
Ⅹ 怎樣用python爬取豆瓣電影
推薦you-get工具包,pip可以直接下載安裝