编辑:我正在寻找的是一份REGEX声明,上面写着:
我将这些存储在一个数组中,然后我将获取这些页面。对于每个页面,我将需要获取图像URL,因此我需要正则表达式代码。我知道它很脆弱,但它会完成我所需要的工作。
我有一个html页面,包含以下组:
<div class='productBundle' id='4086472'>
<table cellpadding="0" cellspacing="0" class='inv'>
<tr><td valign="middle" align="center" width="100%">
<a href="http://listing.com/product/view/4086794.html" alt="472">
我想检索div class ='productBundle'下列出的所有网址。每页可以有任意数字,但总是在productBundle div。
下然后从那些html页面,我需要获得产品图片网址
<img id=productImage' src='http://listing.com/item/472248/472.jpg'>
例如,我需要上面的html代码中的“http://listing.com/item/472248/472.jpg”。
我可以使用REGEX代码的帮助来获取第一部分中的页面,然后使用REGEX代码从productImage中获取URL。
由于
答案 0 :(得分:3)
不,你需要帮助的是处理标记语言,正则表达式就像用螺丝刀敲钉一样。
换句话说,你可以让它发挥作用,但要抓住所有边缘情况需要付出相当大的努力。
我的建议是使用XML处理工具,其选择取决于您正在使用的语言和环境。
答案 1 :(得分:1)
你应该真的使用XPath代替。将文档加载到框架提供的支持XPath的任何容器中,并发出以下查询:
//div[@class='ProductBundle']//img/@src
结果将是您需要的字符串列表。
答案 2 :(得分:1)
考虑: RegEx match open tags except XHTML self-contained tags
编辑以添加有用的内容: 那就是说,这很脆弱,但应该有用......
获取.html网址的Perl:
$/ = undef; # read multiline
$in = <>; # read file provided on command line
while ($in =~ s/<div class='productBundle'.*?<a href=\"(.*?html)//sm) {
print "$1\n";
}
用于抓取.jpg网址的Perl:
$/ = undef; # read multiline
$in = <>; # read file provided on command line
while ($in =~ s/<img id='productImage'.*?src='(.*?jpg)//sm) {
print "$1\n";
}
.*?
表示匹配0个或多个字符不贪心,这意味着它只会匹配第一个出现后的任何内容。最后的/sm
修饰符告诉perl .
也应该匹配换行符(默认情况下它不匹配)并且输入是多行的。
答案 3 :(得分:0)
HTML Parser,它生成XML表示+ XPATH。
//div[@class='productBundle']//a/@href
查找HREF。 //img/@src
进行响应。答案 4 :(得分:0)
这就是诀窍。
“HTTP:\ / \ / listing.com \ /产物+([^” “])* HTML”