溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何使用scrapy+splash+Lua滾動(dòng)爬取CSDN

發(fā)布時(shí)間:2021-11-09 18:19:24 來(lái)源:億速云 閱讀:300 作者:柒染 欄目:大數(shù)據(jù)

如何使用scrapy+splash+Lua滾動(dòng)爬取CSDN,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

這個(gè)主要是為了使用splash,做的

CSDN爬的數(shù)據(jù)頻繁以后好像會(huì)自動(dòng)504,開始正文:

安裝scrapy,安裝splash需要安裝docker,詳細(xì)的安裝步驟在我的csdn博客

https://blog.csdn.net/zhao_5352269/article/details/82850496


打開csdn,會(huì)發(fā)現(xiàn)csdn的文章是隨著你鼠標(biāo)滑動(dòng)向下加載的

如何使用scrapy+splash+Lua滾動(dòng)爬取CSDN

如果就只用scrapy框架爬的話,就是只有當(dāng)前顯示的內(nèi)容

而我們需要滑動(dòng)以后的內(nèi)容,就需要splash了,當(dāng)然是用selnium也是可以的

安裝完splash以后,啟動(dòng)服務(wù),在頁(yè)面訪問

如何使用scrapy+splash+Lua滾動(dòng)爬取CSDN

點(diǎn)擊Examples,再繼續(xù)選擇Scroll page,就會(huì)出現(xiàn)改腳本,點(diǎn)擊render me,就會(huì)直接運(yùn)行,返回你所需的東西.默認(rèn)的url可能會(huì)有點(diǎn)慢,直接復(fù)制csdn的地址,在運(yùn)行,

如何使用scrapy+splash+Lua滾動(dòng)爬取CSDN

如何使用scrapy+splash+Lua滾動(dòng)爬取CSDN

如何使用scrapy+splash+Lua滾動(dòng)爬取CSDN

可以將所有的都截取加上,詳細(xì)見官方文檔https://splash.readthedocs.io

  • splash:set_viewport_full - 更改視口大?。ㄔ?nbsp;splash:png或 splash:jpeg之前調(diào)用它 )以獲取整個(gè)頁(yè)面的屏幕截圖;

如何使用scrapy+splash+Lua滾動(dòng)爬取CSDN

如何使用scrapy+splash+Lua滾動(dòng)爬取CSDN

將圖片保存,這樣就實(shí)現(xiàn)在splash中滑動(dòng)的效果

如何使用scrapy+splash+Lua滾動(dòng)爬取CSDN

接下來(lái)就是在scrapy框架中,使用splash了。

將剛才的腳本復(fù)制到爬蟲中(微信這個(gè)有問題,不能全部顯示,一會(huì)發(fā)源碼)

script = """
function main(splash, args)
 splash:go(args.url)
 local scroll_to = splash:jsfunc("window.scrollTo")
 scroll_to(0, 1000)
 splash:set_viewport_full()
 splash:wait(10)
 return {html=splash:html()}
end
"""

復(fù)制過來(lái)沒有全部顯示

然后再使用SplashRequest中的args傳遞參數(shù),也可以使用Scrapy.Request使用meta傳遞參數(shù)

yield SplashRequest(nav_url, endpoint='execute', args={'lua_source': script, 'url': nav_url}

在對(duì)setting進(jìn)行設(shè)置(必須)

DOWNLOADER_MIDDLEWARES = {
   'scrapy_splash.SplashCookiesMiddleware':723,
   'scrapy_splash.SplashMiddleware':725,
   'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 810,#不配置查不到信息
  # 'Technology.middlewares.TechnologyDownloaderMiddleware': 543,
}
HTTPCACHE_ENABLED = True
HTTPCACHE_EXPIRATION_SECS = 0
HTTPCACHE_DIR = 'httpcache'
#HTTPCACHE_IGNORE_HTTP_CODES = []
#HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage'
SPLASH_URL = "http://192.168.99.100:8050"      #自己安裝的docker里的splash位置
DUPEFILTER_CLASS = "scrapy_splash.SplashAwareDupeFilter"
HTTPCACHE_STORAGE = 'scrapy_splash.SplashAwareFSCacheStorage'

執(zhí)行代碼

如何使用scrapy+splash+Lua滾動(dòng)爬取CSDN

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI