正则表达式应用--提取CSDN所有下载资源页面URl的思路与代码实现
来源:互联网 发布:域名网站平台 编辑:程序博客网 时间:2024/05/29 17:05
其实这个内容本身没有什么实际价值,只是有段时间,自己想找所有下载分为0的资源,闲来没事就随手写了一个小程序,见识到了正则表达式的强大
1分析需求 2查找规律,实现思路,3实现代码
1分析需求
需求很简单,就是找到所有下载分为0的资源,也就是不需要下载分的资源,刚开始时自己手动一个一个的找,感觉太慢了,
首先得打开资源分类页http://download.csdn.net/category,
再打开某一分类例如android http://download.csdn.net/category/mobile_development/android,
再点列表的某一页 例如第2页,http://download.csdn.net/category/mobile_development/android/orderbypubdate/2,
一页六个资源,一个一个的看,是不是存在不需要下载分的资源,有就打开到资源的详细页面,
最后才可以到下载页面,实在感觉太慢了,于是就有了写一个小程序的想法。在50页中查找差不多得一个小时。
2查找规律,实现思路
有了想法就开始想着怎么实现了。第一步就是分析各个页面的关系或者说是规律。对于某一个具体的分类列表页的url组成是有三部分组成:
第一部分http://download.csdn.net/category/是固定的,
第二部分是mobile_development是资源的大分类,
第三部分是android小分类,
最后就是排序方式和页码了orderbypubdate/2
分析列表的网页的源代码,发现关键的一行,包含了资源详细信息的链接和下载分,
例如如下一行的链接为/detail/ipoints/4241887,下载分为1
<dt><a href="/detail/ipoints/4241887">Yaffs专家.apk</a><span class="marks">1</span></dt>通过正则表达式就可以匹配到链接和下载分。
资源的详细介绍页面和最终下载页面也有一定的关系,一个是detail一个是download,所以只要得到了资源的详细介绍页面就可以了。
http://download.csdn.net/detail/xuexiaodong2009/4241131
http://download.csdn.net/download/xuexiaodong2009/4241131
3实现代码
获取资源列表页
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; request.Method = "GET"; request.KeepAlive = false; //Get the response using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) { using (Stream responseStream = response.GetResponseStream()) { using (StreamReader reader = new StreamReader(responseStream, Encoding.UTF8)) { string line = reader.ReadLine(); int count = 0; int lineNo = 0; while (line != null) { lineNo++; if (lineNo < startLineIndex || string.IsNullOrEmpty(line)) { line = reader.ReadLine(); continue; } if (lineNo >= endLineIndex) { break; } Match match = reDetailUrl.Match(line); if (match.Success) { string inerUrl = match.Groups["url"].Value; string marks = match.Groups["marks"].Value; } line = reader.ReadLine(); } } } }
匹配资源详细介绍URL的正则表达式,
<a\s+href\s*=\s*"(?<url>[^"]{1,})">[^<]{1,}\s*</a><span\s+class\s*=\s*"marks"\s*>\s*(?<marks>\d{1,})\s*</span>
实现效果,分析一类资源,也就不到十分钟,效果非常明显。
遗留问题:
本想通过程序自动下载资源,但没有找到通过CSDN下载资源前,先需要验证的方法,只能暂时放一放了。
希望有想法的可以给指点一下。
源代码下载地址
- 正则表达式应用--提取CSDN所有下载资源页面URl的思路与代码实现
- 提取 URL 的正则表达式
- url正则表达式提取
- 提取文本中url的正则表达式
- 正则表达式匹配url的一种思路
- java正则表达式提取URL
- 在文本中提取URL的正则表达式
- Java提取网页中url的正则表达式
- URL结合正则表达式的应用
- 用正则表达式提取单个页面文件里Email地址的简单实现
- asp正则表达式提取字符串中所有的数字
- 正则表达式提取项目中所有带IP的网址
- 一个页面搞定几乎所有的列表需求的实现思路和一点代码。
- java中正则表达式提取字符串中日期实现代码
- 实现下载指定URL的网上资源
- 正则表达式提取url中的域名
- Python 正则表达式提取URL中的Scheme
- Python 正则表达式提取URL中的USER
- perl中s///和tr///的区别
- 8086汇编 贪吃蛇 源代码
- 【jsp】Fragment "/index.do?method=top" was not found at expected path
- 揪出这个android手机下乱弹广告的坏蛋
- (一)JAVA 点滴积累之JAVA开发环境安装
- 正则表达式应用--提取CSDN所有下载资源页面URl的思路与代码实现
- Thinking In C++中文版
- C复习笔记(字符数组)
- 计算机网络 同步传输和异步传输(理解)
- DOM是一种与浏览器,平台和语言无关的接口
- ios小项目——新浪微博客户端总结
- hibernate注解ID自增长
- js使用ajax
- 8086 汇编语言 字符雨 模拟黑客帝国特效