我在经典asp中使用以下表达式,成功抓取任何带有.jpg和.png后缀的图像标记。
re.Pattern = " ]*src=[""'][^ >]*(jpg|png)[""']"
我发现的问题是我需要使用的许多网站实际上并没有使用后缀。所以,我需要新的正则表达式来找到一个图像标记并抓取src属性中的任何内容。
这听起来很简单,如果没有自己编写,那么在Classic ASP中找到一个正则表达式来实现这一点似乎是不可能的(这是不可能的)。
请告知。
答案 0 :(得分:3)
要明确匹配img src
你可以做的事情:
\<img src\=\"(\w+\.(gif|jpg|png)\")
然后,如果你只想要img src
中的值,你可以匹配任何以图片扩展名结尾的引号(但这可能会让你误报,这取决于你想):
\w+\.(gif|jpg|png)
但是为了确保它跟随img src
而只匹配该值,你需要一个负面的预测来做到这一点(注意我在那里添加了一个匹配的组):
(?!.*\<img src\=\")(\w+\.(gif|jpg|png))
现在要包含在图片源中添加图片链接的可能性:
(?!.*\<img src\=\")([\/\.\-\:\w]+\.(gif|jpg|png)?[\?\w+\%]+)
然后让我们通过修复(gif|jpg|png)
之后的懒惰量词并将其移动到下一组之后(与JS链接中可能获得的数据相匹配等)来消除我们得到的误报。并确保我们有一个结束语:
(?!.*\<img src\=\")([\/\.\-\:\w]+\.(gif|jpg|png)([\?\w+\%]+)?)(?=\")
注意:这将匹配此数据,但正则表达式不会解析 HTML,我个人不建议使用正则表达式来查看HTML数据,除非您&#39 ;根据具体情况再做一次。如果您想通过脚本进行一些URL /图像抓取,请查看XML / HTML解析器。
示例数据:
<a href="myfile.htm"><img src="picture.gif"></a>
<a href="index.htm"><img src="pic859.jpg"></a>
<a href="page-57.htm"><img src="859.png"></a>
<img id="test1" class="answer1" src="text.jpg">
<img src="http://media.site.com/media/img/staff/2013/ROTHBARD-350_s90x126.jpg?e3e29f4a7131cd3bc7c4bf334be801215db5e3c2%22%3E">
<img src="yahoo.com/images/imagename.gif">