网页文章采集工具(学习C#和在C#上学习网抓的第一个类库抓多方便)
优采云 发布时间: 2022-01-02 04:26网页文章采集工具(学习C#和在C#上学习网抓的第一个类库抓多方便)
这个类库是我从头开始学习C#的第一个类库,从网上学的C#。它可能已经迭代了许多版本。网站在这里。如果您有兴趣,可以了解更多。
网站有详细教程。也是基于原生的HttpRequest,但是使用起来比原生的简单很多。因为作者懒得用,所以没用过HttpRequest。
同样,我现在使用它。当我学习 nuget 打包时,我总是使用上传到 nuget 的版本。有兴趣的也可以直接从nuget获取,和苏菲的一模一样,哈哈。
可以直接从Nuget获取打包好的速飞版httphelper
RestSharp
同样强大的第三方类库。笔者接触到了这个类库。调用WebAPI接口非常方便。在SM.MS的调用中也有简单的介绍。它在 github 上是开源的,并具有星级评价。很多,文档超级详细的类库,值得学习。
Github 上的 RestSharp
HtmlAgilityPack 类库
这种库对解释html页面特别有用,类似于Python的Beautifulsoup4,可以将网页的html格式转换为xml格式,使用xml查询语言xpath结构化访问网页内容,并返回它对于非WebAPI 网页的json 和xml 数据结构特别好用。
所以不要总觉得python更方便网页抓取。在.Net的世界里,对于一些普通的小型网页抓取,比python好用多了。
和xml文件一样,在.Net中,可以使用linq to xml来访问,也很简单好用。相对而言,像python这样的所谓流行语言可能没有可比性。
Excel催化剂文件下载功能
最后,老规矩,附上真实完整的Excel催化剂代码,这段代码就是文件下载功能,简单使用WebClient类库来实现,封装起来,增加超时功能,使用异步方法称呼。无卡接口。
private async void btnOK_Click(object sender, EventArgs e)
{
var markColor = Utilities.RangeUtility.GetMarkColorToDstRange(srcDataValues);
int totalNum = srcDataValues.Count();
int iLoop = 0;
int rowOffset = int.Parse(this.cmbRowOffset.Text);
int colOffset = int.Parse(this.cmbColOffset.Text);
foreach (var item in srcDataValues)
{
iLoop++;
string srcFilePath = item.Value2.ToString();
string dstFilePath;
Excel.Range dstItemRange = item.Offset[rowOffset, colOffset];
if (dstItemRange.Value2 != null)
{
dstFilePath = dstItemRange.Value2.ToString();
//没有后缀名时,标红颜色返回让用户自行检查
if (string.IsNullOrEmpty(Path.GetExtension(dstFilePath)))
{
item.Interior.Color = ColorTranslator.ToOle(markColor);
dstItemRange.Interior.Color = ColorTranslator.ToOle(markColor);
}
else
{
WebClientEx webClient = new WebClientEx(3000);
Uri uri = new Uri(srcFilePath);
await webClient.DownloadFileTaskAsync(uri, dstFilePath);
//线程间操作无效: 从不是创建控件的线程访问它。 处理方法
Action action = (i, n, s) =>
{
this.lblDownLoadInfo.Text = $"正在下载的是第【{i}】/【{n}】个文件\r\n文件名为:{s}";
};
Invoke(action,iLoop, totalNum, dstFilePath);
if (this.IsCreateHyperLink)
{
dstItemRange.Hyperlinks.Add(Anchor: dstItemRange, Address: dstFilePath, TextToDisplay: dstFilePath);
}
}
}
else//当目标单元格没有值时,标红颜色返回让用户自行检查
{
item.Interior.Color = ColorTranslator.ToOle(markColor);
dstItemRange.Interior.Color = ColorTranslator.ToOle(markColor);
}
}
MessageBox.Show("下载完成!");
Action actionColseForm = () => { this.Close(); };
Invoke(actionColseForm);
}
您真的希望从头开始编写网页抓取程序吗?
大多数业余开发者,或者还不是开发者的开发者,都想学习两个抓网的技巧,尤其是当python的虚拟火遍全国时,似乎跟不上与时俱进。在被炒作到数据时代之后,每个人都必须能够在线捕捉数据。快来参加XX蟒培训班吧。学习之后就可以制作一个网络爬虫程序来爬取你想要的数据了。
作者刚好相反。虽然简单的网页抓取已经可用,但我从来没有自信我能学到足够的东西供自己使用,并编写程序来爬到我想要的数据。
网络爬虫和反爬虫是善恶交锋的战场。 2011年左右玩VBA爬虫,和现在流行爬虫流行的环境不一样。普通爬虫无事可做。换句话说,参加了那些很快出来的培训课程,但我只能哈哈。
推荐一个没兴趣的有良心的爬虫工具。
作者以前也玩过爬虫工具,比如优采云、优采云浏览器、优采云、代码栈等,在里面“浪费”了很多时间学习(在之前的一些产品是在公司购买的,有的过期了就不能用了,当然有的产品在永久离职后就不能用了)。
而且这个免费的鸡肋功能一直指向付费的中国市场。有一个工具作者在开发、维护、文档编写、视频制作等方面持之以恒,终于真正免费供大家使用了,真是东西的集合。对于Excel催化剂这种感觉,一定要顶作者,支持作者。
工具名称:hawk,从百度和github获取工具安装包和教程信息。
结论
以上就这么长了,希望这篇文章真的能给广大想学网抓的朋友们带来一些指导,尤其是想在VSTO上实现网抓的朋友们,或者刚睡醒不再被收取智商税。选择现成的工具作为起点,站在巨人的肩膀上,用网抓。