【发布时间】:2012-10-16 09:18:49
【问题描述】:
我想抓取一个基于星级的评分,即对应的代码
<div class="product_detail_info_rating_stars">
<div class="product_detail_star full"></div>
<div class="product_detail_star full"></div>
<div class="product_detail_star full"></div>
<div class="product_detail_star full"></div>
<div class="product_detail_star"></div>
</div>
每个评级都有这个代码n-p。我正在寻找一种将这些 sn-ps 转换为数字的方法,例如这个数字是 4(5 颗星中的 4 颗)。
我想到的方法是为每个评分匹配整个块,然后匹配整个班级并计算它,但也许有更好的方法,我没有看到。
有没有更好的方法来解决这个问题?
谢谢!
【问题讨论】:
-
到目前为止你尝试过什么?你用的是什么 DOM 库?为什么你认为你需要一个正则表达式?
-
stackoverflow.com/questions/1732348/… 你真的应该使用合适的 HTML 解析器,甚至 PHP 中内置了一个 (DOMDocument)。
-
我没有使用 DOM 库,因为它只是一个用于 wordpress 插件的小型抓取脚本。我目前正在研究正则表达式以匹配内部 div,然后我将遍历匹配项并搜索完整内容。
/<div class="product_detail_info_rating_stars">(<div class="product_detail_star( full)?">)+</div><\/div>/msU是我目前所掌握的,需要测试,因为我在 RegEx 中一点也不流利。 -
@GordonM 我会研究一下解析器,谢谢。
标签: php regex web-scraping