WayneShao 的博客

记录精彩的程序人生
爬虫 0 篇文章

【下载】C# 调用迅雷、IDM 下载方法汇总

在开发桌面软件时常常有下载文件的需求,小文件、少文件可以自己做相应的网络请求,但是当文件的大小或者数量达到一定规模时,自己封装网络请求就不是很划算的事情了,这时我们可以采取调用迅雷或者 IDM、aria2c 之类的专业下载软件来进行下载。迅雷直接调用迅雷安装迅雷后可以再引用的 com 组件中找到名为“ThunderAgent1.0TypeLibrary”的 com 组件,勾选引用之后,把类库属性中的嵌入互操作类

查看当前 IP 和归属地的方法

可以通过 http 协议进行 get 请求来获得当前 IP 及归属地信息。ip138Xpath 获取文字信息//centerwhatismyipXpath 获取信息:IP 地址//body/span[1]来源地区//body/span[2]优劣二者网页大小差不多,均为 300+KB。ip138 为国内服务商,对国内 IP 地址可以精确到市级,并且会包含运营商信息,不过信息包含在一个标签中,需要获取之后自行截取。whatism

【爬虫学习笔记】基于 Bloom Filter 的 url 去重模块 UrlSeen

UrlSeen 用来做 url 去重。对于一个大的爬虫系统,它可能已经有百亿或者千亿的 url,新来一个 url 如何能快速的判断 url 是否已经出现过非常关键。因为大的爬虫系统可能一秒钟就会下载几千个网页,一个网页一般能够抽取出几十个 url,而每个 url 都需要执行去重操作,可想每秒需要执行大量的去重操作。因此 UrlSeen 是整个爬虫系统中非常有技术含量的一个部分。为了提高过滤的效率,我们使用有极低误判率但是效率

【爬虫学习笔记】Url 过滤模块 UrlFilter

UrlFilter 则是对提取出来的 URL 再进行一次筛选。不同的应用筛选的标准是不一样的,比如对于 baidu/google 的搜索,一般不进行筛选,但是对于垂直搜索或者定向抓取的应用,那么它可能只需要满足某个条件的 url,比如不需要图片的 url,比如只需要某个特定网站的 url 等等。UrlFilter 是一个和应用密切相关的模块。usingSystem;usingSystem.Collections.Gen

【爬虫学习笔记】用于提取网页中所有链接的 Extractor 模块

Extractor 的工作是从下载的网页中将它包含的所有 URL 提取出来。这是个细致的工作,你需要考虑到所有可能的 url 的样式,比如网页中常常会包含相对路径的 url,提取的时候需要将它转换成绝对路径。这里我们选择使用正则表达式来完成链接的提取。html 标签中的链接地址通常会出现在 href 属性或者 src 属性中,所以我们采用两个正则表达式来匹配网页中的所有链接地址。网页链接提取器 Extractor 类:usi

【爬虫学习笔记】基于 SimHash 的去重复处理模块 ContentSeen 的构建

Internet 上的一些站点常常存在着镜像网站(mirror),即两个网站的内容一样但网页对应的域名不同。这样会导致对同一份网页爬虫重复抓取多次。为了避免这种情况,对于每一份抓取到的网页,它首先需要进入 ContentSeen 模块。该模块会判断网页的内容是否和已下载过的某个网页的内容一致,如果一致,则该网页不会再被送去进行下一步的处理。这样的做法能够显著的降低爬虫需要下载的网页数。至于如果判断两个网页

【爬虫学习笔记】DNS 解析服务增加缓存机制

之前我们已经基于 ARSoft.Tools.Net 简单实现了 DNS 解析模块的功能,但是当性能要求升高时,每一次爬取都要进行 DNS 请求,甚至很有可能一段时间内每次请求的都是相同的地址,频繁的 DNS 请求就会成为性能瓶颈,所以我们要通过缓存机制将 DNS 解析结果缓存下来,降低 DNS 解析操作,提升系统性能。如此,我们基于之前封装的 MemoryCacheHelper 类对 DnsResolver 类进行改造:using

【爬虫学习笔记】MemoryCache 缓存的用法学习

在完成了 DNS 解析模块之后,我意识到了 DNS 缓存机制也很有必要。在 Redis,Memcache,和.Net 自带的 Cache 之间,考虑到部署问题,最终选择了后者,之前在学习 Web 及开发的过程中用过 System.Web.Caching.Cache 这个类库,但是这次的爬虫程序我打算部署为桌面软件,所以选用了 System.Runtime.Caching.MemoryCache(后期如有必要也会加入 Syste

【爬虫学习笔记】.Net 基于 ARSoft.Tools.Net 的 DNS 解析模块(半成品)

最近在做爬虫的作业,今天学习的内容是关于 DNS 解析模块的制作的。使用的库为 ARSoft.Tools.Net,它是一个非常强大的开源 DNS 控件库,包含.NetSPFvalidation,SenderIDvalidation 以及 DNSClient、DNSServer 接口。使用该接口可轻松实现 DNS 客户请求端及服务器解析端。项目地址:http://arsofttoolsnet.codeplex.com/,

【爬虫学习笔记】.Net 使用 ScrapySharp 并行下载天涯图片

最近因为一个作业需要完成 CNKI 爬虫,研究爬虫架构的时候发现了这个疑似移植于 Python 的著名开源爬虫框架 Scrapy 的 ScrapySharp,然而在网上寻找之后只发现了这个 F#的 Demo,就使用原文中示例的网站写了这个 C#版本的代码。实现下面是代码:usingSystem;usingSystem.IO;usingSystem.Linq;usingSystem.Threading.Tasks;usi

一木禾网盘文件下载地址批量获取实现

流程清晰之后,我们就可以制作软件来对网盘地址链接批量处理得到下载链接。选型我们的整个操作流程类似模拟浏览器操作,最好的解决方法其实是使用 Selenium 直接操作浏览器抓取。不过这方面我还没什么研究,就直接用最近发现的木鱼大牛的 FSLib.Network 库来实现。这个类库是实现了 HTTP 访问过程中对 Cookie 的自动处理,在大多数情况下都可以模拟浏览器。使用 nuget 在项目中安装 FSLib.Netwo

一木禾网盘文件下载地址抓取分析

本文是对抓取一木禾网盘文件下载地址的整个流程就行分析,并依次解决其中各个环节涉及的技术问题。缘由最近因为一些个人原因用到了一木禾网盘,这个收费网盘虽然较一些国外的倒数 30 秒网盘容易了一些,也没有十分钟只能下载一个的限制,但如果下载资源较多还是显得十分麻烦。网上搜索了很长时间,功夫不负有心认,终于在吾爱破解找到了 cylisme 作品一木禾网盘批量下载。软件界面如下:虽然可以进行使用,但是每一个验证码都必