100分 求个正则 抓取网页数据

qq251833440 2013-11-26 11:26:35

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<section class="main-sort" id="order">
<div class="type-sort fn-left">
<span>排序:</span><a href="javascript:;" data-seed="sort-tj" class="sort-tj cur"><span class="sort-tjIcon">推荐</span></a>
<a href="javascript:;" data-seed="sort-price" class="sort-price" data-price="0"><span class="sort-priceIcon">价格</span></a>
<input type="checkbox" class="J_sort J_sortCheck" data-seed="sort-yh" data-item="sale" data-val=""><label>优惠促销</label>
<input type="checkbox" class="J_sort J_sortCheck" data-seed="sort-bzz" data-item="halftrip" data-val=""><label>半自助</label>
</div>
<div class="common-page fn-right">
<span class="j-pageCurrent">1</span>/<span class="j-pageAll">1</span>
<a href="javascript:;" class="page-prev no-page">上一页</a>
<a href="javascript:;" class="page-next no-page">下一页</a>
</div>
</section>
<section class="listbox">
<div class="ListLoding" style="display: none;">数据正在加载。。。</div>
<ul class="listul J_pagelist">

<li data-info="[12]" data-days="6天" data-to="尊爵贵族线" data-halftrip="0" data-tag="尊爵贵族线" data-price="6466" data-chunk="line-SHS67909" class="lineitem cfix" style="display: list-item;">
<div class="img fn-left">
<a title="【纯净游】轻松台湾纯玩西线6日游" target="_blank" href="http://sh.uzai.com/tour-67909.html"><img width="125px" height="67px" alt="" data-img="http://r.uzaicdn.com/pic/15434/m/w160/h120/t1" src="http://r.uzaicdn.com/pic/15434/m/w160/h120/t1"></a>
<div class="prd-num">产品编号:SHS67909</div>
</div>
<dl class="info fn-left">
<dt class="t">
<a title="【纯净游】轻松台湾纯玩西线6日游" target="_blank" href="http://sh.uzai.com/tour-67909.html">【纯净游】轻松台湾纯玩西线6日游</a>

</dt>
<dd class="desc">台北连住二晚市区5花酒店、尽享台北市区半天的自由活动,随心所欲安排您的行程</dd>
<dd class="moredesc">

<span>满意度:<span class="n">96%</span></span>

<span class="pin"><span class="n">6</span>人点评</span>

<span>最近出发班期:<span class="n">12/22</span></span>

<a class="date" onclick="mychecks(67909,this,'http://sh.uzai.com/tour-67909.html')" href="javascript:;">全部班期</a>
</dd>
</dl>
<div class="detail fn-right">

<p class="price"><span class="u">¥</span><span class="n">6466</span>起</p>
<span data-di="50" rel="J_popDisong" class="d J_powerFloat"><em class="dsnum">50</em></span>
<span data-song="200" rel="J_popDisong" class="s m-5 J_powerFloat"><em class="dsnum">200</em></span>
</div>
</li>

<li data-info="[12][1]" data-days="8天" data-to="尊爵贵族线" data-halftrip="0" data-tag="尊爵贵族线" data-price="7366" data-chunk="line-SHS67808" class="lineitem cfix" style="display: list-item;">
<div class="img fn-left">
<a title="【发现美味】台湾纯玩环岛8日(国航往返)" target="_blank" href="http://sh.uzai.com/tour-67808.html"><img width="125px" height="67px" alt="" data-img="http://r.uzaicdn.com/pic/15451/m/w160/h120/t1" src="http://r.uzaicdn.com/pic/15451/m/w160/h120/t1"></a>
<div class="prd-num">产品编号:SHS67808</div>
</div>
<dl class="info fn-left">
<dt class="t">
<a title="【发现美味】台湾纯玩环岛8日(国航往返)" target="_blank" href="http://sh.uzai.com/tour-67808.html">【发现美味】台湾纯玩环岛8日(国航往返)</a>

</dt>
<dd class="desc">尝特色美食、台北连住二晚市区酒店、台南一晚升级五星香格里拉大饭店</dd>
<dd class="moredesc">

<span>满意度:<span class="n">96%</span></span>

<span class="pin"><span class="n">6</span>人点评</span>

<span>最近出发班期:<span class="n">12/29、1/5</span></span>

<a class="date" onclick="mychecks(67808,this,'http://sh.uzai.com/tour-67808.html')" href="javascript:;">全部班期</a>
</dd>
</dl>
<div class="detail fn-right">

<p class="price"><span class="u">¥</span><span class="n">7366</span>起</p>
<span data-di="50" rel="J_popDisong" class="d J_powerFloat"><em class="dsnum">50</em></span>
<span data-song="200" rel="J_popDisong" class="s m-5 J_powerFloat"><em class="dsnum">200</em></span>
</div>
</li>

</ul>
<div class="noshuju" style="display: none;">
<span>对不起,没有找到符合条件的产品!</span><a href="javascript:;">重新筛选</a>
</div>
</section>
</div>
</form>
</body>
</html>


我要 统计 <ul class="listul J_pagelist"> 元素 下面<li>元素的总数
这样我能知道这个线路在网页中出现多少次。
求个正则匹配对应数据 抓到<li>元素总数
...全文
216 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq251833440 2013-11-27
  • 打赏
  • 举报
回复
问题已解决结贴了
qq251833440 2013-11-26
  • 打赏
  • 举报
回复
谁给代码,100分全送
qq251833440 2013-11-26
  • 打赏
  • 举报
