我使用Regex从selenium.webDriver
的网页上的搜索框中检索某些内容。
searchbox = driver.find_element_by_class_name("searchbox")
searchbox_result = re.match(r"^.*(?=(\())", searchbox).group()
只要搜索框返回与Regex匹配的结果,代码就会起作用。但如果搜索框回复字符串"No results"
,我会收到错误:
AttributeError:' NoneType'对象没有属性' group'
如何让脚本处理"No results"
情况?
答案 0 :(得分:8)
我设法找出了这个解决方案,它与忽略group()
因为搜索框回复为"No results"
并且因此与正则表达式不匹配的情况有关。
try:
searchbox_result = re.match("^.*(?=(\())", searchbox.group()
except AttributeError:
searchbox_result = re.match("^.*(?=(\())", searchbox)
或简单地说:
try:
searchbox_result = re.match("^.*(?=(\())", searchbox.group()
except:
searchbox_result = None
答案 1 :(得分:4)
当你这样做时
a1
然后如果未找到匹配项,则会返回None
:
如果字符串与模式不匹配,则返回
a2
;请注意,这与零长度匹配不同。
在应用re.match("^.*(?=(\())", search_result.text)
之前,您应该检查是否有结果:
None