908
Python
楚江數據:Python爬取豆瓣熱門電影信息
萬事開頭難,知乎專欄申請下來一段時間了,但一直懶癌拖著沒寫,拖了又拖,終於在一個陰雨綿綿的周六的晚上提筆開始了第一篇爬蟲文章。
首先爬蟲是啥,爬蟲無非是用程序模擬人在瀏覽器上的行為,抓取網絡信息用於分析,用爬蟲的最大好處是能夠批量、自動化地獲取數據和處理信息。例如我們可以通過抓取淘寶、天貓、京東等電商網站的銷量及評論數據,對各種商品銷量及用戶消費場景進行分析;在大眾點評、美團等消費類網站抓取店麵類信息獲取用戶的消費習慣及評價;在拉鉤、智聯招聘等人才招聘網站抓取各大城市的崗位需求和薪資水平….
當然你在瀏覽器上無法看到的信息爬蟲一般也是無法抓取的。所以不要問爬蟲能不能破解別人的登錄密碼,能不能獲取電商網站的後台數據,爬蟲不是黑客,希望理解。
這篇文章主要介紹使用Python爬取豆瓣上熱門電影的信息,包括電影名稱、海報、評分等信息。在開始介紹本項目前,先簡單介紹下網上的信息是如何被“爬”下來的。
我們看到的網頁都是用HTML+CSS+JS等語言寫出,而頁麵中加載文字、圖片、視頻等元素也是通過嵌入到超文本標記語言中展現。我們可以在打開一個網頁後通過鍵盤上F12鍵或單擊鼠標右鍵選擇“查看源文件”查看該網頁的源碼,我們想要的抓取的文字、圖片、視頻等信息也都嵌入在該超文本標記語言中。見圖:
接下來,我們開始正式介紹本項目,Python爬取豆瓣熱門電影:
1、 首先準備項目開發環境
安裝lxml、Scrapy、urllib、json等關鍵庫文件
pip install lxml pip install Scrapy pip install urllib pip install json
2、 構建整體思路
本次爬蟲使用scrapy框架,scrapy中定義了數據的請求、返回、調度、保存、持久化等行為,通過調用scrapy大大簡化了人為編程量。
執行:scrapy startproject tutorial,安裝好scrapy後的文件係統是這樣:
我們隻需重寫dmoz_spider.py文件即可。
3、 分析網頁
開始動手時一直抓不到豆瓣上電影的信息,掉在在坑裏冥思苦想 + 各種搜索學習後發現豆瓣上有關電影的信息都是采用ajax方式加載到HTML中,於是在Network下找到加載ajax的鏈接,將該鏈接作為請求地址。
4、動手編程
第一步:先定義請求網頁原址:
name='douban'allowed_domains=["douban.com"]start_list=[]foriinrange(1,14):url='https://movie.douban.com/j/search_subjects?type=movie&tag=%E7%83%AD%E9%97%A8&sort=recommend&page_limit=20&page_start='+str(i*20)start_list.append(url)start_urls=start_list# 定義start_urls為一個存儲鏈接的列表
第二步:重寫請求頭文件:
def start_requests(self): user_agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.22 Safari/537.36 SE 2.X MetaSr 1.0' headers = {'User-Agent': user_agent} for url in self.start_urls: yield scrapy.Request(url=url, headers=headers, method='GET', callback=self.parse)
第三步:在獲取的網頁源碼中提取信息:
def parse(self, response): hxs = response.body.decode('utf-8') hjson = json.loads(hxs) # 字典 for lis in hjson['subjects']: item = Tutorial2Item() # 實例化類 item["info"] = lis['url'] item["pic"] = lis['cover'] item["score"] = lis['rate'] item["title"] = lis['title'] filename = item["title"] + '_' + item["score"] + '分' + '.jpg' urllib.request.urlretrieve(item["pic"], filename)
5、運行查看
我們在cmd下運行該文件:
然後可在目標文件夾下看到同步下載的熱門電影信息:多次調試後bingo
——————————分割線——————————
說了那麼多,我們為啥要從網上爬數據。回答這個問題首先要回答“大數據”時代,數據從何而來?總結來看,數據主要來自以下幾個方麵:1、企業自己產生的數據:大型互聯網公司擁有海量用戶數據當然具有天然優勢,有數據意識的企業也正逐步積累自己的數據;2、購買數據:可在數據堂、貴陽大數據交易所等平台上購買各類、各行業數據,當然價格不菲你懂的;3、政府/機構公開數據:公開數據實在是有限啊;4、爬取網絡數據:想獲取海量、豐富、有效的數據,自己動手豐衣足食。——人生苦短,我用Python
【楚江數據】團隊提供網站、手機APP(包括電商、社交網站、公眾號、論壇及客戶提供的其他類型)爬蟲定製開發和數據(文本、圖片、電話郵箱、文檔等)批量采集服務。不用學編程,不用寫代碼,我們直接交付采集好的數據或者編寫好的程序。
轉載知乎;
最後更新:2017-10-08 18:30:36