1. 程式人生 > >從零開始學爬蟲001裁判文書網

從零開始學爬蟲001裁判文書網

中國裁判文書網是目前全球最大的裁判文書網,網站上公示了全國曆年的司法資料。作為資料分析、自然語言處理的原材料,我決定用採集一點資料,順便學習一下scrapy爬蟲。

    閒話不多說,先看一下網站是什麼樣。

    


  用瀏覽器抓下包,分析一下,就找到了資料介面


    可以看出,它返回的是列表資料,包括資料總量、裁判要旨原文,審判程式、案號等資訊,最重要的是文書ID,這個後面再說。

    分析一下header,會發現,它是一個post請求,請求的表單資料包括param、index、page、order、direction、vl5x、number、guid這幾個引數。很顯然,param是查詢字串,index是頁碼,page是一頁展示的資料量,order是排序方式。

    剩下的幾個引數不知道是啥意思,研究一下其他介面,很快發現number可以從前邊得出來。

    而這個number也是post請求得到的,請求的引數則是guid。那麼guid怎麼來呢?從名稱可以看出,它就是一個id,估計是用js生成的,看下網頁原始碼,很快就發現了一個函式createGuid,笑容逐漸猥瑣。


    vl5x呢,很快看出,也是js生成的。作為一個菜鳥,不懂js,我用selenium試了一下,發現速度太慢,不如scrapy非同步多執行緒。所以就考慮用scrapy寫爬蟲程式。

   先定義好item,按照列表頁和詳情頁的原始欄位。這裡文書號,就是前邊的文書ID,類似uuid一樣的形式,憑藉它可以訪問詳情頁。然後,寫好pipeline與spider,新增好代理ip、useraget池,連上mongo,就可以測試了。

   為了執行js,特地下了一個pyv8,試了試,果然666。

 

開始跑程式,發現了網站還是很坑,順序訪問網頁,沒次只能跑前100頁,也就是說最多能拿到2000條資料。怎麼辦呢?作為一名菜鳥,我想了一個簡單粗暴的辦法,就是增加條件,將資料量降低到2000條。這樣效率降低了,但是我可以 手動新增一個task列表,讓程式按照列表自動爬資料,開十幾二十個執行緒將速度提起來。

   另一個方法,是破解app,預計app端會簡單一點。但是菜鳥並不會ios和android逆向呀,這是個問題。

   2018-04-07更新

   花了點時間,我在scrapy上搭了一個按列表自動爬取資料的小框架。

   首先,配置爬取列表,包含了查詢字串、排序方式、排序方向、爬取頁數、狀態。

   然後,設定執行引數,每次程式執行結束後10到20分鐘,再次執行爬蟲程式,預防代理失效等異常,使得程式終止。

   在spider裡添加了讀取列表、變數賦值、修改列表狀態的程式碼,將post引數全部用變數替代,達到靈活變更的目的。當跑完爬取列表中的一個專案時,將頁指標重置為0,並寫入本次爬取資訊到檔案,以便觀察程式狀況。

   配置爬取列表時,將每次爬取的頁數控制在100以內,並且控制配置一次列表時間不長不短,能持續執行三天左右的時間。

   一頓操作之後的結果就是,腰不酸了,腿不痛了,資料量上來了,有時間玩遊戲了。

   接下來的目標就是學下android逆向,試試破解app。

   2018-05-28更新

   程式改進了代理,增加了概要模組採集。順帶貼了兩張圖,展示下guid和vl5x如何生成及使用。

                                                                                                                               (未完待續)

相關推薦

開始爬蟲001裁判文書

中國裁判文書網是目前全球最大的裁判文書網,網站上公示了全國曆年的司法資料。作為資料分析、自然語言處理的原材料,我決定用採集一點資料,順便學習一下scrapy爬蟲。    閒話不多說,先看一下網站是什麼樣

Java 開始爬蟲(gecco)

廢話:    第一次學習並嘗試分析、爬取一個網站的資料,全部是從零開始的經驗,希望對各位看官有幫助,當然,本次爬取的是一個比較簡單的網頁,沒有任何反爬蟲措施的網頁。    網上查了一下Java爬資料,最原始的方式是用請求網頁的字串然後用正則解析標籤,再查了一下有什麼爬蟲、解析

學習《開始Python爬蟲》PDF+源代碼+《精通Scrapy爬蟲》PDF

網站 復雜 精通 nbsp 註釋 mage targe 快速實現 bsp 學習網絡爬蟲,基於python3處理數據,推薦學習《從零開始學Python網絡爬蟲》和《精通Scrapy網絡爬蟲》。 《從零開始學Python網絡爬蟲》是基於Python 3的圖書,代碼挺多,如果是

IC卡解密開始2 版本更新! 解密工具PN532-mfoc-mfcuk-GUI V2.1 By:lookyour

由於 文件夾 7月 thread 2種 金融 系統 dos 同時 程序更新 更新內容最下面2017/5/3 V2.1======================================最簡要介紹下M1卡數據結構目前能看到的有2種M1卡,分別為S50 S70,其實就是

IC卡解密開始1 (也許會有2) 解密工具V2 V3大放送 By:lookyour

