介绍
小编给大家分享一下。净心如何实现定时抓取网站文章并发送到邮箱,希望大家阅读完这篇文章之后都有所收获、下面让我们一起去探讨吧!
准备
作为一个持续运行的工具,没有日志记录怎么行,我准备使用的是NLog来记录日志,它有个日志归档功能非常不错。在http请求中,由于网络问题吧可能会出现失败的情况,这里我使用波利来进行重试。使用HtmlAgilityPack来解析网页,需要对xpath有一定了解。下面是详细说明:
组件名用途githubNLog记录日志https://github.com/NLog/NLogPolly当http请求失败,进行重试https://github.com/App-vNext/PollyHtmlAgilityPack网页解析https://github.com/zzzprojects/html-agility-packMailKit发送邮件https://github.com/jstedfast/MailKit有不了解的组件,可以通过访问github获取资料。
参考文章
https://www.jb51.net/article/112595.htm
获取,解析博客园首页数据
我是用的是HttpWebRequest来进行http请求,下面分享一下我简单封装的类库:
using 系统; using 先; using System.Net; using 包含; namespace CnBlogSubscribeTool { ,///& lt; summary> ,///Simple Http Request 类 ,///.NET Framework 祝辞=4.0 ,///作者:stulzq ,///CreatedTime: 2017 - 12 - 12 15:54:47 ,///& lt;/summary> public class HttpUtil ,{ ,static HttpUtil () ,{//才能Set connection  limit , Default limit is 2 时间=ServicePointManager.DefaultConnectionLimit 才能;1024; ,} ,///& lt; summary> ,///Default Timeout 20多岁 ,///& lt;/summary> ,public static  int DefaultTimeout =, 20000; ,///& lt; summary> ,///Is Auto 重定向 ,///& lt;/summary> ,public static  bool DefalutAllowAutoRedirect =,真的; ,///& lt; summary> ,///Default 编码 ,///& lt;/summary> ,public static  Encoding DefaultEncoding =, Encoding.UTF8; ,///& lt; summary> ,///Default UserAgent ,///& lt;/summary> ,public static  string DefaultUserAgent =安拍躆ozilla/5.0, (Windows NT 6.1;, Win64;, x64), AppleWebKit/537.36, (KHTML, like 壁虎),Chrome/62.0.3202.94 Safari/537.36“ ,,, ,///& lt; summary> ,///Default 推荐人 ,///& lt;/summary> ,public static  string DefaultReferer =,““ ,///& lt; summary> ,///httpget 请求 ,///& lt;/summary> ,///& lt; param name=皍rl"祝辞Internet Address ,///& lt; returns> string ,public static  string GetString (string url) ,{ var 才能;stream =, GetStream (url); string 才能;结果; using 才能;(StreamReader sr =, new StreamReader(流)) {才能 时间=result 才能;sr.ReadToEnd (); ,,} return 才能;结果; ,} ,///& lt; summary> ,///httppost 请求 ,///& lt;/summary> ,///& lt; param name=皍rl"祝辞Internet Address ,///& lt; param name=皃ostData"祝辞Post request data ,///& lt; returns> string ,public static  string PostString (string url, string postData) ,{ var 才能;stream =, PostStream (url, postData); string 才能;结果; using 才能;(StreamReader sr =, new StreamReader(流)) {才能 时间=result 才能;sr.ReadToEnd (); ,,} return 才能;结果; ,} ,///& lt; summary> ,///Create 响应 ,///& lt;/summary> ,///& lt; param name=皍rl"祝辞& lt;/param> ,///& lt; param name=皃ost"祝辞Is post Request ,///& lt; param name=皃ostData"祝辞Post request data ,///& lt; returns> & lt;/returns> ,public static  WebResponse 连接CreateResponse (string url, bool ,, string postData =,,,) ,{ var 才能;httpWebRequest =, WebRequest.CreateHttp (url); 时间=httpWebRequest.Timeout 才能;DefaultTimeout; 时间=httpWebRequest.AllowAutoRedirect 才能;DefalutAllowAutoRedirect; 时间=httpWebRequest.UserAgent 才能;DefaultUserAgent; 时间=httpWebRequest.Referer 才能;DefaultReferer; if 才能;(职位) {才能 var 才能;data =, DefaultEncoding.GetBytes (postData); httpWebRequest.Method =,才能“POST"; httpWebRequest.ContentType =,才能“应用程序/x-www-form-urlencoded; charset=utf-8"; 时间=httpWebRequest.ContentLength 才能;data.Length; null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null nullnet核心如何实现定时抓取网站文章并发送到邮箱