Powershell 簡易爬蟲,提取種子網站的磁力鏈接

目錄

  • 一. 需求
  • 二. 分析
    • 2.1 思路分析
    • 2.2 技術點
  • 三. 代碼
  • 四. 效果


一. 需求

?有網站如下所示,先要求從按照關鍵詞搜索到的網頁中,提取出所有的磁力鏈接。

在這里插入圖片描述


二. 分析

2.1 思路分析

  • 打開網頁之后,從網頁中先提取出所有的標題相關的url
  • 然后再打開所有提取到的url
  • 再從每一個新打開的頁面中獲取磁力鏈接所在a標簽的href屬性值

2.2 技術點

  • Invoke-WebRequest:發送網絡請求
  • workflow
    • workflow 是一種特殊的語法結構,用于創建并發執行的工作流。工作流允許你定義一系列步驟,這些步驟可以同時執行或并行執行,適用于需要處理大量數據或需要在多個計算資源上執行任務的情況。
    • 在 foreach -parallel 循環內并行執行多個任務,從而加快處理速度。
    • InlineScript { ... }:內聯腳本塊用于在工作流中執行本地 PowerShell 腳本或命令。
  • Add-Type -Path ".\xxx.dll":用于引入第三方dll
  • New-Object HtmlAgilityPack.HtmlDocument:用于創建引入的庫中的對象
    • HtmlAgilityPack:用于解析html文本的第三方庫
    • 官網:https://github.com/zzzprojects/html-agility-pack/releases/tag/v1.11.61
    • 下載源碼后,手動編譯 HtmlAgilityPack.Net40,得到 HtmlAgilityPack.dll
  • .DocumentNode.SelectSingleNode:用于配合XPATH語法解析html文本
  • [System.Uri]::EscapeDataString($搜索關鍵詞)
    • 搜索的關鍵字是中文,實際發送請求時,需要把中文轉換

三. 代碼

param(# 參數必須輸入[Parameter(Mandatory)]# 當未添加 -name 參數時,腳本會報錯[string]$搜索關鍵詞
)# 域名
$domain = 'http://www.kisssub.org'
# 搜索關鍵字,通過 [System.Uri]::EscapeDataString 對漢字進行編碼
$enCoded_search_keyword = [System.Uri]::EscapeDataString($搜索關鍵詞)
# 請求地址
$request_url = "$($domain)/search.php?keyword=$($enCoded_search_keyword)"# session
$session = New-Object Microsoft.PowerShell.Commands.WebRequestSession
$session.UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36"
$session.Cookies.Add((New-Object System.Net.Cookie("user_script_url", "%2F%2F1.acgscript.com%2Fscript%2Fmiobt%2F4.js%3F3", "/", "www.kisssub.org")))
$session.Cookies.Add((New-Object System.Net.Cookie("user_script_rev", "20181120.2", "/", "www.kisssub.org")))# 請求頭
$request_header = @{"Accept"="text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9""Accept-Encoding"="gzip, deflate""Accept-Language"="zh-CN,zh;q=0.9,ja;q=0.8,en;q=0.7,zh-TW;q=0.6""Cache-Control"="no-cache""Pragma"="no-cache""Upgrade-Insecure-Requests"="1"
}# 獲取磁力鏈接所在頁面的URL
function Get_WEB_URL {param ([string]$url, [Microsoft.PowerShell.Commands.WebRequestSession]$session, [PSCustomObject]$header)# 發送網絡請求$response = Invoke-WebRequest -UseBasicParsing `-Uri $url `-WebSession $session `-Headers $header# 若響應code不是200,則證明網絡連接失敗if ($response.StatusCode -ne 200) {Write-Host "網絡請求失敗..."return }# 提取磁力鏈接所在頁面的url$target_web_urls = $response.Links.outerHTML | ForEach-Object {# 若不是對應頁面的url,則跳過if (-not ($_ -match ".*show.*.html")) {return}# 提取出目標頁面的url$_.split(" ")[1].replace("href=`"", "$($domain)/").replace("`"", "")}return $target_web_urls
}# 指定url,session,header 發送網絡請求
$target_web_urls = Get_WEB_URL -url $request_url -session $session -header $request_header
$target_web_urls | Out-Host<#?創建一個workflow,用于并發處理多任務
#>
workflow Get-WebContent {param ([string[]] $urls)<#?foreach -parallel 是 Workflow 中用來并行處理迭代集合的語法每個 $url 都會并行處理,即同時發送多個請求以提高效率#>foreach -parallel ($url in $urls) {# 睡眠1秒# Start-Sleep -Seconds 1# ?InlineScript 塊允許在 Workflow 中執行本地的 PowerShell 腳本或命令$web_response = InlineScript {# 發送網絡請求$webRequest = Invoke-WebRequest -UseBasicParsing -Uri $using:url -Headers $my_header# 獲取頁面上的所有url連接$webRequest.Links.outerHTML}# PSCustomObject 是自定義對象的數據類型[PSCustomObject]@{Content = $web_response}}
}Write-Host "????????????提取到的磁力鏈接如下????????????" -ForegroundColor Red# 引入 HtmlAgilityPack.dll 依賴庫
Add-Type -Path ".\HtmlAgilityPack.dll"
# 創建 HtmlDocument對象 用于解析html文本
$htmlDoc = New-Object HtmlAgilityPack.HtmlDocument# 調用workflow,獲取響應
$results = Get-WebContent -urls $target_web_urls
$results.Content | ForEach-Object {# 如果不是磁力鏈接的url,就跳過if (-not ($_ -match ".*ref=`"magnet.*")) {return}# 將含有磁力鏈接的html文本放到 HtmlDocument對象 中$htmlDoc.LoadHtml($_)<#?通過xpath語法提取到a標簽對象SelectSingleNode只能提取單節點SelectNodes可以提取多個節點#>$aEelement = $htmlDoc.DocumentNode.SelectSingleNode("//a[@id='magnet']")<#?根據id獲取href屬性(磁力鏈接內容)第2個參數是默認參數#>$aEelement.GetAttributeValue("href", "")
} | Get-Unique# 暫停
Pause