中國 tac ... 需要 編輯框 回復 mile gui for 前段時間發了一個破解的PN532工具,詳見 ===========================IC卡解密工具 PN532工具XP 爆破版http://www.52pojie.cn/thread-5978

開始android<Bitmap圖形組件.四十七.>

alt getheight drawtext layout pla cin mas 簡單 制圖 android.graphics.Bitmap(位圖)是Android手機中專門提供的用於操作圖片資源的操作類,使用此類能夠直接從資源文件之中進行圖片資源的讀取。而且對這些圖

開始Xamarin.Forms(一) 概述

erl 系統 mod 重寫 fwe 依賴 模式 sil c# Xamarin 讀 “?z?m?rin”,是一個基於開源項目mono的可以使用C#開發的收費的跨平臺(iOS、Android、Windows Phone、Mac)解決方式。

開始Xamarin.Forms(二) 環境搭建、創建項目

官方 log targe 4.4 pad jdk 新建文件夾 ini pos 一、環境搭建 Windows下環境搭建: 1.下載並安裝jdk 、Android SDK和NDK。當然還須要 VS2013 update 2(VS2010、VS2012均可)以上

如何開始Java編程

零基礎 簡單的 核心技術 為什麽 而且 log 更多 課程 比較 Java語言的學習開始,很多同學不知道從哪入手?如果你也想知道如何從零開始學Java?怎樣學Java最有效? 雖然Java面象對象很多東西都是被封裝好的直接用,相對其他語言沒那麽復雜,但是學的東西也沒有那麽的

開始Swift》學習筆記(Day67)——Cocoa Touch設計模式及應用之MVC模式

table control sdn rate term targe rac uitabbar bsp 原創文章,歡迎轉載。轉載請註明:關東升的博客 MVC(Model-View-Controller,模型-視圖-控制器)模式是相當古老的設計模式之中的一個,它最早出如今

開始Swift》學習筆記(Day60)——Core Foundation框架

類型轉換 字符 sso grid blog spa www water 轉載 創文章,歡迎轉載。轉載請註明:關東升的博客 Core Foundation框架是蘋果公司提供一套概念來源於Foundation框架,編程接口面向C語言風格的API。盡管在Swift中調用這樣

開始Swift》學習筆記(Day 55)——使用try?和try!差別

移動設計 ani ecb pcl mva fde 成了 lms 官方 原創文章。歡迎轉載。轉載請註明:關東升的博客 在使用try進行錯誤處理的時候,常常會看到try後面跟有問號(?)或感嘆號(!),他們有什麽差別呢?1.使用try? try?會將錯誤轉換為可選值,當調

開始C

技術 記錄 數據轉換 cnblogs logs .com 工作 數據 .cn   本著學習只是為了解軟件項目開發過程中可能出現的問題能夠做到預判,所以才在工作閑暇時自己自學C語言,今日學習記錄如下: 數據類型二已學完,下一步繼續學習~運算符和數據轉換 還是蠻有意

開始Swift》學習筆記(Day 57)——Swift編碼規範之凝視規範:文件凝視、文檔凝視、代碼凝視、使用地標凝視

精品 -type mil 顯示 clas ber ansi tex text 原創文章。歡迎轉載。轉載請註明:關東升的博客 前面說到Swift凝視的語法有兩種:單行凝視(//)和多行凝視(/*...*/)。這裏來介紹一下他們的使用規範。 1、文件凝視文件凝視就在每個文

開始Linux系統之Vi/Vim操作

命令模式 nmap 快捷 大小 users vim 修改 忽略大小寫 unmap vi/vim:編輯模式 <-:—-命令模式 —-a、i、o A、I、O —> 插入模式 設置行號 :set nu :set nonu 行號移動: gg G nG/

開始Linux系統(一)

系統啟動 linux 自定義 管理 如果 level 技術 int 沒有 Linux系統:分時多用戶多任務的操作系統; Linux系統引導流程: inittab配置文件中: 定義了linux系統的運行的7個級別:從0~6 0、6:分別代表關機和重啟,不建議設置為默認的

開始Python3(六)--叠代

pri 循環 true python 元素 常見 nbsp rabl rom   只要是可叠代對象,無論有無下標,都可以叠代, 默認情況下,dict叠代的是key。如果要叠代value,可以用for value in d.values(),如果要同時叠代key和value,

2017開始可視化數據分析師就業課程_數據分析師課程

數據分析2017從零開始學可視化數據分析師就業課程學習地址:http://www.xuetuwuyou.com/course/182課程出自學途無憂網:http://www.xuetuwuyou.com本課程由風舞煙老師團隊出品。分9個課程,26章,共計324課時! 第一階段、數據分析理論工具基礎篇課程一、數

開始HTTP (二) HTTP結構與基礎

現象 encode 伸縮 協議 for 服務端 例如 lis 格式 HTTP結構與基礎 這篇文章中,我們主要針對HTTP\1.1版本進行介紹 請求報文和響應報文 請求報文 請求報文由客戶端發出,其格式為: 請求方法 請求URI 協議版本 可選的請求首部字段和內容實體,

開始Kotlin-控制語句(4)

系列文章 ren kcon tin else andro 格式 當前 break 從零開始學Kotlin基礎篇系列文章 條件控制-if var a=10 var b=20 if(a>b) print(a)