最近工作中需要采集一些数据,有不想去录脚本,不想使用比较复杂的工具,就自己写了一个
总结一下自己实现这个小工具的过程:
比如我们要采集类似于csdn首页的列表的标题,文章的链接地址,阅读数等信息
最简单的方式就是找到这个页面元素的xpath,如标题的 //*[@id="feedlist_id"]/li/div/div[1]/h2/a ,这个 Google和火狐浏览
器自带这个功能,参考下面这个文档
https://blog.csdn.net/li6727975/article/details/46126079
https://blog.csdn.net/m526500289/article/details/88649295
这样找到元素的xpath然后就可以采集数据了,采集工具实现效果如下:
数据就出来了。
实现代码也简单
// 取到采集元素
List<string> notePath = textBox2.Text.Replace(",", ",").Split(',').ToList();
StringBuilder sb = new StringBuilder();
DataTable dt = new DataTable();
foreach (var item in notePath)
{
var data = item.Split('|');
DataColumn dc = new DataColumn(data[2]);
dt.Columns.Add(dc);
}
int i = 0;
foreach (var item in notePath)
{
var data = item.Split('|');
var nodes = doc.DocumentNode.SelectNodes(data[0]);
int j = 0;
foreach (var tagValue in nodes)
{
if (i == 0)
{
DataRow row = dt.NewRow();
dt.Rows.Add(row);
}
DataRow dr = dt.Rows[j];
dr[i] = GetValue(tagValue, data[1]);
j++;
}
i++;
}
// 结果赋值
dataGridView1.DataSource = dt;