【.net】获取网页CDM的下载链接的地址
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Framework.Core.Crawl;
using HtmlAgilityPack; namespace WebCaptureSolution
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
[DllImport("urlmon.dll", CharSet = CharSet.Ansi)]
private static extern int UrlMkSetSessionOption(int dwOption, string pBuffer, int dwBufferLength, int dwReserved); const int URLMON_OPTION_USERAGENT = 0x10000001; const string SPUserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36";
[STAThread] static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
string log_url = "http://www.handsupowo.pl/member.php?action=login"; string url1 = "http://www.handsupowo.pl/archive/index.php?forum-13.html";
List<string> aList = new List<string>();
List<string> lastinfo = new List<string>(); var form = new WebCapture(); form.DocumentOK = false;
#region ログイン
if (!string.IsNullOrEmpty(SPUserAgent))
{
UrlMkSetSessionOption(URLMON_OPTION_USERAGENT, SPUserAgent, SPUserAgent.Length, 0);
}
form.Navigate(log_url);
while (!form.DocumentOK)
{
Application.DoEvents();
} //step 1 login
var s = form.WebBrowser.Document.GetElementById("content");
var input = s.GetElementsByTagName("input"); for (int i = 0; i < input.Count; i++)
{
var p = input[i];
if (p.OuterHtml.Contains("username"))
{
p.SetAttribute("value", "id");
}
else if (p.OuterHtml.Contains("pass"))
{
p.SetAttribute("value", "password");
}
else if (p.OuterHtml.Contains("submit"))
{
p.InvokeMember("Click");
break; } }
var startTime = System.DateTime.Now;
while ((System.DateTime.Now - startTime).TotalSeconds <= 10)
{
Application.DoEvents();
}
// System.IO.File.WriteAllText(form.SavePath, form.WebBrowser.Document.GetElementsByTagName("html")[0].OuterHtml, System.Text.Encoding.UTF8);
// step 2
#endregion
form.DocumentOK = false; form.Navigate(url1);
while (!form.DocumentOK)
{
Application.DoEvents();
}
HtmlAgilityPack.HtmlDocument htmldoc = new HtmlAgilityPack.HtmlDocument();
htmldoc.LoadHtml(form.WebBrowser.Document.GetElementsByTagName("html")[0].OuterHtml);
// div[contains(@class,'ads-creative')]
var anodes = htmldoc.DocumentNode.SelectNodes("//div[@class='threadlist']//a");
foreach (var tn in anodes)
{
aList.Add(tn.Attributes["href"].Value);
}
// 循环访问a
foreach (var cdmurl in aList)
{
form.DocumentOK = false; form.Navigate(cdmurl);
while (!form.DocumentOK)
{
Application.DoEvents();
}
startTime = System.DateTime.Now;
while ((System.DateTime.Now - startTime).TotalSeconds <= 5)
{
Application.DoEvents();
}
htmldoc.LoadHtml(form.WebBrowser.Document.GetElementsByTagName("html")[0].OuterHtml);
var downloadurl = htmldoc.DocumentNode.SelectNodes("//a[@rel='nofollow']");
var info = htmldoc.DocumentNode.SelectSingleNode("//div[@id='fullversion']//a");
if (downloadurl == null)
{
downloadurl = htmldoc.DocumentNode.SelectNodes("//a[@target='_blank']"); }
List<string> dllist = new List<string>();
if (downloadurl.Count == 1)
{
dllist.Add(info.InnerText);
dllist.Add(downloadurl[0].Attributes["href"].Value);
}
else
{
foreach (var dl in downloadurl)
{
if (dllist.Count == 0)
{
dllist.Add(info.InnerText); }
else
{
dllist.Add(dl.Attributes["href"].Value);
} } } lastinfo.Add(string.Join(Environment.NewLine, dllist.ToArray()));
lastinfo.Add(Environment.NewLine); } System.IO.File.WriteAllLines(@"D:\Nodejs\myjs\DownLoadUrl.txt", lastinfo.ToArray(), Encoding.UTF8); }
}
}
【.net】获取网页CDM的下载链接的地址的更多相关文章
- 使用htmlparse爬虫技术爬取电影网页的全部下载链接
昨天,我们利用webcollector爬虫技术爬取了网易云音乐17万多首歌曲,而且还包括付费的在内,如果时间允许的话,可以获取更多的音乐下来,当然,也有小伙伴留言说这样会降低国人的知识产权保护意识,诚 ...
- 【Python项目】简单爬虫批量获取资源网站的下载链接
简单爬虫批量获取资源网站的下载链接 项目链接:https://github.com/RealIvyWong/GotDownloadURL 1 由来 自己在收集剧集资源的时候,这些网站的下载链接还要手动 ...
- 使用htmlparser爬虫技术爬取电影网页的全部下载链接
昨天,我们利用webcollector爬虫技术爬取了网易云音乐17万多首歌曲,而且还包括付费的在内,如果时间允许的话,可以获取更多的音乐下来,当然,也有小伙伴留言说这样会降低国人的知识产权保护意识,诚 ...
- C# 网络编程之webBrowser获取网页url和下载网页中图片
该文章主要是通过C#网络编程的webBrowser获取网页中的url并简单的尝试瞎子啊网页中的图片,主要是为以后网络开发的基础学习.其中主要的通过应用程序结合网页知识.正则表达式实现浏览.获取url. ...
- 一篇文章教会你利用Python网络爬虫获取电影天堂视频下载链接
[一.项目背景] 相信大家都有一种头疼的体验,要下载电影特别费劲,对吧?要一部一部的下载,而且不能直观的知道最近电影更新的状态. 今天小编以电影天堂为例,带大家更直观的去看自己喜欢的电影,并且下载下来 ...
- 使用selenium的方式获取网页中图片的链接和网页的链接,来判断是否是死链(二)
上一篇使用Java正则表达式来判断和获取图片的链接以及跳转的网址,这篇使用selenium的自带的API(getAttribute)来获取网页中指定的内容 实现内容:获取下面所有图片的链接地址以及跳转 ...
- Java正则表达式获取网页所有网址和链接文字
; pos1= urlContent.indexOf(strAreaBegin)+strAreaBegin.length(); pos2=urlContent.inde ...
- 生成Ipa安装包的plist文件后生成下载链接
假设生成的plist文件的下载链接是: https://www.xx.com/download/xx.plist 那么如果想让苹果手机的浏览器点击后开始下载苹果软件包,则网页中的下载链接需要拼接成 i ...
- 获取youku视频下载链接(wireshark抓包分析)
随便说两句 前两天写了一个python脚本,试图以分析网页源码的方式得到优酷视频的下载地址,结果只得到视频的纯播放地址,下载纯播放地址得到的文件也无法正常播放视频. 这里共享一下播放地址得到的方法(想 ...
随机推荐
- 【BZOJ1818】[CQOI2010]内部白点(树状数组,扫描线)
[BZOJ1818][CQOI2010]内部白点(树状数组,扫描线) 题面 BZOJ 题解 不难发现\(-1\)就是在搞笑的. 那么对于每一行,我们显然可以处理出来最左和最右的点,那么等价于我们在横着 ...
- luogu2680 [NOIp2015]运输计划 (tarjanLca+二分答案+树上差分)
我们先不会就二分一下答案,设它是x,我们要判断它能不能满足 为了满足这个答案,我们就要让原本路径长度大于x的所有路径都经过某条边,而且这条边还要大于等于最长的路径-x 于是运用树上差分的思想,对于所有 ...
- swap(十六)
a = 12 b = 33 a,b=b,a print(a,b)
- 用矩阵和待定系数法求数列的分析(复杂度log(n))
下载地址:http://pan.baidu.com/s/1nuVew6d
- ActiveMQ集群简单测试+eclipse Zookeeper 插件 + 负载均衡
ActiveMQ集群搭建好之后,接下来就该测试一下了. 一.先安装Zookeeper 的eclipse插件吧. 1. 打开 eclipse, Help -> Install New Softwa ...
- shell关于变量的操作
一.变量和:-连用 bin=`dirname "${BASH_SOURCE-$0}"` bin=`cd "$bin"; pwd` DEFAULT_LIBEXEC ...
- Linux wget断点续传,限速下载
未安装wget,联网执行以下命令即可: yum install wget 1.断点续传,只需要添加 -c 参数即可 wget -c http://mirrors.163.com/centos/7.5. ...
- CM记录-Hadoop运维管理
1.自动化运维--cloudera manager 2.手动运维 a.启动./start.all.sh,停止./stop-all.sh b.hdfs启动/停止:./start-dfs.sh ./s ...
- Study 2 —— 图片热点区域
标记<map>和<area><img src="图片" usemap="#名称"><map id="#名称& ...
- 【1】【JUC】JDK1.8源码分析之ArrayBlockingQueue,LinkedBlockingQueue
概要: ArrayBlockingQueue的内部是通过一个可重入锁ReentrantLock和两个Condition条件对象来实现阻塞 注意这两个Condition即ReentrantLock的Co ...