1. 程式人生 > >Scrapy--使用phantomjs爬取花瓣網圖片

Scrapy--使用phantomjs爬取花瓣網圖片

新建一個scrapy工程

(python35) ubuntu@ubuntu:~/scrapy_project$ scrapy startproject huaban

新增一個spider

(python35) ubuntu@ubuntu:~/scrapy_project/huaban/huaban/spiders$ scrapy genspider huaban_pets huaban.com

目錄結構如下:

(python35) [email protected]:~/scrapy_project/huaban$ tree -I *.pyc
.
├── huaban
│   ├── __init__.py
│ ├── items.py │ ├── middlewares.py │ ├── pipelines.py │ ├── __pycache__ │ ├── settings.py │ └── spiders │ ├── huaban_pets.py │ ├── __init__.py │ └── __pycache__ └── scrapy.cfg

編輯items.py檔案

# -*- coding: utf-8 -*-

import scrapy

class HuabanItem(scrapy.Item):
    img_url = scrapy.Field
()

編輯huaban_pets.py

# -*- coding: utf-8 -*-
import scrapy

class HuabanPetsSpider(scrapy.Spider):
    name = 'huaban_pets'
    allowed_domains = ['huaban.com']
    start_urls = ['http://huaban.com/favorite/pets/']
    def parse(self, response):
        for img_src in response.xpath('//*[@id="waterfall"]/div/a/img/@src'
).extract(): item = HuabanmeinvItem() # 例如img_src為//img.hb.aicdn.com/223816b7fee96e892d20932931b15f4c2f8d19b315735-wgi1w2_fw236 # 去掉後面的_fw236就為原圖 item['img_url'] = 'http:' + img_src[:-6] yield item

編寫一箇中間鍵使用phantomj獲取網頁原始碼

在middlewares.py新增如下內容:

# -*- coding: utf-8 -*-

from scrapy import signals
from selenium import webdriver
from scrapy.http import HtmlResponse
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities


class JSPageMiddleware(object):
    def process_request(self, request, spider):
        if spider.name == 'hbmeinv':
            # cap[".page.setting.resourceTimeout"] = 180
            # cap["chrome.page.setting.loadImage"] = False
            dcap = dict(DesiredCapabilities.PHANTOMJS)
            # 不載入圖片,爬頁面速度會快很多
            dcap["phantomjs.page.settings.loadImages"] = False
            browser = webdriver.PhantomJS(executable_path=r'/home/ubuntu/scrapy_project/huabanphantomjs',desired_capabilities=dcap)
            try:
                browser.get(request.url)
                return HtmlResponse(url=browser.current_url, body=browser.page_source,encoding='utf-8',request=request)
            except:
                print("get page failed!")
            finally:
                browser.quit()
        el   return

在pipelines.py中新增如下內容下載網頁圖片:

# -*- coding: utf-8 -*-

import urllib

class HuabanmeinvPipeline(object):
    def process_item(self, item, spider):
        url = item['img_url']
        urllib.request.urlretrieve(url, filename=r'/home/ubuntu/scrapy_project/huaban/image/%s.jpg' % url[url.rfind('/')+1:])
        return item

在setting.py中使用新增的中間鍵和設定訊息頭

DEFAULT_REQUEST_HEADERS = {
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language': 'zh-CN',
    'User-Agent' : 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
}

# Enable or disable downloader middlewares
# See http://scrapy.readthedocs.org/en/latest/topics/downloader-middleware.html
DOWNLOADER_MIDDLEWARES = {
    #'huabanmeinv.middlewares.MyCustomDownloaderMiddleware': 543,
    'huabanmeinv.middlewares.JSPageMiddleware': 543,
}

# Configure item pipelines
# See http://scrapy.readthedocs.org/en/latest/topics/item-pipeline.html
ITEM_PIPELINES = {
   'huabanmeinv.pipelines.HuabanmeinvPipeline': 300,
}

開始爬取

ubuntu@ubuntu:~/scrapy_project/huaban/huaban/spiders$ scrapy runspider huaban_pets.py

爬取結束後,就可以在/home/ubuntu/scrapy_project/huaban/image目錄下看到爬取的圖片了,例如:
這裡寫圖片描述

相關推薦

Scrapy--使用phantomjs花瓣圖片

新建一個scrapy工程 (python35) ubuntu@ubuntu:~/scrapy_project$ scrapy startproject huaban 新增一個spider

使用Scrapy框架360攝影圖片的資訊

要點 1.分析Ajax請求 觀察到Ajax請求引數的變化,有一個引數sn一直在變化,當sn=30時,返回的時前30張圖片,listtype時排序方式,temp是引數可以忽略 2.構造請求和提取資訊 #

Python妹子圖片

