文章采集程序(接着公布源码关键源码讲解:采集程序的源码采集)
优采云 发布时间: 2022-03-25 10:15文章采集程序(接着公布源码关键源码讲解:采集程序的源码采集)
这几天车子撞到人了,水箱也被砸得粉碎。我要坐公共汽车一个星期python
实在是太无聊了,就抽空做个这样的app来打发公交车上的git
(开发者头条新闻太专业了,上车没办法研究)github
我经常看的博客园、infoq、36kr、开源中国新闻c#
我现在只做博客园和infoq,然后打算做36kr和开源中国新闻(今天上午已经完成了这项工作),如果大家有什么好的建议,也可以在评论中提到ide
数据是准实时获取的,然后我会尽量让你刷的时候有消息给你看帖
todo:新闻分享、采集、标签、分类等功能,当然要看你的热情了!网址
ps:如果你看过我写的代码采集,你就不会问为什么不用rss spa了
更新:添加了 51cto 的采集程序博客
废话不多说,先上图发展
然后去APK的下载链接(如果你有热情,苹果版也可以)
然后发布源代码
关键源码说明:
采集程序源码
static void cnblogs()
{
CQ doc;
try
{
var client = new RestClient("http://www.cnblogs.com/news/");
var resq = new RestRequest(Method.GET);
var resp = client.Execute(resq);
doc = resp.Content;
}
catch (Exception ex)
{
Thread.Sleep(GetWaitTime());
cnblogs();
return;
}
var arr = doc[".post_item_body"].ToList();
var dataList = new List();
var db = dbFactory.Open();
foreach (var item in arr)
{
var str = item.InnerText;
var strArr = str.Split(Environment.NewLine.ToCharArray(),StringSplitOptions.RemoveEmptyEntries);
var data = new allen_news();
data.news_title = strArr[0];
if (checkTitle(data.news_title))
{
break;
}
data.news_summary = strArr[1].Trim();
data.author = strArr[2].Split("发布于".ToCharArray(),StringSplitOptions.RemoveEmptyEntries)[0];
data.add_time = DateTime.Now;
data.from_site_flag = 0;
data.news_url = ((CQ)item.InnerHTML)["h3 a"].Attr("href");
dataList.Insert(0, data);
}
if(dataList.Count >0)
{
db.InsertAll(dataList);
}
db.Dispose();
Console.WriteLine("增长了{0}条文章0", dataList.Count);
Thread.Sleep(GetWaitTime());
cnblogs();
}
采集程序使用了三个开源程序,CsQuery、RestSharp和ServiceStack.OrmLite
GetWaitTime() 随机等待1分钟到10分钟之间的时间长度,不频繁采集,不定期采集,避免目标主机阻塞采集程序所在IP
再看WEB服务的关键代码
<p>protected void Page_Load(object sender, EventArgs e)
{
dbFactory = new OrmLiteConnectionFactory(ConfigurationManager.AppSettings["dbConnStr"], MySqlDialect.Provider);
var action = Request["Action"];
var id = Request["Id"];
List result = null;
if (action == "PullDown")
{
var db = dbFactory.Open();
result = db.SelectFmt("select * from allen_news where news_id > {0} order by news_id desc limit 0,30",id);
db.Dispose();
}
else if(action == "PullUp")
{
var db = dbFactory.Open();
result = db.SelectFmt("select * from allen_news where news_id