pyspider爬取免費正版圖片網站Pixabay


前言:

許多網友貢獻了不少的爬取妹子圖片,豆瓣電影的教程,開始學爬蟲的時候也少不了參考各位大佬的代碼和填坑的經驗!這次打算原創出一個爬取國外比較大的圖片網站Pixabay
之所以選擇該網站

  • 第一:Pixabay可在任何地方使用的免費正版圖片和視頻,Pixabay是一個充滿活力的創意社區,Pixabay圖片可以安全的使用,而無需爲創作者署名!(這個非常的棒,不用擔心版權等問題)
  • 第二:資源豐富,便於爬取大量數據儲備學習。

Pixabayhttps://pixabay.com/zh/

非常棒


                      那麼下面開始我們的教程吧!

1.安裝 Phantomjs

首先pyspider的安裝就不過多贅述了,爲了更好的爬取大部分網站含js的頁面,我們需要選擇phantomjs 這個工具包

  • 使用 PhantomJS 渲染帶 JS 的頁面
  • 有一些頁面,它實在太複雜了,無論是分析 API 請求的地址,還是渲染時進行了加密,讓直接抓取請求非常麻煩。這時候就是 PhantomJS 大顯身手的時候了

在使用 PhantomJS 之前,你需要安裝它(安裝文檔)。當你安裝了之後,在運行 all 模式的 pyspider 時就會自動啓用了。當然,你也可以在 demo.pyspider.org 上嘗試。

sudo apt-get install phantomjs
phantomjs --version

若顯示當前版本號,則 Phantomjs 安裝成功。


2.使用 PhantomJS

當 pyspider 連上 PhantomJS 代理後,你就能通過在 self.crawl 中添加 fetch_type='js’的參數,開啓使用 PhantomJS 抓取。

根據以上步驟就ok!


3.運行程序

以下是全部的pyspider代碼:

from pyspider.libs.base_handler import *


class Handler(BaseHandler):
    crawl_config = {
    }
    def __init__(self):
        self.base_url = 'https://pixabay.com/zh/images/search/?pagi='
        self.page_num = 1
        self.total_num = 30
    @every(minutes=24 * 60)
    def on_start(self):
        while self.page_num <= self.total_num:
            url = self.base_url + str(self.page_num)
            print (url)
            self.crawl(url, callback=self.index_page,fetch_type = 'js')
            self.page_num += 1


    @config(age=10 * 24 * 60 * 60)
    def index_page(self, response):
        for each in response.doc('a[href^="https://pixabay.com/zh/photos/%"]').items():
            self.crawl(each.attr.href, callback=self.detail_page ,fetch_type = 'js' )

    @config(priority=2)
    def detail_page(self, response):
        return {
            #"url": response.url,
            "title": response.doc('h1').text(),
            "img":response.doc('div > img ').attr('src')
        }

然後設置running,然後點擊run 跑起來:
在這裏插入圖片描述


最後可以通過result查看爬取的數據,圖片的標題和url:
在這裏插入圖片描述


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章