提取文章標題 import requests from bs4 import BeautifulSoup url = 'http://www.mzitu.com/26685' header = {'User-Agent': 'Mozilla/5.0 (

Python:scrapy框架校花男神圖片儲存到本地

爬蟲四部曲,本人按自己的步驟來寫,可能有很多漏洞,望各位大神指點指點   1、建立專案 scrapy startproject xiaohuawang scrapy.cfg: 專案的配置檔案 xiaohuawang/: 該專案的python模組。之後您將在此加入程

Python3 大型網路爬蟲實戰 003 — scrapy 大型靜態圖片網站爬蟲專案實戰 — 實戰: 169美女圖片 高清圖片

開發環境 Python第三方庫:lxml、Twisted、pywin32、scrapy Python 版本:python-3.5.0-amd64 PyCharm軟體版本:pycharm-professional-2016.1.4 電腦系統:Wi

scrapy實戰1分布式有緣

req 年齡 dict ems arch last rem pen war 直接上代碼: items.py 1 # -*- coding: utf-8 -*- 2 3 # Define here the models for your scraped items

我的第一個Scrapy 程序 - 當當信息

ref http ide ces passwd lds url ext != 前面已經安裝了Scrapy,下面來實現第一個測試程序。 概述 Scrapy是一個爬蟲框架,他的基本流程如下所示(下面截圖來自互聯網) 簡單的說,我們需要寫一個item文件,定義返回的數據結構;寫

scrapy案例:翼蜂絡新聞列表和詳情頁面

model rap name lB htm nod meta http AR # -*- coding: utf-8 -*- import scrapy from Demo.items import DemoItem class AbcSpider(scrapy.Sp

selelinum+PhantomJS 拉鉤職位

one while 對象 bili exe 5.0 設置 expect money 使用selenium+PhantomJS爬取拉鉤網職位信息,保存在csv文件至本地磁盤 拉鉤網的職位頁面,點擊下一頁,職位信息加載,但是瀏覽器的url的不變,說明數據不是發送get請求得到的

最簡單的圖片 --Pyhon絡爬蟲與信息獲取

文件 spa lose man spl roo () pen image 1、本次要爬取的圖片url http://www.nxl123.cn/static/imgs/php.jpg 2、代碼部分 import requestsimport osurl = "ht

使用scrapy框架蜂鳥論壇的攝影圖片並下載到本地

utf 賦值 col 異常處理 創建文件夾 clas watermark follow ret 目標網站:http://bbs.fengniao.com/使用框架:scrapy 因為有很多模塊的方法都還不是很熟悉,所有本次爬蟲有很多代碼都用得比較笨,希望各位讀者能給處意見

Scrapy:虎牙圖片存儲與數據分析

alt 數據分析 mage 加載 ram data afr frame bubuko 第一次爬取虎牙主播數據,有點小激動 1.共批量爬取的101個主播的,包括 頭像 主播名字 房間號 房間鏈接 2.數據規整部分,需要將json數據加載到pandas的Dataframe,

python+scrapy鬥魚圖片

建立scrapy的專案請參考:https://blog.csdn.net/qq_35723619/article/details/83614670 items的實現: DouyumeinvSpider建立: 這次我們爬去的是json資料包:我們可以通過network監控:

Python的scrapy鏈家房價資訊並儲存到本地

因為有在北京租房的打算,於是上網瀏覽了一下鏈家網站的房價,想將他們爬取下來,並儲存到本地。 先看鏈家網的原始碼。。房價資訊 都儲存在 ul 下的li 裡面 ​   爬蟲結構: ​ 其中封裝了一個數據庫處理模組,還有一個user-agent池。。   先看mylian

Python的scrapy鏈家房價信息並保存到本地

width gif pat lse idt ext tst maximum spa 因為有在北京租房的打算,於是上網瀏覽了一下鏈家網站的房價,想將他們爬取下來,並保存到本地。 先看鏈家網的源碼。。房價信息 都保存在 ul 下的li 裏面 ? 爬蟲結構: ? 其中封裝了一

scrapy詩詞

入門scrapy不久,嘗試著寫一段程式碼爬取詩詞網. spider如下: class ShiciSpider(scrapy.Spider): name = 'shici' url = 'http://www.shicimingju.com/c

Python的scrapy6毛小說

閒來無事想看個小說,打算下載到電腦上看,找了半天,沒找到可以下載的網站,於是就想自己爬取一下小說內容並儲存到本地 聖墟 第一章 沙漠中的彼岸花 - 辰東 - 6毛小說網  http://www.6mao.com/html/40/40184/12601161.html 這是要爬取的網

福利向---Scrapy爬蟲多級圖片網站

1.目標站分析 目標站網址為https://52zfl.vip/zhaifuli/list_2_1.html 每頁網址有若干連結,點選每個連結,是每部圖片資源的詳情頁面,由於圖片數量較多,涉及到翻頁操作。 通過分析頁面html程式碼,提取有用部分如下:

Python的scrapy6毛小說的聖墟

閒來無事想看個小說,打算下載到電腦上看,找了半天,沒找到可以下載的網站,於是就想自己爬取一下小說內容並儲存到本地 聖墟 第一章 沙漠中的彼岸花 - 辰東 - 6毛小說網  http://www.6mao.com/html/40/40184/12601161.html 這是要爬取的網頁 觀察結構 下一章 然

java使用jsoup,多執行緒批量天極某分類下的圖片

 小Demo轉自csdn某作者, 本例子只作為測試,頁面個數直接設定了100個,可以可能會少或者多,容易報錯,更優化的一種方式是獲取“下一頁”按鈕的地址,然後再訪問,當訪問不到“下一頁”的內容時跳出 多執行緒只體現在檔案提取,也可以在elements迴圈中再加一個多執行緒