栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C# > C#教程

C#实现抓取和分析网页类实例

C#教程 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C#实现抓取和分析网页类实例

本文实例讲述了C#实现抓取和分析网页类。分享给大家供大家参考。具体分析如下:

这里介绍了抓取和分析网页的类。

其主要功能有:

1、提取网页的纯文本,去所有html标签和javascript代码
2、提取网页的链接,包括href和frame及iframe
3、提取网页的title等(其它的标签可依此类推,正则是一样的)
4、可以实现简单的表单提交及cookie保存


using System;
using System.Data;
using System.Configuration;
using System.Net;
using System.IO;
using System.Text;
using System.Collections.Generic;
using System.Text.Regularexpressions;
using System.Threading;
using System.Web;
/// 
/// 网页类
/// 
public class WebPage
{
 #region 私有成员
 private Uri m_uri; //网址
 private List m_links; //此网页上的链接
 private string m_title;  //此网页的标题
 private string m_html;   //此网页的HTML代码
 private string m_outstr;  //此网页可输出的纯文本
 private bool m_good;   //此网页是否可用
 private int m_pagesize;  //此网页的大小
 private static Dictionary webcookies = new Dictionary();//存放所有网页的cookie
 private string m_post; //此网页的登陆页需要的POST数据
 private string m_loginurl; //此网页的登陆页
 #endregion
 #region 私有方法
 /// 
 /// 这私有方法从网页的HTML代码中分析出链接信息
 /// 
 /// List
 private List getlinks()
 {
  if (m_links.Count == 0)
  {
   Regex[] regex = new Regex[2];
   regex[0] = new Regex("(?m)<]+href=("|')?(?([^>"'\s)])+)("|')?[^>]*>(?(\w|\W)*?)<]+src=("|')?(?([^>"'\s)])+)("|')?[^>]*>", RegexOptions.Multiline | RegexOptions.IgnoreCase);
   for (int i = 0; i < 2; i++)
   {
    Match match = regex[i].Match(m_html);
    while (match.Success)
    {
     try
     {
      string url = new Uri(m_uri, match.Groups["url"].Value).AbsoluteUri;
      string text = "";
      if (i == 0) text = new Regex("(<[^>]+>)|(\s)|( )|&|"", RegexOptions.Multiline | RegexOptions.IgnoreCase).Replace(match.Groups["text"].Value, "");
      link link = new link(url, text);
      m_links.Add(link);
     }
     catch(Exception ex){Console.WriteLine(ex.Message); };
     match = match.NextMatch();
    }
   }
  }
  return m_links;
 }
 /// 
 /// 此私有方法从一段HTML文本中提取出一定字数的纯文本
 /// 
 /// HTML代码
 /// 提取从头数多少个字
 /// 是否要链接里面的字
 /// 纯文本
 private string getFirstNchar(string instr, int firstN, bool withlink)
 {
  if (m_outstr == "")
  {
   m_outstr = instr.Clone() as string;
   m_outstr = new Regex(@"(?m)]*>(w|W)*?]*>", RegexOptions.Multiline | RegexOptions.IgnoreCase ).Replace(m_outstr, "");
   m_outstr = new Regex(@"(?m)]*>(w|W)*?]*>", RegexOptions.Multiline | RegexOptions.IgnoreCase ).Replace(m_outstr, "");
   m_outstr = new Regex(@"(?m)]*>(w|W)*?]*>", RegexOptions.Multiline | RegexOptions.IgnoreCase ).Replace(m_outstr, "");
   if (!withlink) m_outstr = new Regex(@"(?m)]*>(w|W)*?]*>", RegexOptions.Multiline | RegexOptions.IgnoreCase).Replace(m_outstr, "");
   Regex objReg = new System.Text.Regularexpressions.Regex("(<[^>]+?>)| ", RegexOptions.Multiline | RegexOptions.IgnoreCase);
   m_outstr = objReg.Replace(m_outstr, "");
   Regex objReg2 = new System.Text.Regularexpressions.Regex("(\s)+", RegexOptions.Multiline | RegexOptions.IgnoreCase);
   m_outstr = objReg2.Replace(m_outstr, " ");
  }
  return m_outstr.Length > firstN ? m_outstr.Substring(0, firstN) : m_outstr;
 }
 /// 
 /// 此私有方法返回一个IP地址对应的无符号整数
 /// 
 /// IP地址
 /// 
 private uint getuintFromIP(IPAddress x)
 {
  Byte[] bt = x.GetAddressBytes();
  uint i = (uint)(bt[0] * 256 * 256 * 256);
  i += (uint)(bt[1] * 256 * 256);
  i += (uint)(bt[2] * 256);
  i += (uint)(bt[3]);
  return i;
 }
 #endregion
 #region 公有文法
 /// 
 /// 此公有方法提取网页中一定字数的纯文本,包括链接文字
 /// 
 /// 字数
 /// 
 public string getContext(int firstN)
 {
  return getFirstNchar(m_html, firstN, true);
 }
 /// 
 /// 此公有方法提取网页中一定字数的纯文本,不包括链接文字
 /// 
 /// 
 /// 
 public string getContextWithOutlink(int firstN)
 {
  return getFirstNchar(m_html, firstN, false);
 }
 /// 
 /// 此公有方法从本网页的链接中提取一定数量的链接,该链接的URL满足某正则式
 /// 
 /// 正则式
 /// 返回的链接的个数
 /// List
 public List getSpeciallinksByUrl(string pattern,int count)
 {
  if(m_links.Count==0)getlinks();
  List Speciallinks = new List();
  List.Enumerator i;
  i = m_links.GetEnumerator();
  int cnt = 0;
  while (i.MoveNext() && cnt
 /// 此公有方法从本网页的链接中提取一定数量的链接,该链接的文字满足某正则式
 /// 
 /// 正则式
 /// 返回的链接的个数
 /// List
 public List getSpeciallinksByText(string pattern,int count)
 {
  if (m_links.Count == 0) getlinks();
  List Speciallinks = new List();
  List.Enumerator i;
  i = m_links.GetEnumerator();
  int cnt = 0;
  while (i.MoveNext() && cnt < count)
  {
   if (new Regex(pattern, RegexOptions.Multiline | RegexOptions.IgnoreCase ).Match(i.Current.text).Success)
   {
    Speciallinks.Add(i.Current);
    cnt++;
   }
  }
  return Speciallinks;
 }
 /// 
 /// 此公有方法获得所有链接中在一定IP范围的链接
 /// 
 /// 起始IP
 /// 终止IP
 /// 
 public List getSpeciallinksByIP(string _ip_start, string _ip_end)
 {
  IPAddress ip_start = IPAddress.Parse(_ip_start);
  IPAddress ip_end = IPAddress.Parse(_ip_end);
  if (m_links.Count == 0) getlinks();
  List Speciallinks = new List();
  List.Enumerator i;
  i = m_links.GetEnumerator();
  while (i.MoveNext())
  {
   IPAddress ip;
   try
   {
    ip = Dns.GetHostEntry(new Uri(i.Current.url).Host).AddressList[0];
   }
   catch { continue; }
   if(getuintFromIP(ip)>=getuintFromIP(ip_start) && getuintFromIP(ip)<=getuintFromIP(ip_end))
   {
    Speciallinks.Add(i.Current);
   }
  }
  return Speciallinks;
 }
 /// 
 /// 这公有方法提取本网页的纯文本中满足某正则式的文字
 /// 
 /// 正则式
 /// 返回文字
 public string getSpecialWords(string pattern)
 {
  if (m_outstr == "") getContext(Int16.MaxValue);
  Regex regex = new Regex(pattern, RegexOptions.Multiline | RegexOptions.IgnoreCase );
  Match mc=regex.Match(m_outstr);
  if (mc.Success)
   return mc.Groups[1].Value;
  return string.Empty;
 }
 #endregion
 #region 构造函数
 private void Init(string _url)
 {
  try
  {
   m_uri = new Uri(_url);
   m_links = new List();
   m_html = "";
   m_outstr = "";
   m_title = "";
   m_good = true;
   if (_url.EndsWith(".rar") || _url.EndsWith(".dat") || _url.EndsWith(".msi"))
   {
    m_good = false;
    return;
   }
   HttpWebRequest rqst = (HttpWebRequest)WebRequest.Create(m_uri);
   rqst.AllowAutoRedirect = true;
   rqst.MaximumAutomaticRedirections = 3;
   rqst.UserAgent = "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)";
   rqst.KeepAlive = true;
   rqst.Timeout = 30000;
   lock (WebPage.webcookies)
   {
    if (WebPage.webcookies.ContainsKey(m_uri.Host))
     rqst.cookieContainer = WebPage.webcookies[m_uri.Host];
    else
    {
     cookieContainer cc = new cookieContainer();
     WebPage.webcookies[m_uri.Host] = cc;
     rqst.cookieContainer = cc;
    }
   }
   HttpWebResponse rsps = (HttpWebResponse)rqst.GetResponse();
   Stream sm = rsps.GetResponseStream();
   if (!rsps.ContentType.ToLower().StartsWith("text/") || rsps.ContentLength > 1 << 22)
   {
    rsps.Close();
    m_good = false;
    return;
   }
   Encoding cding = System.Text.Encoding.Default;
   string contenttype=rsps.ContentType.ToLower();
   int ix = contenttype.IndexOf("charset=");
   if (ix != -1)
   {
    try
    {
     cding = System.Text.Encoding.GetEncoding(rsps.ContentType.Substring(ix + "charset".Length + 1));
    }
    catch
    {
     cding = Encoding.Default;
    }
    m_html = new StreamReader(sm, cding).ReadToEnd();
   }
   else
   {
    m_html = new StreamReader(sm, cding).ReadToEnd();
    Regex regex = new Regex("charset=(?[^=]+)?"",RegexOptions.IgnoreCase);
    string strcding = regex.Match(m_html).Groups["cding"].Value;
    try
    {
     cding = Encoding.GetEncoding(strcding);
    }
    catch{
     cding = Encoding.Default;
    }
    byte[] bytes=Encoding.Default.GetBytes(m_html.ToCharArray());
    m_html = cding.GetString(bytes);
    if (m_html.Split('?').Length > 100)
    {
     m_html=Encoding.Default.GetString(bytes);
    }
   }
   
   m_pagesize = m_html.Length;
   m_uri = rsps.ResponseUri;
   rsps.Close();
  }
  catch (Exception ex)
  {
   Console.WriteLine(ex.Message+m_uri.ToString());
   m_good = false;
  }
 }
 public WebPage(string _url)
 {
  string uurl = "";
  try
  {
   uurl = Uri.UnescapeDataString(_url);
   _url = uurl;
  }
  catch { };
  Regex re = new Regex("(?[^x00-xff]+)");
  Match mc = re.Match(_url);
  if (mc.Success)
  {
   string han = mc.Groups["h"].Value;
   _url = _url.Replace(han, System.Web.HttpUtility.UrlEncode(han, Encoding.GetEncoding("GB2312")));
  }
  Init(_url);
 }
 public WebPage(string _url, string _loginurl, string _post)
 {
  string uurl = "";
  try
  {
   uurl = Uri.UnescapeDataString(_url);
   _url = uurl;
  }
  catch { };
  Regex re = new Regex("(?[^x00-xff]+)");
  Match mc = re.Match(_url);
  if (mc.Success)
  {
   string han = mc.Groups["h"].Value;
   _url = _url.Replace(han, System.Web.HttpUtility.UrlEncode(han, Encoding.GetEncoding("GB2312")));
  }
  if (_loginurl.Trim() == "" || _post.Trim() == "" || WebPage.webcookies.ContainsKey(new Uri(_url).Host))
  {
   Init(_url);
  }
  else
  {
   #region 登陆
   string indata = _post;
   m_post = _post;
   m_loginurl = _loginurl;
   byte[] bytes = Encoding.Default.GetBytes(_post);
   cookieContainer mycookieContainer = new cookieContainer();
   try
   {
    //新建一个cookieContainer来存放cookie集合 
    HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(_loginurl);
    //新建一个HttpWebRequest 
    myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
    myHttpWebRequest.AllowAutoRedirect = false;
    myHttpWebRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)";
    myHttpWebRequest.Timeout = 60000;
    myHttpWebRequest.KeepAlive = true;
    myHttpWebRequest.ContentLength = bytes.Length;
    myHttpWebRequest.Method = "POST";
    myHttpWebRequest.cookieContainer = mycookieContainer;
    //设置HttpWebRequest的cookieContainer为刚才建立的那个mycookieContainer 
    Stream myRequestStream = myHttpWebRequest.GetRequestStream();
    myRequestStream.Write(bytes, 0, bytes.Length);
    myRequestStream.Close();
    HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
    foreach (cookie ck in myHttpWebResponse.cookies)
    {
     mycookieContainer.Add(ck);
    }
    myHttpWebResponse.Close();
   }
   catch
   {
    Init(_url);
    return;
   }
   #endregion
   #region 登陆后再访问页面
   try
   {
    m_uri = new Uri(_url);
    m_links = new List();
    m_html = "";
    m_outstr = "";
    m_title = "";
    m_good = true;
    if (_url.EndsWith(".rar") || _url.EndsWith(".dat") || _url.EndsWith(".msi"))
    {
     m_good = false;
     return;
    }
    HttpWebRequest rqst = (HttpWebRequest)WebRequest.Create(m_uri);
    rqst.AllowAutoRedirect = true;
    rqst.MaximumAutomaticRedirections = 3;
    rqst.UserAgent = "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)";
    rqst.KeepAlive = true;
    rqst.Timeout = 30000;
    rqst.cookieContainer = mycookieContainer;
    lock (WebPage.webcookies)
    {
     WebPage.webcookies[m_uri.Host] = mycookieContainer;
    }
    HttpWebResponse rsps = (HttpWebResponse)rqst.GetResponse();
    Stream sm = rsps.GetResponseStream();
    if (!rsps.ContentType.ToLower().StartsWith("text/") || rsps.ContentLength > 1 << 22)
    {
     rsps.Close();
     m_good = false;
     return;
    }
    Encoding cding = System.Text.Encoding.Default;
    int ix = rsps.ContentType.ToLower().IndexOf("charset=");
    if (ix != -1)
    {
     try
     {
      cding = System.Text.Encoding.GetEncoding(rsps.ContentType.Substring(ix + "charset".Length + 1));
     }
     catch
     {
      cding = Encoding.Default;
     }
    }
    m_html = new StreamReader(sm, cding).ReadToEnd();
    m_pagesize = m_html.Length;
    m_uri = rsps.ResponseUri;
    rsps.Close();
   }
   catch (Exception ex)
   {
    Console.WriteLine(ex.Message+m_uri.ToString());
    m_good = false;
   }
   #endregion
  }
 }
 #endregion
 #region 属性
 /// 
 /// 通过此属性可获得本网页的网址,只读
 /// 
 public string URL
 {
  get
  {
   return m_uri.AbsoluteUri;
  }
 }
 /// 
 /// 通过此属性可获得本网页的标题,只读
 /// 
 public string Title
 {
  get
  {
   if (m_title == "")
   {
    Regex reg = new Regex(@"(?m)]*>(?(?:w|W)*?)</title[^>]*>", RegexOptions.Multiline | RegexOptions.IgnoreCase );
    Match mc = reg.Match(m_html);
    if (mc.Success)
     m_title= mc.Groups["title"].Value.Trim();
   }
   return m_title;
  }
 }
 /// <summary>
 /// 此属性获得本网页的所有链接信息,只读
 /// </summary>
 public List<link> links
 {
  get
  {
   if (m_links.Count == 0) getlinks();
   return m_links;
  }
 }
 /// <summary>
 /// 此属性返回本网页的全部纯文本信息,只读
 /// </summary>
 public string Context
 {
  get
  {
   if (m_outstr == "") getContext(Int16.MaxValue);
   return m_outstr;
  }
 }
 /// <summary>
 /// 此属性获得本网页的大小
 /// </summary>
 public int PageSize
 {
  get
  {
   return m_pagesize;
  }
 }
 /// <summary>
 /// 此属性获得本网页的所有站内链接
 /// </summary>
 public List<link> Insitelinks
 {
  get
  {
   return getSpeciallinksByUrl("^http://"+m_uri.Host,Int16.MaxValue);
  }
 }
 /// <summary>
 /// 此属性表示本网页是否可用
 /// </summary>
 public bool IsGood
 {
  get
  {
   return m_good;
  }
 }
 /// <summary>
 /// 此属性表示网页的所在的网站
 /// </summary>
 public string Host
 {
  get
  {
   return m_uri.Host;
  }
 }
 /// <summary>
 /// 此网页的登陆页所需的POST数据
 /// </summary>
 public string PostStr
 {
  get
  {
   return m_post;
  }
 }
 /// <summary>
 /// 此网页的登陆页
 /// </summary>
 public string LoginURL
 {
  get
  {
   return m_loginurl;
  }
 }
 #endregion
}
/// <summary>
/// 链接类
/// </summary>
public class link
{
 public string url; //链接网址
 public string text; //链接文字
 public link(string _url, string _text)
 {
  url = _url;
  text = _text;
 }
}</pre>

<p>希望本文所述对大家的C#程序设计有所帮助。</p></div>
</div>
<div style="clear: both;"></div>
<div class="author-info fl">
<div><span class="gray">转载请注明:</span>文章转载自 <a href="https://www.mshxw.com/" class="blue">www.mshxw.com</a></div>
<div><span class="gray">本文地址:</span><a href="https://www.mshxw.com/it/125238.html" class="blue">https://www.mshxw.com/it/125238.html</a></div>
</div>
<div class="prev fl">
<p>   <a style='text-align:left;' class='center-block text-center glyphicon glyphicon-collapse-down' href="https://www.mshxw.com/it/125233.html">上一篇  C#实现在线更新软件</a>
 </p>
<p>   <a style='text-align:left;' class='center-block text-center glyphicon glyphicon-collapse-down' href="https://www.mshxw.com/it/125214.html">下一篇  C#实现强制关闭当前程序进程</a>
  </p>
</div>
<div class="new_tag fl">
</div>
</div>
<div class="new_r fr" style="border-radius:10px;">
<div class="tui fl">
<h3>C#教程相关栏目本月热门文章</h3>
<ul>
  <li><span>1</span><a href="https://www.mshxw.com/it/1041277.html" title="【Linux驱动开发】设备树详解(二)设备树语法详解">【Linux驱动开发】设备树详解(二)设备树语法详解</a></li>
  <li><span>2</span><a href="https://www.mshxw.com/it/1041273.html" title="别跟客户扯细节">别跟客户扯细节</a></li>
  <li><span>3</span><a href="https://www.mshxw.com/it/1041266.html" title="Springboot+RabbitMQ+ACK机制(生产方确认(全局、局部)、消费方确认)、知识盲区">Springboot+RabbitMQ+ACK机制(生产方确认(全局、局部)、消费方确认)、知识盲区</a></li>
  <li><span>4</span><a href="https://www.mshxw.com/it/1041261.html" title="【Java】对象处理流(ObjectOutputStream和ObjectInputStream)">【Java】对象处理流(ObjectOutputStream和ObjectInputStream)</a></li>
  <li><span>5</span><a href="https://www.mshxw.com/it/1041256.html" title="【分页】常见两种SpringBoot项目中分页技巧">【分页】常见两种SpringBoot项目中分页技巧</a></li>
  <li><span>6</span><a href="https://www.mshxw.com/it/1041299.html" title="一文带你搞懂OAuth2.0">一文带你搞懂OAuth2.0</a></li>
  <li><span>7</span><a href="https://www.mshxw.com/it/1041297.html" title="我要写整个中文互联网界最牛逼的JVM系列教程 | 「JVM与Java体系架构」章节:虚拟机与Java虚拟机介绍">我要写整个中文互联网界最牛逼的JVM系列教程 | 「JVM与Java体系架构」章节:虚拟机与Java虚拟机介绍</a></li>
  <li><span>8</span><a href="https://www.mshxw.com/it/1041296.html" title="【Spring Cloud】新闻头条微服务项目:FreeMarker模板引擎实现文章静态页面生成">【Spring Cloud】新闻头条微服务项目:FreeMarker模板引擎实现文章静态页面生成</a></li>
  <li><span>9</span><a href="https://www.mshxw.com/it/1041294.html" title="JavaSE - 封装、static成员和内部类">JavaSE - 封装、static成员和内部类</a></li>
  <li><span>10</span><a href="https://www.mshxw.com/it/1041291.html" title="树莓派mjpg-streamer实现监控及拍照功能调试">树莓派mjpg-streamer实现监控及拍照功能调试</a></li>
  <li><span>11</span><a href="https://www.mshxw.com/it/1041289.html" title="用c++写一个蓝屏代码">用c++写一个蓝屏代码</a></li>
  <li><span>12</span><a href="https://www.mshxw.com/it/1041285.html" title="从JDK8源码中看ArrayList和LinkedList的区别">从JDK8源码中看ArrayList和LinkedList的区别</a></li>
  <li><span>13</span><a href="https://www.mshxw.com/it/1041281.html" title="idea 1、报错java: 找不到符号 符号: 变量 log 2、转换成Maven项目">idea 1、报错java: 找不到符号 符号: 变量 log 2、转换成Maven项目</a></li>
  <li><span>14</span><a href="https://www.mshxw.com/it/1041282.html" title="在openwrt使用C语言增加ubus接口(包含C uci操作)">在openwrt使用C语言增加ubus接口(包含C uci操作)</a></li>
  <li><span>15</span><a href="https://www.mshxw.com/it/1041278.html" title="Spring 解决循环依赖">Spring 解决循环依赖</a></li>
  <li><span>16</span><a href="https://www.mshxw.com/it/1041275.html" title="SpringMVC——基于MVC架构的Spring框架">SpringMVC——基于MVC架构的Spring框架</a></li>
  <li><span>17</span><a href="https://www.mshxw.com/it/1041272.html" title="Andy‘s First Dictionary C++ STL set应用">Andy‘s First Dictionary C++ STL set应用</a></li>
  <li><span>18</span><a href="https://www.mshxw.com/it/1041271.html" title="动态内存管理">动态内存管理</a></li>
  <li><span>19</span><a href="https://www.mshxw.com/it/1041270.html" title="我的创作纪念日">我的创作纪念日</a></li>
  <li><span>20</span><a href="https://www.mshxw.com/it/1041269.html" title="Docker自定义镜像-Dockerfile">Docker自定义镜像-Dockerfile</a></li>
</ul>
</div>
</div>
</div>
<!-- 公共尾部 -->
<div class="link main">
<div class="link_tit">
<span class="on">热门相关搜索</span>
</div>
<div class="link_tab">
<div class="link_con">
<a href="http://www.mshxw.com/TAG_1/luyouqishezhi.html">路由器设置</a>
<a href="http://www.mshxw.com/TAG_1/mutuopan.html">木托盘</a>
<a href="http://www.mshxw.com/TAG_1/baotamianban.html">宝塔面板</a>
<a href="http://www.mshxw.com/TAG_1/shaoerpython.html">儿童python教程</a>
<a href="http://www.mshxw.com/TAG_1/xinqingdiluo.html">心情低落</a>
<a href="http://www.mshxw.com/TAG_1/pengyouquan.html">朋友圈</a>
<a href="http://www.mshxw.com/TAG_1/vim.html">vim</a>
<a href="http://www.mshxw.com/TAG_1/shuangyiliuxueke.html">双一流学科</a>
<a href="http://www.mshxw.com/TAG_1/zhuanshengben.html">专升本</a>
<a href="http://www.mshxw.com/TAG_1/wodexuexiao.html">我的学校</a>
<a href="http://www.mshxw.com/TAG_1/rijixuexiao.html">日记学校</a>
<a href="http://www.mshxw.com/TAG_1/xidianpeixunxuexiao.html">西点培训学校</a>
<a href="http://www.mshxw.com/TAG_1/qixiuxuexiao.html">汽修学校</a>
<a href="http://www.mshxw.com/TAG_1/qingshu.html">情书</a>
<a href="http://www.mshxw.com/TAG_1/huazhuangxuexiao.html">化妆学校</a>
<a href="http://www.mshxw.com/TAG_1/tagouwuxiao.html">塔沟武校</a>
<a href="http://www.mshxw.com/TAG_1/yixingmuban.html">异形模板</a>
<a href="http://www.mshxw.com/TAG_1/xinandaxuepaiming.html">西南大学排名</a>
<a href="http://www.mshxw.com/TAG_1/zuijingpirenshengduanju.html">最精辟人生短句</a>
<a href="http://www.mshxw.com/TAG_1/6bujiaonizhuihuibeipian.html">6步教你追回被骗的钱</a>
<a href="http://www.mshxw.com/TAG_1/nanchangdaxue985.html">南昌大学排名</a>
<a href="http://www.mshxw.com/TAG_1/qingchaoshierdi.html">清朝十二帝</a>
<a href="http://www.mshxw.com/TAG_1/beijingyinshuaxueyuanpaiming.html">北京印刷学院排名</a>
<a href="http://www.mshxw.com/TAG_1/beifanggongyedaxuepaiming.html">北方工业大学排名</a>
<a href="http://www.mshxw.com/TAG_1/beijinghangkonghangtiandaxuepaiming.html">北京航空航天大学排名</a>
<a href="http://www.mshxw.com/TAG_1/shoudoujingjimaoyidaxuepaiming.html">首都经济贸易大学排名</a>
<a href="http://www.mshxw.com/TAG_1/zhongguochuanmeidaxuepaiming.html">中国传媒大学排名</a>
<a href="http://www.mshxw.com/TAG_1/shoudoushifandaxuepaiming.html">首都师范大学排名</a>
<a href="http://www.mshxw.com/TAG_1/zhongguodezhidaxue(beijing)paiming.html">中国地质大学(北京)排名</a>
<a href="http://www.mshxw.com/TAG_1/beijingxinxikejidaxuepaiming.html">北京信息科技大学排名</a>
<a href="http://www.mshxw.com/TAG_1/zhongyangminzudaxuepaiming.html">中央民族大学排名</a>
<a href="http://www.mshxw.com/TAG_1/beijingwudaoxueyuanpaiming.html">北京舞蹈学院排名</a>
<a href="http://www.mshxw.com/TAG_1/beijingdianyingxueyuanpaiming.html">北京电影学院排名</a>
<a href="http://www.mshxw.com/TAG_1/zhongguohuquxueyuanpaiming.html">中国戏曲学院排名</a>
<a href="http://www.mshxw.com/TAG_1/hebeizhengfazhiyexueyuanpaiming.html">河北政法职业学院排名</a>
<a href="http://www.mshxw.com/TAG_1/hebeijingmaodaxuepaiming.html">河北经贸大学排名</a>
<a href="http://www.mshxw.com/TAG_1/tianjinzhongdeyingyongjishudaxuepaiming.html">天津中德应用技术大学排名</a>
<a href="http://www.mshxw.com/TAG_1/tianjinyixuegaodengzhuankexuejiaopaiming.html">天津医学高等专科学校排名</a>
<a href="http://www.mshxw.com/TAG_1/tianjinmeishuxueyuanpaiming.html">天津美术学院排名</a>
<a href="http://www.mshxw.com/TAG_1/tianjinyinlexueyuanpaiming.html">天津音乐学院排名</a>
<a href="http://www.mshxw.com/TAG_1/tianjingongyedaxuepaiming.html">天津工业大学排名</a>
<a href="http://www.mshxw.com/TAG_1/beijinggongyedaxuegengdanxueyuanpaiming.html">北京工业大学耿丹学院排名</a>
<a href="http://www.mshxw.com/TAG_1/beijingjingchaxueyuanpaiming.html">北京警察学院排名</a>
<a href="http://www.mshxw.com/TAG_1/tianjinkejidaxuepaiming.html">天津科技大学排名</a>
<a href="http://www.mshxw.com/TAG_1/beijingyoudiandaxue(hongfujiaoou)paiming.html">北京邮电大学(宏福校区)排名</a>
<a href="http://www.mshxw.com/TAG_1/beijingwanglaozhiyexueyuanpaiming.html">北京网络职业学院排名</a>
<a href="http://www.mshxw.com/TAG_1/beijingdaxueyixuebupaiming.html">北京大学医学部排名</a>
<a href="http://www.mshxw.com/TAG_1/hebeikejidaxuepaiming.html">河北科技大学排名</a>
<a href="http://www.mshxw.com/TAG_1/hebeidezhidaxuepaiming.html">河北地质大学排名</a>
<a href="http://www.mshxw.com/TAG_1/hebeitiyoxueyuanpaiming.html">河北体育学院排名</a>
</div>
</div>
</div>
<div class="footer">
<div class="dl_con">
<div class="width1200">
<dl>
<dt>学习工具</dt>
<dd><a href="https://www.mshxw.com/tools/algebra/" title="代数计算器">代数计算器</a></dd>
<dd><a href="https://www.mshxw.com/tools/trigonometry/" title="三角函数计算器">三角函数</a></dd>
<dd><a href="https://www.mshxw.com/tools/analytical/" title="解析几何">解析几何</a></dd>
<dd><a href="https://www.mshxw.com/tools/solidgeometry/" title="立体几何">立体几何</a></dd>
</dl>
<dl>
<dt>知识解答</dt>
<dd><a href="https://www.mshxw.com/ask/1033/"  title="教育知识">教育知识</a></dd>
<dd><a href="https://www.mshxw.com/ask/1180/"  title="百科知识">百科知识</a></dd>
<dd><a href="https://www.mshxw.com/ask/1155/"  title="生活知识">生活知识</a></dd>
<dd><a class="https://www.mshxw.com/ask/1199/"  title="常识知识">常识知识</a></dd>
</dl>
<dl>
<dt>写作必备</dt>
<dd><a href="https://www.mshxw.com/zuowen/1128/" title="作文大全">作文大全</a></dd>
<dd><a href="https://www.mshxw.com/zuowen/1130/" title="作文素材">作文素材</a></dd>
<dd><a href="https://www.mshxw.com/zuowen/1132/" title="句子大全">句子大全</a></dd>

<dd><a href="https://www.mshxw.com/zuowen/1154/" title="实用范文">实用范文</a></dd>
</dl>
<dl class="mr0">
<dt>关于我们</dt>
<dd><a href="https://www.mshxw.com/about/index.html" title="关于我们" rel="nofollow">关于我们</a></dd>
<dd><a href="https://www.mshxw.com/about/contact.html" title="联系我们" rel="nofollow">联系我们</a></dd>
<dd><a href="https://www.mshxw.com/sitemap/" title="网站地图">网站地图</a></dd>
</dl>
<div class="dl_ewm">
<div class="wx"> <img src="https://www.mshxw.com/skin/sinaskin//kaotop/picture/gzh.jpg" alt="交流群">
<p>名师互学网交流群</p>
</div>
<div class="wx"><img src="https://www.mshxw.com/skin/sinaskin//kaotop/picture/weixin.jpg" alt="名师互学网客服">
<p>名师互学网客服</p>
</div>
</div>
</div>
</div>
<div class="copyright">
<p>名师互学网 版权所有 (c)2021-2022      ICP备案号:<a href="https://beian.miit.gov.cn" rel="nofollow">晋ICP备2021003244-6号</a>
 </p>
</div>
</div>
<!-- 手机端 -->
<div class="m_foot_top">
<img src="https://www.mshxw.com/foot.gif" width="192" height="27" alt="我们一直用心在做"><br/>
<a href="https://www.mshxw.com/about/index.html">关于我们</a>
<a href="https://www.mshxw.com/archiver/">文章归档</a>
<a href="https://www.mshxw.com/sitemap">网站地图</a>
<a href="https://www.mshxw.com/about/contact.html">联系我们</a>
<p>版权所有 (c)2021-2022 MSHXW.COM</p>
<p>ICP备案号:<a href="https://beian.miit.gov.cn/" rel="nofollow">晋ICP备2021003244-6号</a></p>
</div>
<div class="to_top" style="display:none;"><img src="https://www.mshxw.com/skin/sinaskin//kaotop/picture/to_top.png"></div>
<!--广告!-->
<script type="text/javascript" src="https://www.mshxw.com/skin/sinaskin//kaotop/js/top.js"></script>
<script src="https://www.mshxw.com/skin/sinaskin//kaotop/js/fixed.js" type="text/javascript"></script>
<!--头条搜索!-->
<script>
(function(){
var el = document.createElement("script");
el.src = "https://lf1-cdn-tos.bytegoofy.com/goofy/ttzz/push.js?018f42187355ee18d1bfcee0487fc91a76ac6319beb05b7dc943033ed22c446d3d72cd14f8a76432df3935ab77ec54f830517b3cb210f7fd334f50ccb772134a";
el.id = "ttzz";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(el, s);
})(window)
</script>
<!--头条搜索结束!-->
<script>
var _hmt = _hmt || [];
(function() {
  var hm = document.createElement("script");
  hm.src = "https://hm.baidu.com/hm.js?e05fec1c87ee5ca07f1ce57d093866c4";
  var s = document.getElementsByTagName("script")[0]; 
  s.parentNode.insertBefore(hm, s);
})();
</script>
</div>
</div>
<script type="text/javascript">
$(".alert_kf").click(function() {
      mantis.requestChat();
 });
</script>
<script type="text/javascript">
var mySwiper_weixin = new Swiper('.pc_swiper_weixin', {
autoplay: 3000, //可选选项,自动滑动
loop: true,
speed: 1000,
pagination: '.swiper-pagination',
paginationClickable: true,
})
</script>
<script type="text/javascript">
$(function() {
$(window).scroll(function() {
if ($(window).scrollTop() > 100) {
$(".to_top").fadeIn(1000);
} else {
$(".to_top").fadeOut(1000);
}
});
$(".to_top").click(function() {
if ($('html').scrollTop()) {
$('html').animate({
scrollTop: 0
}, 300);
return false;
}
$('body').animate({
scrollTop: 0
}, 300);
return false;
});
});
</script>
</body>
</html>