Python 我如何设计我的正则表达式脚本来刮取一个非常特定的属性,比如颜色?
这个周末我在练习写脚本。我的方法是调整我以前使用过的刮板,从刮板搜索股票“价格”到刮板搜索属性:网站中使用的颜色。我研究过库和工具,比如lxml和BeautifulSoup,并尝试过一些调试,但我不太清楚 目标:返回网站上使用的所有颜色的列表 这是我写的:Python 我如何设计我的正则表达式脚本来刮取一个非常特定的属性,比如颜色?,python,Python,这个周末我在练习写脚本。我的方法是调整我以前使用过的刮板,从刮板搜索股票“价格”到刮板搜索属性:网站中使用的颜色。我研究过库和工具,比如lxml和BeautifulSoup,并尝试过一些调试,但我不太清楚 目标:返回网站上使用的所有颜色的列表 这是我写的: import urllib import re url="https://cloud.google.com/edu" htmlfile = urllib.urlopen(url) htmlsource = htmlfile.read()
import urllib
import re
url="https://cloud.google.com/edu"
htmlfile = urllib.urlopen(url)
htmlsource = htmlfile.read()
regex = '<color:#aaa>'
pattern = re.compile(regex)
color = re.findall(pattern, htmlsource)
print "color", color
导入urllib
进口稀土
url=”https://cloud.google.com/edu"
htmlfile=urllib.urlopen(url)
htmlsource=htmlfile.read()
正则表达式=“”
pattern=re.compile(regex)
color=re.findall(模式,htmlsource)
打印“颜色”,颜色
我不断得到的回报是:colorregex='
将捕获与'
如果您查看要刮取的页面的源代码(查看源代码:),并使用浏览器(ctrl+f)进行搜索,您会注意到字符串'
在任何地方都不存在
如果您想获取该页面上使用的颜色,则必须检索基本如下所示的样式子字符串:
- 6位十六进制颜色,而不是3位
- 带有3个参数的rgb,而不是带有4个参数的rgba
- “颜色”不仅仅是“颜色”,而是“其他颜色”
- 子字符串内的随机间距
- 等
'color\:\(?:\d{6}\d{3})
“颜色\:rgba?\(\d+\,\d+\,\d+\)”
我想你可以从后面的事件中去掉子字符串“color:”1)你的“regex”只是一个字符串,所以它只捕获了这些。2) 不要在HTML中使用正则表达式3)这是一个有效的HTML标记还是您正在尝试解析CSS?谢谢,克里克!当我离开这个问题时,我意识到我只包含了一部分而不是整个表达式。我还想知道,我是否应该指定它应该与颜色模糊匹配+几个字符以获得颜色代码?对于您的#3,我在开始查找时使用了“Inspect”函数,并且有链接的CSS包包含我正在查找的颜色引用…所以我想我正在尝试解析CSS!这会改变我的过程吗?谢谢你L.Alvarez!在我寻求更多帮助之前,我将阅读CSS和子字符串匹配。谢谢