Scrapy爬蟲實現千庫網美圖數據獲取和熱門分享排名
隨著互聯網的普及,人們對圖像的需求逐漸增加,美圖網站也應運而生。千庫網是專門提供高畫質美圖和素材資源的平台,這裡面有大量精美的圖片素材,可供用戶免費下載,也可以取代商業美術資源。然而,手動下載這些美圖耗費時間且效率低。因此,本文介紹如何以Scrapy爬蟲實現千庫網路上的美圖資料取得和熱門分享排名。
一、安裝Scrapy
安裝Scrapy前,我們需要事先安裝Python環境。在Python環境下,透過pip install scrapy的指令即可安裝Scrapy。
二、建立Scrapy工程
開啟命令列terminal,進入想要建立工程的目錄下,輸入指令scrapy startproject qkspider,即可在該目錄下建立一個名為“qkspider”的Scrapy工程。
三、建立爬蟲
進入工程目錄,輸入指令 scrapy genspider qk qkpic.com ,即可在spiders資料夾下建立一個名為「qk」的爬蟲。
四、寫程式碼
1.修改settings.py檔案
#首先,開啟qkspider目錄下的settings.py文件,在其中加入以下程式碼:
ITEM_PIPELINES = {'qkspider.pipelines.QkspiderPipeline':100,}
這是為了將獲取到的美圖資料儲存到資料庫中。
2.修改pipelines.py檔案
接著,我們需要打開qkspider目錄下的pipelines.py文件,在其中添加以下程式碼:
import pymongo class QkspiderPipeline(object): def __init__(self): client = pymongo.MongoClient("mongodb://localhost:27017/") db = client['qkdb'] self.collection = db['qkpic'] def process_item(self, item, spider): self.collection.insert(dict(item)) return item
這是為了將取得到的美圖資料儲存到MongoDB中。
3.修改items.py檔案
開啟qkspider目錄下的items.py文件,在其中加入以下程式碼:
import scrapy class QkspiderItem(scrapy.Item): title = scrapy.Field() img_url = scrapy.Field() share_num = scrapy.Field()
這是為了定義要取得的數據類型。
4.修改qk.py檔案
開啟spiders資料夾下的qk.py文件,在其中加入以下程式碼:
import scrapy from qkspider.items import QkspiderItem class QkSpider(scrapy.Spider): name = "qk" allowed_domains = ["qkpic.com"] start_urls = ["http://www.qkpic.com/"] def parse(self, response): items = [] pic_lists = response.xpath('//div[@class="index_mianpic"]/ul/li') for i, pic in enumerate(pic_lists): item = QkspiderItem() item['title'] = pic.xpath('./a/@title').extract_first() item['img_url'] = pic.xpath('./a/img/@src').extract_first() item['share_num'] = int(pic.xpath('./span/em/text()').extract_first()) items.append(item) return items
這是為了定義何種規則爬取千庫網站的美圖數據,並將數據存入MongoDB中。在該程式碼中,我們指定了要取得的美圖訊息,包括美圖標題、URL位址、以及分享量。
五、運行爬蟲
現在,我們可以在命令列 terminal 中執行剛剛寫的爬蟲程式了。在qkspider目錄下輸入指令 scrapy crawl qk,即可執行qk.py檔案中的程序,開始爬取千庫網站的美圖資料並儲存到MongoDB中。
六、實現熱門分享排名
為了獲得千庫網站熱門分享排行榜,我們需要取得熱門榜單頁面的URL,並在qk.py檔案中加入如下程式碼:
class QkSpider(scrapy.Spider): name = "qk" allowed_domains = ["qkpic.com"] start_urls = ["http://www.qkpic.com/", "http://www.qkpic.com/top/"] def parse(self, response): if response.url.startswith('http://www.qkpic.com/top/'): items = self.parse_rank_list(response) else: items = self.parse_pic_info(response) return items # 爬取热门榜单信息 def parse_rank_list(self, response): items = [] pic_lists = response.xpath('//div[@class="topcont"]/ul/li') for i, pic in enumerate(pic_lists): item = QkspiderItem() item['title'] = pic.xpath('./a/@title').extract_first() item['img_url'] = pic.xpath('./a/img/@src').extract_first() item['share_num'] = int(pic.xpath('./div[1]/i[2]/text()').extract_first()) items.append(item) return items
在該程式碼中,我們對start_urls賦值為網站首頁以及熱門榜單頁面,並添加了一個新的函數parse_rank_list。
七、總結
本文介紹如何使用Scrapy爬蟲框架來爬取千庫網站的美圖資料。在爬蟲的過程中,我們定義了需要取得的資料類型,並使用MongoDB儲存取得的資料。除此之外,本文也介紹如何取得千庫網站的熱門分享排行榜,以拓展此爬蟲程式的功能。
以上是Scrapy爬蟲實現千庫網美圖資料取得與熱門分享排名的詳細內容。更多資訊請關注PHP中文網其他相關文章!