三篇文件學會使用casperjs製作爬蟲
首先要明白什麼是爬蟲,爬蟲聽起來很強大,其實就是自動請求獲取資料處理資料的一個工具。
明白了什麼是爬蟲在看看什麼是casperjs,casperj是一個執行在python環境中的一個框架,是一個基於 PhantomJs 的工具,其比起 PhantomJs 可以更加方便的進行 navigation。(簡單點說就是一個無介面的瀏覽器)
如何使用和安裝:https://www.jianshu.com/p/46b9d255cecb
api文件:http://docs.casperjs.org/en/latest/modules/casper.html#eachthen
看完這兩個已經會玩了,我是用來抓截圖以及資料,個人不是很喜歡這個東西但是能結合jquery使用是很多人想要的。j
下面是我寫的例子:就抓我自己的部落格吧
首先要有環境:
1 要先安裝的有 nodejs 檢視版本 node -v
2.phantom解壓 新增環境變數 路徑/bin 檢視版本 phantom --version
再去phthon官網下載phthon安裝 最後 npm install -g casperjs
然後分析網頁 :
按f12 點左上角再點 標題:
得到class 然後原網頁右鍵檢視原始碼
然後ctrl+f全域性搜尋剛剛的class
就得到
連結:article-item-box>h4>a
標題也在這個a裡面;
建立工程:
哎喲我去,單詞寫錯了,算了就將就著看吧,反正沒什麼影響不是。
好了分析好了寫程式碼;
phantom.outputEncoding="utf-8";
//建立
var casper = require('casper').create({
pageSettings: {
loadImages: true, // flase不載入圖片,減少請求
},
clientScripts: ["jquery.1.8.js"]//客戶端預設語言 這個一定是要本地的不能遠端具體為什麼我也不知道反正就是這麼用的
});
casper.options.waitTimeout =20000; //設定訪問超時
casper.options.clientScripts = ["jquery.1.8.js"];//客戶端預設語言和上面一樣這裡可以不寫
var fs = require('fs');//用於輸出檔案
casper.start();
casper.viewport(1524, 768);
var captureSavePath = 'C:/bill/';
var url = 'https://blog.csdn.net/qq_35189120';//我的csdn部落格
casper.then(function () {
this.open(url).then(function () {
//不用官方的日誌是因為裡面太多不知道幹嘛的反正我看不懂不如自己提示。
console.log("start");
//在evaluate內無法console的因為這類似一個 遠端執行相當於在頁面中執行程式碼而不是在我們的程式中
//step 1 遍歷全部url
urlArr=this.evaluate(function () {
var itemUrlArr=new Array();
//通過選擇器遍歷
$(".article-item-box>h4>a").each(function (index,ele) {
var paper={};//把文章看成物件
//為甚要用這麼奇詭的命名 為了避免和上面的url衝突 js會變數提升,在es6中可以使用let宣告但是這個不支援
var CPurl=$(ele).attr("href");//獲取url
var titel=$(ele).html();
//使用正則取出標題。 不好意思正則比較菜 前面兩個去空格,後面一個去換行符 最後一個去掉<span></span>標籤
titel=titel
.replace(/(^\s*)|(\s*$)/g, "")
.replace(/ /g,"")
.replace(/[\r\n]/g, "")
.replace(/^<.*>/g,"");
paper.url=CPurl;
paper.title=titel;
itemUrlArr.push(paper);
});
return itemUrlArr;
});
//到這裡已經獲取到全部的url和標題了
console.log(urlArr[0].url);
//迴圈陣列去開啟對應介面並且截圖
var result=JSON.stringify(urlArr);
this.eachThen(urlArr,function (response) {
//當前物件 就是上面的paper
var paperE=response.data;
var cUrl=paperE.url;
console.log("showurl:"+cUrl);
//開啟對應的頁面
this.open(cUrl).then(function() {
//等待返回真執行回撥
this.waitFor(function () {
//顯示錶單載入了
return this.evaluate(function() {
return $('.blog-content-box').size() > 0;
});
},function(){
console.log("load success");
//獲取邊框範圍
var contentBillBounds=this.getElementBounds("div[class='blog-content-box']");
//截圖
this.capture(captureSavePath+'/'+ paperE.title+'/'+'img.jpg' , contentBillBounds);
//輸出資料
fs.write(captureSavePath+'/'+ paperE.title+'/' +'data.json',result);
})
});
})
})
});
casper.run();//執行
然在windows cmd執行
去定義的資料夾看看 。就是我的三篇文章 然後裡面是對應的截圖
;
要想全自動只要配合bat等其他定時操作就可
聊天交友/修仙練級群:709332479
相關文章
- 【Python學習】爬蟲爬蟲爬蟲爬蟲~Python爬蟲
- python爬蟲利用requests製作代理池sPython爬蟲
- 爬蟲作業一爬蟲
- PHP蜘蛛爬蟲開發文件PHP爬蟲
- Node.js學習之路22——利用cheerio製作簡單的網頁爬蟲Node.js網頁爬蟲
- 使用java 爬蟲Java爬蟲
- 使用爬蟲爬取超星學習通的作業時間並且通過郵件提醒!爬蟲
- 網路爬蟲如何運作?爬蟲
- GB標準文件爬蟲下載程式爬蟲
- Selenium IDE使用指南:爬蟲指令碼錄製器IDE爬蟲指令碼
- 一起學爬蟲——使用Beautiful Soup爬取網頁爬蟲網頁
- Python爬蟲之路-chrome在爬蟲中的使用Python爬蟲Chrome
- Python爬蟲之路-selenium在爬蟲中的使用Python爬蟲
- 【0基礎學爬蟲】爬蟲基礎之自動化工具 Pyppeteer 的使用爬蟲
- 【0基礎學爬蟲】爬蟲基礎之自動化工具 Playwright 的使用爬蟲
- 【0基礎學爬蟲】爬蟲基礎之自動化工具 Selenium 的使用爬蟲
- 【0基礎學爬蟲】爬蟲基礎之網路請求庫的使用爬蟲
- node爬蟲-使用puppeteer爬蟲
- 怎麼使用爬蟲爬蟲
- 爬蟲-selenium的使用爬蟲
- python網路爬蟲(14)使用Scrapy搭建爬蟲框架Python爬蟲框架
- 什麼是爬蟲?學習Python爬蟲難不難?爬蟲Python
- python爬蟲是什麼?學習python爬蟲難嗎Python爬蟲
- 實用爬蟲-02-爬蟲真正使用代理 ip爬蟲
- 3 行寫爬蟲 - 使用 Goribot 快速構建 Golang 爬蟲爬蟲Golang
- 學會用程式碼製作愛心!
- 【從零開始學爬蟲】模板的複製與貼上爬蟲
- 3天學會網頁爬蟲進行資料分析網頁爬蟲
- 要學會Python爬蟲都需要什麼基礎呢?Python爬蟲
- 學習Pytho爬蟲常常會用到的一些庫!爬蟲
- 爬蟲學習-初次上路爬蟲
- selenium爬蟲學習1爬蟲
- python爬蟲學習1Python爬蟲
- 爬蟲之xpath的使用爬蟲
- Python爬蟲之Pyspider使用Python爬蟲IDE
- 爬蟲使用代理是否安全爬蟲
- 爬蟲框架-scrapy的使用爬蟲框架
- Scrapy爬蟲框架的使用爬蟲框架