我想找到一个标签,其中存在两个关键字。例如,我想要找到一个标签,其中包含出现的“扬基” 和“鸭”。代码如下:
DATE
这是我要获取的xml:
elif len(keywords) == 2:
keyword1 = keywords[0]
keyword2 = keywords[1]
print("Searching for product...")
keywordLinkFound = False
while keywordLinkFound is False:
html = self.driver.page_source
soup = BeautifulSoup(html, 'lxml')
try:
keywordLink = soup.find('loc', text=re.compile(keyword1 + keyword2)).text
return keywordLink
except AttributeError:
print("Product not found on site, retrying...")
time.sleep(monitorDelay)
self.driver.refresh()
break
答案 0 :(得分:0)
keyword1 + keyword2
是字符串yankeeduck
,因此您正在搜索该字符串,当两个单词没有这样连接时,它将不匹配。您需要允许它们之间有任何东西,并以相反的顺序识别它们。因此,正则表达式应为:
yankee.*duck|duck.*yankee
因此,代码应为:
regexp = "%s.*%s|%s.%s"%(keyword1, keyword2, keyword2, keyword1)
keywordLink = soup.find('loc', text=re.compile(regexp)).text
如果关键字包含正则表达式中的特殊字符,则应转义它们:
keyword1 = re.escape(keywords[0])
keyword2 = re.escape(keywords[1])
答案 1 :(得分:0)
好的,谢谢! 因此,代码应该是:
regexp = "%s.*%s|%s.%s"%(keyword1, keyword2, keyword2, keyword1)
keywordLink = soup.find('loc', text=re.compile(regexp)).text
如果关键字包含正则表达式中的特殊字符,您应该将它们转义:
keyword1 = re.escape(keywords[0])
keyword2 = re.escape(keywords[1])