来搞个正则咯

Imcx 2016-07-04 04:46:51
从某购物网站获取获取一些商品的标题、售价和销量
标题就不多说了,售价只有数字和点,销量只有数字



<!--以下为整个网页中我需要的数据的部分,删除了部分无用的元素例如图片啥的-->
<div class="J_TItems">
<div class="item5line1"><!--这个理解为一行方便我描述-->
<dl class="item"> <!--这个理解为一项-->
<dd class="detail">
<a class="item-name J_TGoldData">标题</a>
<div class="attribute">
<div class="cprice-area">
<span class="c-price">售价</span>
</div>
<div class="sale-area">
<span class="sale-num">销量</span>
</div>
</div>
</dd>
</dl>
<!--每行5项,且最后一项的class="item last"这样-->
</div>
<!--行数不定-->
</div>



大神们快来带我起飞
...全文
194 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
@"<dd\s*class=""detail"">\s*<a\b[^>]*>([^<>]*)</a>[\s\S]*?<span\b[^>]*>([^<>]*)</span>[\s\S]*?<span\b[^>]*>([^<>]*)</span>"

m.Groups[1]对应标题,2对应售价,3对应销量

这里可能会有些问题,因为是按照你的html,以<dd class="detail"> 作为起始查找位置的,后续部分就没有细致的匹配
Imcx 2016-07-05
  • 打赏
  • 举报
回复
比如<meta>、 <input>属性写对就可以了
Imcx 2016-07-05
  • 打赏
  • 举报
回复
引用 4 楼 starfd 的回复:
dom结构确定,当然能用正则,你要匹配的就是这段
<dd class="detail"> 
        <a class="item-name J_TGoldData">标题</a>
        <div class="attribute"> 
          <div class="cprice-area"> 
            <span class="c-price">售价</span> 
          </div>  
          <div class="sale-area"> 
            <span class="sale-num">销量</span> 
          </div> 
        </div> 
      </dd> 
求点解一下咯
引用 5 楼 shingoscar 的回复:
正则又不是万能的
引用 6 楼 zhi_ai_yaya 的回复:
要考虑网页可能会变化。 我更倾向于xpath路径+选择器进行匹配,而不是正则匹配。
引用 7 楼 qq_20324803 的回复:
用xpath好一点吧。。。。。。
是这样的。。网页的标签不是很规范,会出现没有闭标签的标签,这个东西浏览器可以识别,但是用xml我不会,所以考虑一下正则
我叫小菜菜 2016-07-04
  • 打赏
  • 举报
回复
http://item.jd.com/1861098.html 比如这段是内容,<strong id="jd-price" class="p-price">¥6388.00</strong> 绝对路径是/html/body/div[5]/div[3]/div/div[2]/div/div[3]/div[2]/div[2]/strong 换成css选择器,div/div/div/div/strong[@"id"="jd-price"] 那基本网页再怎么变化,都是正确匹配这个¥6388.00的了
摇撼大地 2016-07-04
  • 打赏
  • 举报
回复
用xpath好一点吧。。。。。。
我叫小菜菜 2016-07-04
  • 打赏
  • 举报
回复
要考虑网页可能会变化。 我更倾向于xpath路径+选择器进行匹配,而不是正则匹配。
Poopaye 2016-07-04
  • 打赏
  • 举报
回复
正则又不是万能的
  • 打赏
  • 举报
回复
dom结构确定,当然能用正则,你要匹配的就是这段
<dd class="detail"> 
        <a class="item-name J_TGoldData">标题</a>
        <div class="attribute"> 
          <div class="cprice-area"> 
            <span class="c-price">售价</span> 
          </div>  
          <div class="sale-area"> 
            <span class="sale-num">销量</span> 
          </div> 
        </div> 
      </dd> 
Imcx 2016-07-04
  • 打赏
  • 举报
回复
引用 2 楼 starfd 的回复:
还是xml解析的方式来吧,删除dom元素对正则有可能有影响
我还想问下能不能用正则完成这个工作
  • 打赏
  • 举报
回复
还是xml解析的方式来吧,删除dom元素对正则有可能有影响
Imcx 2016-07-04
  • 打赏
  • 举报
回复
不知道我删除了一些不需要的元素会不会影响匹配啊(整体结构没有改变)

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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