Не могу найти комбинацию ключевых слов втег в XML - PullRequest
0 голосов
/ 11 декабря 2018

Я хочу найти тег <loc>, в котором присутствуют два ключевых слова. Например, я хочу найти тег <loc>, который включает в себя 'Yankee' AND 'duck'.Код ниже:

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('image:title', text=re.compile(keyword1 + keyword2)).text
            return keywordLink
        except AttributeError:
            print("Product not found on site, retrying...")
            time.sleep(monitorDelay)
            self.driver.refresh()
        break

А вот XML, который я пытаюсь получить:

<url>
<loc>
  https://packershoes.com/products/copy-of-382-packer-x-new-era-new-york-yankee-duck-canvas-1
</loc>
<lastmod>2018-12-06T14:39:37-05:00</lastmod>
<changefreq>daily</changefreq>
<image:image>
<image:title>
  NEW ERA JAPAN 59FIFTY NEW YORK YANKEES "DUCK CANVAS"
</image:title>
</image:image>
</url>

1 Ответ

0 голосов
/ 12 декабря 2018

Я бы сделал это в функции поиска , так как она дает вам «больше» контроля над условиями поиска:

def desired_tags(tag):
    text = tag.get_text()

    return tag.name == 'image:title' and \
           'Yankee' in text and 'duck' in text

results = soup.find_all(desired_tags)
...