四. 效果

  • 只是簡易爬蟲,并未做IP代理池和cookie池等防反扒機制
  • 頻繁使用,在一段時間內會無法訪問該網站

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/38566.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/38566.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/38566.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux驅動部分內容整理

文章目錄 Linux驅動概念應用程序調用驅動程序流程驅動模塊的加載linux設備號加載和卸載注冊新字符設備注冊設備節點自動創建設備節點編譯編譯驅動程序編譯應用程序 地址映射ioctrl命令碼的解析 并發與競爭原子操作自旋鎖信號量互斥體 linux中斷DMA映射其它printkmemcpyvolatile…

如何在ubuntu上安裝ros-noetic?

如何在ubuntu上安裝ros-noetic&#xff1f; 1. 源由2. 快速安裝3. ROS學習 1. 源由 圍繞ros-noetic這個系統&#xff0c;前面已經有不少談及&#xff1a; Linux 35.5 JetPack v5.1.3ros-noetic安裝Linux 35.5 JetPack v5.1.3Fast-Planner編譯安裝Linux 35.5 JetPack v5.1.…

RocketMQ常用基本操作

文章中的rabbitmq使用的是rocketmq-all-5.1.3-bin-release版本&#xff0c;需要安裝包的可自行下載 RockerMQ啟動停止命令 啟動命令 nohup sh bin/mqnamesrv & nohup sh bin/mqbroker -n localhost:9876 --enable-proxy & 查看日志 tail -f ~/logs/rocketmqlogs/…

多線程編程的挑戰與解決方案

多線程編程的挑戰與解決方案 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01; 1. 多線程編程的挑戰 在現代軟件開發中&#xff0c;多線程編程成為處理并發任務…

PatchTST創新點

這篇論文的創新點主要集中在PatchTST模型的設計和應用中。以下是對其創新點的詳細說明&#xff1a; 創新點 頻道獨立補丁設計&#xff1a;PatchTST模型通過將多變量時間序列分割成不同的頻道&#xff0c;每個頻道作為單變量時間序列處理。每個頻道獨立地通過實例歸一化操作和補…

明星中藥企業系列洞察(九)一手好牌打的稀爛!近500年老字號鎖定退市,太安堂為何“塌房”了?

近日&#xff0c;太安堂發布公告稱&#xff0c;公司已收到深交所下發的《關于廣東太安堂藥業股份有限公司股票終止上市的決定》&#xff0c;深交所決定終止公司股票上市&#xff0c;預計其最后交易日期為7月4日。太安堂曾作為國內知名的中成藥上市公司之一&#xff0c;是國家級…

matlab仿真 通信信號和系統分析(上)

&#xff08;內容源自詳解MATLAB&#xff0f;SIMULINK 通信系統建模與仿真 劉學勇編著第三章內容&#xff0c;有興趣的讀者請閱讀原書&#xff09; 一、求離散信號卷積和 主要還是使用卷積函數conv&#xff0c;值得注意的是&#xff0c;得到的卷積和長度結果為81&#xff0…

node.js+uniapp(vue),阿里云短信驗證碼

reg.vue: 思路是&#xff1a;前端調用獲取驗證碼的接口 > 后端生成驗證碼返回給前端 > 前端渲染驗證碼 <template> <div> <input class"sl-input" v-model"phone" type"tel" maxlength"11" placeholder"手…

