fa下載器總結

来源:http://www.cnblogs.com/recallfuture/archive/2017/10/28/fa-xia-zai-qi-zong-jie.html
-Advertisement-
Play Games

前言作為一名合格的furry,我不僅要吸娜娜奇,還要天天泡在fa吸大觸們的furry作品,這其中難免遇到某個十分喜愛的作者,於是便想down空此作者的所有作品。鑒於一張張的保存實在費時費力,寫個爬蟲來解決眼前的問題似乎再好不過了,所以便有了現在這個下載器。功能介紹根據作者名批量下載此作者的所有作品,... ...


前言

作為一名合格的furry,我不僅要吸娜娜奇,還要天天泡在fa吸大觸們的furry作品,這其中難免遇到某個十分喜愛的作者,於是便想down空此作者的所有作品。 鑒於一張張的保存實在費時費力,寫個爬蟲來解決眼前的問題似乎再好不過了,所以便有了現在這個下載器。

功能介紹

根據作者名批量下載此作者的所有作品,包括畫廊和手稿。可填寫自定義高級參數,包括從第幾頁第幾張開始,下載多少張。對於登陸後才能查看的內容,需要填寫字元串cookie。下載的過程中會有詳細的下載日誌顯示在文本框中。

目標操作平臺

Windows

語言

c#

最低需求

.net4.0

代碼流程框架

收集用戶在界面中輸入的信息> 初始化整體下載所需的變數> 開一個線程來執行下載函數> 判斷當前需要下載哪個圖集> 進入對應圖集的下載函數並初始化相關變數> 下載並解析列表頁面> 迴圈下載本頁的所有圖片> 迴圈下載所有頁> 下載下一個圖集> 執行結束函數。

遇到的坑

這麼個小玩意本以為不會花太久就能做成心儀的樣子,然而事實是從開始到現在斷斷續續已經做了半年,經歷好幾個“大版本”修改,才算滿意。

這裡整理下曾經遇到的坑

初始化的時機

並不是所有參數的初始化時機都是一樣的,比如總下載量需要在整個下載的最開始初始化為零,這個時機在用戶按下開始按鈕之後,下載開始之前。

而另一個參數,單個圖集的總下載量,這個參數是為了判定是否已經到達最大下載量。它就需要在另一個時機來歸零,也就是放在圖集下載函數的最開始,這樣就可以在連續下載圖集的時候,準確無誤的初始化。

cookie模擬登錄

這個應該是爬蟲里比較基本的操作了,不過我自己按照網上的步驟寫出來的代碼,經常登陸失敗,不知道是cookie的問題還是代碼的問題。後來索性直接用了網上比較成熟的整套代碼,只用來做cookie登錄真是大材小用了,不過起碼不用為輪子的事操心。

然後…還是登陸失敗,那就很明瞭了,cookie有問題,所以我便仔細研究cookie字元串的格式,發現其中有幾個鍵值對的格式十分的奇妙,兩個分號間有兩個等號,導致程式分析失敗,,

以後還是不用360瀏覽器了。

去掉搗亂的幾個cookie之後就沒什麼問題了

html頁面分析

開始是用的string類裡面的各種函數,查詢字元串,移位,替換,代碼又長又難以理解,後來去學了正則表達式,三行搞定所有分析,強大到無話可說。

結尾

寫這個軟體之前我都不知道啥是爬蟲,直到後來有人跟我說這就是。。

很高興通過這個軟體既滿足了私欲【x】,又學到了一堆新知識,尤其是強大的正則【導致我去學了perl,不過半途而廢了】。

代碼已經發佈到github,地址是這裡


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 第一次面試遇到的問題,當時完全懵逼了 網上搜到的答案: 1. 管道( pipe ):管道是一種半雙工的通信方式,數據只能單向流動,而且只能在具有親緣關係的進程間使用。進程的親緣關係通常是指父子進程關係。 2. 有名管道 (named pipe) : 有名管道也是半雙工的通信方式,但是它允許無親緣關係 ...
  • WSL,Windows Subsystem for Linux,就是之前的Bash on [Ubuntu on] Windows(嗯,微軟改名部KPI++),在wsl環境下我們可以運行一些Linux程式。 首先要說一句,其實Windows 10在一周年更新(1607,內部版本14393)的時候就加入 ...
  • NTP(Network Time Protocol,網路時間協議)是用來使網路中的各個電腦時間同步的一種協議。它的用途是把電腦的時鐘同步到世界協調時UTC,其精度在區域網內可達0.1ms,在互聯網上絕大多數的地方其精度可以達到1-50ms。 NTP伺服器就是利用NTP協議提供時間同步服務的。 系 ...
  • rpm --import http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-6 執行完成後再按照如圖所示操作 ...
  • 第一步:# vi /etc/sysconfig/network-scripts/ifcfg-bond0 DEVICE=bond0 BONDING_OPTS="mode=0 miimon=100" BOOTPROTO=none ONBOOT=yes BROADCAST=192.168.0.255 IP ...
  • 上篇文章介紹瞭如何在ASP.NET MVC項目中引入Identity組件來實現用戶註冊、登錄及身份驗證功能,並且也提到了Identity是集成到Owin中的,本章就來介紹一下什麼是Owin以及如何使用Owin來增強Identity的功能。 本章的主要內容有: ● 什麼是Owin ● 關於Katana ...
  • 今天跟著學習了一篇關於表格的排序、過濾與分頁功能的博客,下邊分享一下學到的知識與心得: 一、應用之前樣式,增加測試數據 對Views —— Account —— Index.cshtml進行如下修改: (1)應用佈局頁 _LayoutAdmin.cshtml @{ ViewBag.Title = " ...
  • .Net常用類庫 一、String成員方法(常用) 1,bool Contains(string str) 判斷字元串對象是否包含給定的內容 2,bool StartsWith(String str):判斷字元串對象是否以給定的字元串開始。 3,bool EndsWith(String str):判 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...