如何使用正则表达式获取价格值
How to get price value with regular expressions
我正在尝试为在线商店编写爬虫程序,现在我需要获取网页的价格值。这是我的尝试:
$match = "";
$isMatched = preg_match('|<div class="c-product__seller-price-pure js-price-value".*$(.*)<|',$html,$match);
echo "<pre>";
print_r($match);
echo "</pre>";
基本上$html
持有网页的源代码,价格值存储在文档中是这样的:
<div class="c-product__seller-price-pure js-price-value">10,699,000</div>
但是当我 运行 这样做时,我得到的结果是:
Array
(
)
也就是说,我使用的正则表达式不正确:
|<div class="c-product__seller-price-pure js-price-value".*$(.*)<|
那么我怎样才能用正则表达式正确地得到这个价格值呢?
您当前正在将 js-price-value" 之后的任何字符 .*
与美元符号 `$ 匹配。但是您的来源中没有美元符号 HTML。
删除 $
符号并匹配标签开始和结束之间的任何内容。
最简单的方法是使用 NOT 运算符 ^
,来匹配任何不是 <
符号的字符,例如 ([^<]+)
完整代码见下方:
$match = "";
$isMatched = preg_match('|c-product__seller-price-pure js-price-value">([^<]+)|', $html, $match);
echo "<pre>";
print_r($match);
echo "</pre>";
我正在尝试为在线商店编写爬虫程序,现在我需要获取网页的价格值。这是我的尝试:
$match = "";
$isMatched = preg_match('|<div class="c-product__seller-price-pure js-price-value".*$(.*)<|',$html,$match);
echo "<pre>";
print_r($match);
echo "</pre>";
基本上$html
持有网页的源代码,价格值存储在文档中是这样的:
<div class="c-product__seller-price-pure js-price-value">10,699,000</div>
但是当我 运行 这样做时,我得到的结果是:
Array
(
)
也就是说,我使用的正则表达式不正确:
|<div class="c-product__seller-price-pure js-price-value".*$(.*)<|
那么我怎样才能用正则表达式正确地得到这个价格值呢?
您当前正在将 js-price-value" 之后的任何字符 .*
与美元符号 `$ 匹配。但是您的来源中没有美元符号 HTML。
删除 $
符号并匹配标签开始和结束之间的任何内容。
最简单的方法是使用 NOT 运算符 ^
,来匹配任何不是 <
符号的字符,例如 ([^<]+)
完整代码见下方:
$match = "";
$isMatched = preg_match('|c-product__seller-price-pure js-price-value">([^<]+)|', $html, $match);
echo "<pre>";
print_r($match);
echo "</pre>";