微信小程序畢業設計-微信食堂線上訂餐系統項目開發實戰(附源碼+論文)

大家好&#xff01;我是程序猿老A&#xff0c;感謝您閱讀本文&#xff0c;歡迎一鍵三連哦。 &#x1f49e;當前專欄&#xff1a;微信小程序畢業設計 精彩專欄推薦&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python畢業設計…

【在線評論】不同視角下在線評論對客戶滿意度和推薦度的影響—推文分析—2024-07-01

今天的推文主題是【在線評論】&#xff0c;重點關注可以關注第四篇&#xff0c;很全面地分析了在線評論的信息多維性。 第一篇從客戶的在線評論入手&#xff0c;將客戶消費的動機為功利、享受、社會滿足&#xff1b;第二篇是關于在線評論對消費者再次選擇同一家酒店的機制探索…

MySQL之主從同步、分庫分表

1、主從同步的原理 MySQL主從復制的核心是二進制日志 二進制日志&#xff08;binlog&#xff09;記錄了所有DDL語句和DML語句&#xff0c;但不包括數據查詢&#xff08;select、show&#xff09;語句。 1.1、復制分三步 master主庫在事務提交時&#xff0c;會把數據變更記錄…

電子戰學習筆記01:電子戰概論

0、寫在文前 本人在學習電子戰相關理論知識時&#xff0c;一直感覺無從下手&#xff0c;之后在老師的推薦下購買了《EW101&#xff1a;電子戰基礎》紙質書籍學習&#xff0c;所以將自己的學習筆記在CSDN上記錄一下&#xff0c;也供有需要的同學參考。 1、電子戰定義 電子戰&…

Spring Boot與Apache Kafka集成的深度指南

Spring Boot與Apache Kafka集成的深度指南 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01; 在現代分布式系統中&#xff0c;消息隊列的作用愈發重要&#xff0…

【鴻蒙學習筆記】鴻蒙ArkTS學習筆記

應用開發導讀&#xff1a;https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/application-dev-guide-V5 【鴻蒙培訓】第&#xff11;天?環境安裝 【鴻蒙培訓】第&#xff12;天?裝飾器?組件和頁面生命周期 【鴻蒙學習筆記】數據類型 【鴻蒙學習筆記】運算…

Spring Cloud中的服務發現與注冊

Spring Cloud中的服務發現與注冊 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01;今天我們將探討Spring Cloud中的服務發現與注冊&#xff0c;這是微服務架構中至…

全網最詳細的 gin框架請求數據綁定Bind 源碼解析 -- 幫助你全面了解gin框架的請求數據綁定原理和方法

在gin框架中&#xff0c;我們可以將多種請求數據&#xff08;json, form,uri&#xff0c;header等&#xff09;直接綁定到我們定義的結構體&#xff0c;底層是通過反射方式獲取我們定義在結構體上面的tag來實現請求數據到我們的結構體數據的綁定的。 在gin的底層有2大體系的數據…

Python pip install模塊時C++編譯環境問題

pip install模塊時C編譯環境問題 在接觸和使用python后&#xff0c;常常會通過pip install命令安裝第三方模塊&#xff0c;大多數模塊可以直接安裝&#xff0c;但許多新同學仍會遇見某些模塊需要實時編譯后才能安裝&#xff0c;如報錯信息大概是缺乏C編譯環境&#xff0c;本文則…

【Elasticsearch】Elasticsearch索引創建與管理詳解

文章目錄 &#x1f4d1;引言一、Elasticsearch 索引的基礎概念二、創建索引2.1 使用默認設置創建索引2.2 自定義設置創建索引2.3 創建索引并設置映射 三、索引模板3.1 創建索引模板3.2 使用索引模板創建索引 四、管理索引4.1 查看索引4.2 更新索引設置4.3 刪除索引 五、索引別名…

Go-知識測試-性能測試

Go-知識測試-性能測試 1. 定義2. 例子3. testing.common 測試基礎數據4. testing.TB 接口5. 關鍵函數5.1 testing.runBenchmarks5.2 testing.B.runN5.3 testing.B.StartTimer5.4 testing.B.StopTimer5.5 testing.B.ResetTimer5.6 testing.B.Run5.7 testing.B.run15.8 testing.B…

監聽藍牙對話的BlueSpy技術復現

本文是之前文章的BlueSpy技術的復現過程&#xff1a;https://mp.weixin.qq.com/s/iCeImLLPAwwKH1avLmqEpA 2個月前&#xff0c;網絡安全和情報公司Tarlogic在西班牙安全大會RootedCon 2024上提出了一項利用藍牙漏洞的BlueSpy技術&#xff0c;并在之后發布了一個名為BlueSpy的概…