2010-05-13 41 views
3

我需要从网页源获取图像。来自网页coldfusion的短语图像

我可以使用CFHTTP方法获取和使用htmleditformat()来读取该页面的HTML,现在我需要遍历的内容,以获取所有图像的URL(SRC)

我可以用复赛()或refind()等...如果是的话怎么样?

请帮忙!!!!!

如果我不是清楚,我可以尝试澄清..

+1

htmleditformat()?不要以为这个功能在任何情况下都能帮助你。 – Henry 2010-05-14 04:51:35

回答

1

这里有可能会绊倒在了很多不好的情况下的功能,但如果你只是需要一些快速和肮脏的可能工作。

<cffunction name="getSrcAttributes" access="public" output="No"> 
    <cfargument name="pageContents" required="Yes" type="string" default="" /> 

    <cfset var continueSearch = true /> 
    <cfset var cursor = "" /> 
    <cfset var startPos = 0 /> 
    <cfset var finalPos = 0 /> 
    <cfset var images = ArrayNew(1) /> 

    <cfloop condition="continueSearch eq true"> 
     <cfset cursor = REFindNoCase("src\=?[\""\']", arguments.pageContents, startPos, true) /> 

     <cfif cursor.pos[1] neq 0> 
      <cfset startPos = (cursor.pos[1] + cursor.len[1]) /> 
      <cfset finalPos = REFindNoCase("[\""\'\s]", arguments.pageContents, startPos) /> 
      <cfset imgSrc = Mid(arguments.pageContents, startPos, finalPos - startPos) /> 

      <cfset ArrayAppend(images, imgSrc) /> 
     <cfelse> 
      <cfset continueSearch = false /> 
     </cfif> 
    </cfloop> 

    <cfreturn images> 
</cffunction> 

注意:目前无法验证此代码是否有效。

+1

咦? *如果*你打算在正则表达式的路线(见安东尼的答案,为什么你不应该),你只是想: \t' \t <---信息:抢东西类似的src属性:---> \t \t <!--- INFO :清理前面的匹配(删除src =“部分)---> \t \t \t \t \t' – 2010-05-14 14:19:58

+0

'我已经写了这个函数(CF8之前,因此没有REMatch),就像我上面提到的那样,快速和肮脏。我不假装它是生产代码 - 显然它不检查src =是否在img标签中(或者在标签中) - 但并非所有的代码都必须是。 – Soldarnal 2010-05-14 16:22:09

+0

彼得Boughton:感谢代码它似乎只拿到一个src attr。如果你可以修改它列出所有的src ...我将不胜感激。 我在循环中添加了#SrcMatches [i]#
,假设它会列出找到的所有src。 <!--- INFO: (src =“part”)---> #SrcMatches [i]#
loo 2010-05-14 17:22:53

1

使用浏览器和jQuery为“查询”出从DOM所有img标签可能会更容易...

+0

http://github.com/chrsan/css-selectors/tree – 2010-05-14 14:10:54