spiderflow爬蟲踩過的坑,及注意事項


簡介

spider-flow 是一個爬蟲平台,以圖形化方式定義爬蟲流程,無需代碼即可實現一個爬蟲

特性

  • 支持css選擇器、正則提取
  • 支持JSON/XML格式
  • 支持Xpath/JsonPath提取
  • 支持多數據源、SQL select/insert/update/delete
  • 支持爬取JS動態渲染的頁面
  • 支持代理
  • 支持二進制格式
  • 支持保存/讀取文件(csv、xls、jpg等)
  • 常用字符串、日期、文件、加解密、隨機等函數
  • 支持流程嵌套
  • 支持插件擴展(自定義執行器,自定義函數、自定義Controller、類型擴展等)
  • 支持HTTP接口

插件

  • redis插件
  • mongodb插件
  • IP代理池插件
  • OSS插件
  • OCR插件
  • Selenium插件

踩過的坑

有些頁面是通過ajax,異步加載再渲染的。就需要用到,selenium插件。但是每次執行都會打開一個測試的chrome瀏覽器。如果是遍歷幾十或更多數據就會電腦卡死。經過多方咨詢了解到可以使用。selenium的toUrl函數 ,使用方法在執行函數空間中寫 ${resp.toUrl('https://www.baidu.com')},這樣做后,確實是在同一個瀏覽器跳轉,節省的資源,以為問題解決了,我太年輕了,后面才發現,經過toUrl后resp只能存在新的一個,也就是說抓取了好幾個頁面但是最后輸出都是相同的,是最后一個頁面響應的值。

不死心再次嘗試 將每個頁面的resp結果,放到一個數組中。發現還是不行,經過咨詢知道,只要通過了toUrl,resp就只存最后一個的值了,數組里存的值也是重復的數據,我再想這樣要toUrl有何用

最終解決方案

使用selenium結合定時任務實現,這樣一次抓幾個頁面,然后釋放資源。

注意實現

  1. 循環變量:默認為item,與for(Object item : collections) 中的item意義相同,但是在沒有地方配置次數或集合時為循環下標
    • 循環下標:當循環時,會產生下標(從0開始)以該值存入變量中,與for(int i =0; i < array.length;i++)中的i意義相同
  2. 定時任務,正常配置了cron,開了定時任務就應該定時執行才對, spiderflow在開了定時后還需要重新保存下cron才生效執行。
  3. 變量定義都需要使用${} 否則做字符串處理

總結

spiderflow是一個非常不錯的開源,優點還是很多的,爬蟲平台,只要搞過一定開發的,很容易上手。這里做的總結和注意事項,僅是記錄和備忘希望下次遇到知道怎么處理。也分享給大家。給spiderflow點贊


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM