【问题标题】:phrase images from webpage coldfusion来自网页coldfusion的短语图像
【发布时间】:2010-05-13 22:19:54
【问题描述】:

我需要从网页源获取图片。

我可以使用 cfhttp 方法 get 并使用 htmleditformat() 从该页面读取 html,现在我需要遍历内容以获取所有图像 url (src)

我可以使用 rematch() 或 refind() 等吗?如果可以,如何使用?

请帮忙!!!!!!

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

【问题讨论】:

  • htmleditformat()?在这种情况下,不要认为此功能对您有任何帮助。

标签: coldfusion html-parsing


【解决方案1】:
【解决方案2】:

这个函数可能会在很多不好的情况下出错,但如果你只需要一些快速而肮脏的东西,它可能会起作用。

<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>

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

【讨论】:

  • 嗯? 如果您要走正则表达式路线(请参阅 Anthony 的回答了解您不应该这样做的原因),您只需要:` `
  • 我之前写过这个函数(在 CF8 之前,因此没有 REMatch),就像我上面提到的,一些快速而肮脏的东西。我不假装它是生产代码 - 显然它不会检查 src= 是否甚至在 img 标签中(或根本不在标签中!) - 但并非所有代码都必须是。
  • Peter Boughton:感谢您提供的代码,它似乎只能获取一个 src attr。如果您可以修改它以列出所有 src ...我将不胜感激。我在循环中添加了#SrcMatches[i]#
    ,假设它将列出所有找到的src。 #SrcMatches[i]#
【解决方案3】:

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

【讨论】:

猜你喜欢
  • 2011-04-27
  • 2010-11-17
  • 2014-03-19
  • 1970-01-01
  • 2016-02-03
  • 2014-11-07
  • 1970-01-01
  • 2018-11-13
  • 1970-01-01
相关资源
最近更新 更多