scrapy抓取動(dòng)態(tài)頁面

一、準(zhǔn)備工作

1.安裝splash

在windows環(huán)境下鼠次,splash可通過docker進(jìn)行安裝撵溃,安裝方法在 這篇文章 中有詳細(xì)講解,在此不再贅述掂咒。

安裝完成后在powershell中運(yùn)行以下命令安裝splash:

#從docker hub下載相關(guān)鏡像文件
docker pull scrapinghub/splash才沧、

使用docker啟動(dòng)服務(wù)命令啟動(dòng)Splash服務(wù)迈喉,在8050、8051温圆、5023端口開啟splash服務(wù):

#啟動(dòng)splash服務(wù)挨摸,并通過http,https岁歉,telnet提供服務(wù)
#通常一般使用http模式 得运,可以只啟動(dòng)一個(gè)8050就好  
#Splash 將運(yùn)行在 0.0.0.0 at ports 8050 (http), 8051 (https) and 5023 (telnet).
docker run -p 5023:5023 -p 8050:8050 -p 8051:8051 scrapinghub/splash

在瀏覽器中輸入10.0.75.1:8050查看服務(wù)啟動(dòng)情況:

QQ截圖20180214144552.png

2.安裝scrapy-splash

使用pip安裝scrapy-splash:

pip install scrapy-splash

完成以上步驟之后就可以在scrapy中使用splash了

二、編寫爬蟲

動(dòng)態(tài)頁面中的部分內(nèi)容是瀏覽器運(yùn)行頁面中的javascript腳本生成的锅移,相較于普通靜態(tài)頁面澈圈,爬取難度更大。以網(wǎng)站 http://quotes.toscrape.com/js/為例帆啃,爬取動(dòng)態(tài)生成的名人名言信息瞬女。

在項(xiàng)目文件settings.py中配置scrapy-splash:

#定義splash服務(wù)器地址
SPLASH_URL = 'http://10.0.75.1:8050/'
#開啟splash的下載中間件
DOWNLOADER_MIDDLEWARES = {
    'scrapy_splash.SplashCookiesMiddleware': 723,
    'scrapy_splash.SplashMiddleware': 725,
    'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 810,
}
#設(shè)置去重
DUPEFILTER_CLASS = 'scrapy_splash.SplashAwareDupeFilter'

編碼實(shí)現(xiàn):

# -*- coding: utf-8 -*-
import scrapy
from scrapy_splash import SplashRequest

class QuoteSpider(scrapy.Spider):
    name = 'quote'
    start_urls = ['http://quotes.toscrape.com/js/']

    def start_requests(self):
        for url in self.start_urls:
            yield SplashRequest(url, args={'images': 0})

    def parse(self, response):
        quotes = response.xpath('//div[@class="quote"]')
        for quote in quotes:
            text = quote.xpath('.//*[@class="text"]/text()').extract_first()
            author = quote.xpath('.//*[@class="author"]/text()').extract_first()
            yield {
                'text': text,
                'author': author,
            }
        next_page = response.xpath('//a[contains(text(),"Next")]/@href').extract_first()
        if next_page:
            absolute_url = response.urljoin(next_page)
            yield SplashRequest(absolute_url, args={'images': 0})

執(zhí)行結(jié)果:

2018-02-14 15:17:31 [scrapy.core.scraper] DEBUG: Scraped from <200 http://quotes.toscrape.com/js/>
{'text': '“The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking.”', 'author': 'Albert Einstein'}
2018-02-14 15:17:31 [scrapy.core.scraper] DEBUG: Scraped from <200 http://quotes.toscrape.com/js/>
{'text': '“It is our choices, Harry, that show what we truly are, far more than our abilities.”', 'author': 'J.K. Rowling'}
....

2018-02-14 15:17:38 [scrapy.core.scraper] DEBUG: Scraped from <200 http://quotes.toscrape.com/js/page/10/>
{'text': "“A person's a person, no matter how small.”", 'author': 'Dr. Seuss'}
2018-02-14 15:17:38 [scrapy.core.scraper] DEBUG: Scraped from <200 http://quotes.toscrape.com/js/page/10/>
{'text': '“... a mind needs books as a sword needs a whetstone, if it is to keep its edge.”', 'author': 'George R.R. Martin'}

結(jié)果顯示我們已成功爬取動(dòng)態(tài)生成的名人名言信息。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末努潘,一起剝皮案震驚了整個(gè)濱河市诽偷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌疯坤,老刑警劉巖报慕,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異压怠,居然都是意外死亡眠冈,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門菌瘫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蜗顽,“玉大人,你說我怎么就攤上這事雨让」透牵” “怎么了?”我有些...
    開封第一講書人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵栖忠,是天一觀的道長崔挖。 經(jīng)常有香客問我,道長庵寞,這世上最難降的妖魔是什么狸相? 我笑而不...
    開封第一講書人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮捐川,結(jié)果婚禮上脓鹃,老公的妹妹穿的比我還像新娘。我一直安慰自己属拾,他們只是感情好将谊,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著渐白,像睡著了一般尊浓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上纯衍,一...
    開封第一講書人閱讀 49,784評(píng)論 1 290
  • 那天栋齿,我揣著相機(jī)與錄音,去河邊找鬼襟诸。 笑死瓦堵,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的歌亲。 我是一名探鬼主播菇用,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼陷揪!你這毒婦竟也來了惋鸥?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤悍缠,失蹤者是張志新(化名)和其女友劉穎卦绣,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體飞蚓,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡滤港,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了趴拧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片溅漾。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖著榴,靈堂內(nèi)的尸體忽然破棺而出樟凄,到底是詐尸還是另有隱情,我是刑警寧澤兄渺,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布缝龄,位于F島的核電站,受9級(jí)特大地震影響挂谍,放射性物質(zhì)發(fā)生泄漏叔壤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一口叙、第九天 我趴在偏房一處隱蔽的房頂上張望炼绘。 院中可真熱鬧,春花似錦妄田、人聲如沸俺亮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽脚曾。三九已至东且,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間本讥,已是汗流浹背珊泳。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拷沸,地道東北人色查。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像撞芍,于是被迫代替她去往敵國和親秧了。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 隨著越來越多的網(wǎng)站開始用JS在客戶端瀏覽器動(dòng)態(tài)渲染網(wǎng)站序无,導(dǎo)致很多我們需要的數(shù)據(jù)并不能由原始的html中獲取示惊,再加上...
    mylonly閱讀 13,182評(píng)論 0 18
  • 之前我們學(xué)習(xí)的內(nèi)容都是抓取靜態(tài)頁面,每次請(qǐng)求愉镰,它的網(wǎng)頁全部信息將會(huì)一次呈現(xiàn)出來米罚。 但是,像比如一些購物網(wǎng)站丈探,他們的...
    cnkai閱讀 19,726評(píng)論 1 13
  • 在一個(gè)地方待久了录择,會(huì)膩會(huì)煩,總會(huì)有一種逃離的沖動(dòng)與憧憬碗降。憧憬著到了一個(gè)新的地方隘竭,欣賞絕美風(fēng)景,品嘗特色美食讼渊,聆聽感...
    槑頭槑腦兒閱讀 532評(píng)論 10 10
  • 小區(qū)名字了动看!o想買啥買啥子星期六星期天去嗎。爪幻。菱皆。。挨稿?仇轻!
    Lilywener閱讀 450評(píng)論 0 0
  • 一不怕苦篷店,二不怕死。 下定決心臭家,不怕犧牲疲陕, 排除萬難方淤,爭取勝利。
    Onlyyou丶完美閱讀 108評(píng)論 0 0