正则表达式解析HTML图像

时间:2012-04-27 15:51:55

标签: python regex

我正在浏览HTML页面,我想提取img srcs和a hrefs。

在特定网站上,所有这些都用双引号封装。

我尝试了各种各样的regexp但没有成功。假设双引号内的字符为[ - \ w /](可打印字符[a-zA-Z \ d-_]和/和。)

在python中:

re.search(r'img\s+src="(?P<src>[\w-/]+_"', line)

不返回任何内容,但

re.search(r'img\s+src="(?P[-\w[/]]+)"', line)

返回很多(即,不会停在“)。

我需要帮助创建正确的正则表达式。提前谢谢!

3 个答案:

答案 0 :(得分:6)

  

我需要帮助创建正确的正则表达式。

不,您需要帮助才能找到合适的工具。

尝试BeautifulSoup

(如果坚持使用正则表达式 - 我建议反对它 - 尝试将贪婪的+更改为非贪婪的+?)。

答案 1 :(得分:5)

使用优秀的lxml库和xpath

,这是一个比使用正则表达式更好的方法的示例
In [1]: import lxml.html
In [2]: doc = lxml.html.parse('http://www.google.com/search?q=kittens&tbm=isch')
In [3]: doc.xpath('//img/@src')
Out[3]: 
['/images/nav_logo_hp2.png',
 'http://t1.gstatic.com/images?q=tbn:ANd9GcQhajNZimPGLw9iTfzrAF_HV5UogY-KGep5WYgw-VHZ15oaAwGquNb5Q2I',
 'http://t2.gstatic.com/images?q=tbn:ANd9GcS1LgVIlDgoIfNzwU4xBz9fL32ZJjZU26aB4aynRsEcz2VuXmjCtvxUonM',
 'http://t1.gstatic.com/images?q=tbn:ANd9GcRgouJt5Moe8uTnDPUFTo4csZOcBtEDA_B7WdRPe8pdZroR5QB2q_-LT59G',
 [...]
]

答案 2 :(得分:2)

"([^"]+)"引号内查找内容的好方法。所以你搜索任何字符,但引号之间的引号。

有关创建正则表达式的帮助,我强烈建议使用Expresso(http://www.ultrapico.com/Expresso.htm