正则表达式,只抓取带有美元符号的项目的图片网址

时间:2018-05-21 03:43:21

标签: python html regex

所以,我知道这听起来有点奇怪,但基本上这是我的HTML示例:

$400 + free shipping</title>
   <link>https://www.dealnews.com/Samsung-50-4-K-HDR-LED-Smart-TV-for-400-free-shipping/17336849.html?iref=rss-dealnews-editors-choice</link>
   <description>&lt;img src='http://c.dlnws.com/image/upload/f_auto,t_large,q_auto/content/vdiy8a75wg8v7bo92dhq'

我只想捕获之前有美元符号的项目的网址,例如在$ ....之后翻译(URL) 目前我的正则表达是这样的:

img src ='([^'] +)'。*

这会抓住每个img src,但是我只想像我之前说的那样在它之前有“$”符号,基本上我不想要任何与这个HTML页面上的产品无关的图像

1 个答案:

答案 0 :(得分:-1)

查看您提供的HTML示例,您的产品图片似乎直接以<description> HTML标记开头。在所需的URL之前直接使用非捕获组需要较少的处理能力(和时间),而不是一直回顾潜在的(但未授予的)$符号。如果您仅为产品使用<description>标记,则此正则表达式将满足您的需求: (?:<description>&lt;img src=')([^']+)

需要考虑的其他事项:

  • 如果您需要检查HTML代码中的多行,请务必添加全局和多行修改器。
  • 如果您需要考虑HTML实体并允许HTML实体与解析的HTML一起使用,请考虑创建一个OR语句以允许它们在您的Regex中使用。例如,要在<代码前使用&lt;img(?:<description>(?:&lt;|<)img src=')([^']+)如果我们考虑到描述标记的开始和结束实体,我们最终还是会这样:(?:(?:&lt;|<)description(?:&gt;|>)(?:&lt;|<)img src=')([^']+)