本例以http://www.biqugexsw.com/30_30505/爲例php
頁面以下html
(1)什麼是js注入java
首先觀察控制檯例子的控制檯,發現全部的連接在.linsmain下python
在console.log下輸入web
Var s=$(".listmain a");ajax
for(var i=0;i<s.length;i++){console.log($(s[i]).attr("href"))}正則表達式
便能得到全部連接chrome
這就是簡單的js注入
json
Python簡單便捷爲爬蟲首選語言瀏覽器
爬取(1)中的內容並用正則表達式處理
開始爬取單章內容,以http://www.biqugexsw.com/30_30505/13935714.html
爲例
在觀察
http://www.biqugexsw.com/30_30505/13935714.html
的控制檯
對比以後發現由於這個網站作過反爬蟲處理,具體的小說文字被隱藏,關於如何作反反爬蟲處理有不少方法,如下只說其中的js注入反反爬蟲處理
在這以前須要理清一下思路
第一如今須要的是控制檯底下的這些源碼利用console.log注入js能夠獲取
第二將獲取的文字存儲到本地,js很難實現這樣的功能,那麼須要一種能夠存儲文件的語言,php,python,java均可以,本例以java爲例子
第三js如何和java通訊,以把得到到的文字發個java,java進行存儲
本例以ajax爲例
第一已經實現,第二須要創建一個web項目
將js得到文字ajax發給java
var vals=$("#content").text();
var names=$(".content h1").text();
$.ajax({
type:"POST",
url:"http://localhost:8080/jjs/index",
data:{"va":vals,"names":names},
success:function(es){}
});
再在java裏得到
如何將字符存儲爲txt自行百度
通過(3)已經能夠單張小說爬下來,可是一個小說有不少章,不可能打開一個頁面console注入一下,因此要批量注入,批量注入須要解決的問題
第一須要打開不一樣的頁面獲取不一樣的內容而後發個java存儲
第二打開的頁面較多,會致使瀏覽器卡死
解決第一個問題須要引入一個工具,瀏覽器插件(chrome)
在chrome瀏覽器輸入
chrome://extensions/
會進入插件頁面,本例以360極速瀏覽器爲例
瀏覽器插件開發請轉
http://open.chrome.360.cn/extension_dev/devtools.html
新建一個目錄以下
manifest.json:
Content_script屬性爲注入配置
Matches爲訪問哪些連接時注入
Js爲注入的文件,注入了jq和ch.js
Ch.js這裏寫打開頁面所作的操做
發送本界面的文字,並在兩秒後關閉
須要導入批量打開的連接fileList.txt
fileList.txt中內容爲單章的連接,利用定時器2s打開一個頁面
fileList.txt可用python生成
插件開發完畢以後,在瀏覽器安裝本插件
選擇加載已解壓的擴展程序,選擇插件文件,就將插件安裝成功了
打開1.html,加載fileList.txt,點擊開始
每2s彈出一個窗口此時會發送ajax請求
Java會將存儲爲文件