Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我如何设计我的正则表达式脚本来刮取一个非常特定的属性,比如颜色?_Python - Fatal编程技术网

Python 我如何设计我的正则表达式脚本来刮取一个非常特定的属性,比如颜色?

Python 我如何设计我的正则表达式脚本来刮取一个非常特定的属性,比如颜色?,python,Python,这个周末我在练习写脚本。我的方法是调整我以前使用过的刮板,从刮板搜索股票“价格”到刮板搜索属性:网站中使用的颜色。我研究过库和工具,比如lxml和BeautifulSoup,并尝试过一些调试,但我不太清楚 目标:返回网站上使用的所有颜色的列表 这是我写的: import urllib import re url="https://cloud.google.com/edu" htmlfile = urllib.urlopen(url) htmlsource = htmlfile.read()

这个周末我在练习写脚本。我的方法是调整我以前使用过的刮板,从刮板搜索股票“价格”到刮板搜索属性:网站中使用的颜色。我研究过库和工具,比如lxml和BeautifulSoup,并尝试过一些调试,但我不太清楚

目标:返回网站上使用的所有颜色的列表

这是我写的:

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)
打印“颜色”,颜色
我不断得到的回报是:color

regex='
将捕获与
'

如果您查看要刮取的页面的源代码(查看源代码:),并使用浏览器(ctrl+f)进行搜索,您会注意到字符串
'
在任何地方都不存在

如果您想获取该页面上使用的颜色,则必须检索基本如下所示的样式子字符串:

  • 颜色:#xxx
  • 颜色:rgba(x,x,x,x)
  • 但这些可能略有不同:

    • 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和子字符串匹配。谢谢