获取/搜索百度经验悬赏令
1、截止至今天(本经验发布时间),由于悬赏令目前尚未提供搜索查询悬赏令的功能。
一些五花八门的脚本语言解决方法或者JS代码的方法,都是通过程序获取很多页的悬赏令,再搜索获取的内容。
由于很多人电脑没有相关程序,或者有一定技术难度,造成使用不方便。本作者实现了一个使用windows自带的powershell获取和搜索的方案。
所要获取的位置在任务->悬赏令。这个页面无需登陆也能访问,因此便于程序检索。


2、首先,按下Windows + R,打开运行窗口,输入powershell,回车。

3、在powershell窗口中粘贴如图代码(默认是获取游戏数码分类下):
$pagesMin = 0;
$pagesMax = 10;
"准备获取页数(游戏数码,悬赏令页面): 从 " + $pagesMin + " 到 " + $pagesMax;
for($p=$pagesMin; $p -lt $pagesMax; $p++)
{
$url = "https://jingyan.baidu.com/patch?cid=10&pn="+$p*15;
$webReq = [System.Net.HttpWebRequest]::Create($url);
$webReq.UserAgent = "Mozilla/4.0 (compatible; MSIE8.0; Windows NT 6.1; Trident/4.0)";
$webReq.IfModifiedSince = Get-Date;
$webReq.Date = Get-Date;
$webReq.Method = "GET";
$webReq.Timeout = 10000;
$webReq.ReadWriteTimeout = 12000;
$response = $webReq.GetResponse();
$stream = $response.GetResponseStream();
$readStream = New-Object System.IO.StreamReader($stream , [System.Text.Encoding]::UTF8);
$content = $readStream.ReadToEnd();
$response.Close();
$readStream.Close();
$matches = [System.Text.RegularExpressions.Regex]::Matches(
$content, 'k" data-queryId="\w+">(.*?)<');
"`n--------------page " + $p + "-------------";
$url
for($i=0; $i -lt $matches.Count; $i++)
{
$match = $matches[$i];
$piece = $match.Groups[1].Value;
$piece
}
}
"`n******获取完毕,ctrl+F搜索,任意键结束.******" ;
[Console]::Readkey() | Out-Null ;Exit ;

4、回车运行。第一行会显示准备获取的页码是从第几页到第几页。(数字可修改)
接下来程序依次获取各个页的悬赏。

5、等到显示绿色框内的字时,已经执行完毕。此时,按任意键程序会结束。
我们可以直接按下ctrl+F打开搜索框。

6、在搜索框输入要搜索的内容搜索。搜索到以后,我们可以查看内容所在的page编号。在page编号下面是这一页悬赏令的网址。

7、page编号为2,对应页数为2+1=3。
我们也可以直接复制网址,粘贴到浏览器到达对应页面。

1、首先,代码的最前面两行,pageMin是起始页数-1,pageMax是结束页数。
如图,就是获取1-10页,page编号为0-9。

2、如果要修改获取的分类,请修改如图cid=后边的数字。
想要知道某个分类的cid数值也很简单,到那个分类下,看地址栏的地址。
"全部"的cid值是0。


3、如果要保存代码到文件方便每次使用,可以新建txt文件,修改后缀为.ps1,打开,把代码粘贴进去,保存。




4、使用的时候,右键->使用powershell运行即可。
运行结果和复制代码无区别。但是要注意,最后如果按下任意键,窗口会直接关闭,所以执行完直接ctrl+F搜索即可,不要按下单独的键。
