Powershell 简易爬虫,提取种子网站的磁力链接


一. 需求

⏹有网站如下所示,先要求从按照关键词搜索到的网页中,提取出所有的磁力链接。

在这里插入图片描述


二. 分析

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/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值