如何编写REGEX以从HTML中提取信息

时间:2013-12-11 14:46:15

标签: html regex

<div data-feature-name="title">
    <h1 id="title">
        Give and Take: A Revolutionary Approach to Success
    </h1>

    <span class="author" font-size: 13px; line-height: 17.328125px;" >
    Adam M. Grant Ph.D.
    </span>
</div>

<div data-feature-name="averageCustomerReviews">
    <a href="/Give-Take-Revolutionary-Approach-Success/product-reviews/0670026557/ref=dp_top_cm_cr_acr_txt?showViewpoints=1" >
        183 customer reviews
    </a>
</div>

<div>
    <ul>
        <li>
            <span>
                <span>Kindle</span>
                <span>
                    <span>$11.99</span>
                </span>
            </span >
        </li>

        <li>
            <span>
                <span>Hardcover</span>
                <span>
                    <span>$16.50</span>
                </span>
            </span>
        </li>

        <li>
            <span>
                <span>Paperback</span>
                <span>
                    <span>$12.65</span>
                </span>
            </span>
        </li>

        <li>
            <span>
                <span>Audible</span>
                <span>
                    <span>
                        $23.95
                    </span>
                </span>
            </span>
        </li>
    </ul>
</div> 

如何编写REGEX表达式以提取以下内容: 这本书的标题,这本书的作者,以及该书的评论数量。

另外,我如何为此编写走鹃算法?

2 个答案:

答案 0 :(得分:0)

您不应该使用正则表达式来提取HTML。使用库来遍历xml / html。

答案 1 :(得分:0)

您不能为通用目的解析HTML。

但是,如果您打算解析特定网站(如果您正在编写特定的抓取工具),则可以尝试此操作

标题:

/id="title"[^>]*>([^<]*?)<\/h1>/

作者:

/class="author"[^>]*>([^<]*)</

评论编号:

/(\d+)\s*customer review/

当然,很多情况会破坏它们。如果你想应对这些情况,你真的需要一个解析器