回复
引用 1 楼 SomethingJack 的回复:
对照正则手册看 这是基础 汗 自己看看先 印象会深刻一点,
简单的看看手册做没什么问题,网页形式的正则这种资料,我很少见过。
  • 打赏
  • 举报
回复
百度百科 正则
SomethingJack 2013-11-26
  • 打赏
  • 举报
回复
对照正则手册看 这是基础 汗 自己看看先 印象会深刻一点,
_小黑_ 2013-11-26
  • 打赏
  • 举报
回复
webbrowser 有个 document
百米守约 2013-11-26
  • 打赏
  • 举报
回复
不要滥用正则表达式。
百米守约 2013-11-26
  • 打赏
  • 举报
回复
个人觉得没必要用正则表达式,你看看jquery的选择器吧。
c02645 2013-11-26
  • 打赏
  • 举报
回复
引用 10 楼 qq251833440 的回复:
[quote=引用 9 楼 c02645 的回复:] [quote=引用 8 楼 qq251833440 的回复:] [quote=引用 5 楼 c02645 的回复:] Regex.Matches(s, "<li data-info=\"\\[").Count
你好这个是能用,我现在的需求是要 获得 <ul class="listul J_pagelist"> </ul>里面的<li>的总数 ,网页里面有很多html 标签 有相同节点的话,是得不到的

        void Test3()
        {
            string s = File.ReadAllText(@"E:\test\网页抓取测试\3.txt", Encoding.GetEncoding("gb2312"));
            int result = Regex.Matches(s, "<li data-info=\"\\[").Count;
            Console.WriteLine(result);
        }
[/quote] 总有不同部分的,用不同部分去区分就行了。 如果按你说的页面有多个 <ul class="listul J_pagelist">呢?那你也不知道要取哪个ul下的li啊[/quote] <ul class="listul J_pagelist">这个样式,在整个网页出现一次,也是唯一标识,如果正则加这个怎么写。[/quote] 如果你一定要加ul只能他两条写

 string html = Regex.Match(s, "(?is)<ul class=\"listul J_pagelist\">.*?</ul>").Value;
Console.WriteLine(Regex.Matches(html, "<li data-info=\"\\[").Count);
qq251833440 2013-11-26
  • 打赏
  • 举报
回复
引用 9 楼 c02645 的回复:
[quote=引用 8 楼 qq251833440 的回复:] [quote=引用 5 楼 c02645 的回复:] Regex.Matches(s, "<li data-info=\"\\[").Count
你好这个是能用,我现在的需求是要 获得 <ul class="listul J_pagelist"> </ul>里面的<li>的总数 ,网页里面有很多html 标签 有相同节点的话,是得不到的

        void Test3()
        {
            string s = File.ReadAllText(@"E:\test\网页抓取测试\3.txt", Encoding.GetEncoding("gb2312"));
            int result = Regex.Matches(s, "<li data-info=\"\\[").Count;
            Console.WriteLine(result);
        }
[/quote] 总有不同部分的,用不同部分去区分就行了。 如果按你说的页面有多个 <ul class="listul J_pagelist">呢?那你也不知道要取哪个ul下的li啊[/quote] <ul class="listul J_pagelist">这个样式,在整个网页出现一次,也是唯一标识,如果正则加这个怎么写。
c02645 2013-11-26
  • 打赏
  • 举报
回复
引用 8 楼 qq251833440 的回复:
[quote=引用 5 楼 c02645 的回复:] Regex.Matches(s, "<li data-info=\"\\[").Count
你好这个是能用,我现在的需求是要 获得 <ul class="listul J_pagelist"> </ul>里面的<li>的总数 ,网页里面有很多html 标签 有相同节点的话,是得不到的

        void Test3()
        {
            string s = File.ReadAllText(@"E:\test\网页抓取测试\3.txt", Encoding.GetEncoding("gb2312"));
            int result = Regex.Matches(s, "<li data-info=\"\\[").Count;
            Console.WriteLine(result);
        }
[/quote] 总有不同部分的,用不同部分去区分就行了。 如果按你说的页面有多个 <ul class="listul J_pagelist">呢?那你也不知道要取哪个ul下的li啊
qq251833440 2013-11-26
  • 打赏
  • 举报
回复
引用 5 楼 c02645 的回复:
Regex.Matches(s, "<li data-info=\"\\[").Count
你好这个是能用,我现在的需求是要 获得 <ul class="listul J_pagelist"> </ul>里面的<li>的总数 ,网页里面有很多html 标签 有相同节点的话,是得不到的

        void Test3()
        {
            string s = File.ReadAllText(@"E:\test\网页抓取测试\3.txt", Encoding.GetEncoding("gb2312"));
            int result = Regex.Matches(s, "<li data-info=\"\\[").Count;
            Console.WriteLine(result);
        }
Ahoo 2013-11-26
  • 打赏
  • 举报
回复
HtmlAgilityPack 让使用HTML,跟操作XML一样简单. 使用XPath 的方式 来查找HTML内容
c02645 2013-11-26
  • 打赏
  • 举报
回复
如果要读名称和连接就这样 MatchCollection mc = Regex.Matches(s, "<dt class=\"t\">\\s*<a title=\"([^\"]+)\".*?href=\"([^\"]+)\""); foreach (Match m in mc) { Console.WriteLine(m.Groups[1].Value); Console.WriteLine(m.Groups[2].Value); }
c02645 2013-11-26
  • 打赏
  • 举报
回复
Regex.Matches(s, "<li data-info=\"\\[").Count

62,047

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