网页表格抓取(一个如何解决三个问题?是怎么爬,第二个的数据如何保存 )

优采云 发布时间: 2022-03-17 19:12

  网页表格抓取(一个如何解决三个问题?是怎么爬,第二个的数据如何保存

)

  所谓爬虫,无非就是通过一些特定的程序,访问一些你想访问的网页,并以自定义的方式保存网页上的内容。

  这里我们将使用一个C#小程序,对上交所50个手指的实时信息进行爬取。该程序非常简单。

  所谓爬虫就是要解决三个问题:一是爬什么,二是怎么爬,三是爬下来的数据怎么保存。根据个人需要和能力水平,方法有很多。

  下面,我们将通过具体的例子来说明如何解决上述三个问题。

  一、爬什么

  你可以抓取任何你想要的数据,但是这些数据是如何在网页中表示和存储的呢?这时候就需要分析我们要爬取的页面的结构了。

  在这个例子中,我们要爬取网页中的表格,如下图所示:

  

  下面通过具体代码来说明:

   HtmlDocument doc = web.Document;

HtmlElementCollection tbs = doc.GetElementsByTagName("TABLE");//找到table标签

foreach (HtmlElement tb in tbs)//遍历

{

HtmlElementCollection trs = tb.GetElementsByTagName("TR");//每行

foreach (HtmlElement tr in trs)

{

HtmlElementCollection tds = tr.GetElementsByTagName("TD");//每列

if (tds.Count > 0)

{

DataRow dr = dt.NewRow();

for (int i = 0; i < tds.Count; i++)

{

//找到需要的信息列,并将对应的信息填充到dr

dr["序号"] = tds[0].InnerText;

dr["股票代码"] = tds[1].InnerText;

dr["股票简称"] = tds[2].InnerText;

dr["最新价"] = tds[3].InnerText;

dr["涨跌额"] = tds[4].InnerText;

dr["涨跌幅"] = tds[5].InnerText;

dr["换手率"] = tds[13].InnerText;

}

//将dataReader读取的每一行数据保存到datatable中

dt.Rows.Add(dr);

}

}

  最后在Form_load中添加如下代码:

  dt.Columns.Add("序号", System.Type.GetType("System.String"));

dt.Columns.Add("股票代码", System.Type.GetType("System.String"));

dt.Columns.Add("股票简称", System.Type.GetType("System.String"));

dt.Columns.Add("最新价", System.Type.GetType("System.String"));

dt.Columns.Add("涨跌额", System.Type.GetType("System.String"));

dt.Columns.Add("涨跌幅", System.Type.GetType("System.String"));

dt.Columns.Add("换手率", System.Type.GetType("System.String"));

web.Url = new System.Uri("http://q.10jqka.com.cn/stock/zs/sz50/");//要爬取的网页URL

  最终结果如下所示:

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线