python проверяет, совпадает ли какая-либо из проанализированных строк с массивом

#python #scrapy

#python #scrapy

Вопрос:

я очищаю веб-сайт и хочу очистить только тот контент, который содержит определенные ключевые слова.

например, ключевое слово = [«собака», «обезьяна», «кошка», «лев»] пока я просматриваю веб-сайт, если в содержимом есть какое-либо ключевое слово, я очищаю.

итак, что я сделал, так это:

 descrs = response.xpath('string(//*[@class="...st-content post__content--new-editor"])').extract()

descr = ""
parseDes = descrs.split(" ")
if descrs in keyword:
        for c in descrs:
                c = re.sub(r"[u00a0tn] ", "", c)
                c = re.sub("ss ", " ", c)
                c = re.sub(r"[u2019]", ''', c)
                descr = descr   c
        curr_post["url"] = response.url
        curr_post["title"] = title
        curr_post["id"] = id
        curr_post["date"] = date_time
        curr_post["Issue description"] = descr
       
 

однако это дает мне дублированный контент.
как мне переместить цикл к следующему, как только он найдет какое-либо из ключевых слов??

Спасибо!!

Комментарии:

1. чтобы избавиться от дубликатов, самый простой способ — использовать set

Ответ №1:

однако это дает мне дублированный контент.

Сложно интерпретировать ваш вопрос, потому что

  • idk что descrs такое
  • idk, как вы ожидаете descrs in keyword работать, почему бы и нет any(k in descrs for k in keyword) или keyword in descrs , по крайней мере,
  • что вы получили (переменная / печать / комментарий / любой признак того, что не так)
  • чего вы ожидали (переменная / печать / комментарий / что угодно)

Похоже, что вы получаете одну и ту же страницу несколько раз при циклическом переборе ключевых слов, но вы предоставили только кучу кода без каких-либо признаков этого цикла.

как мне переместить цикл к следующему, как только он найдет какое-либо из ключевых слов??

Единственное, о чем я могу догадаться, это то, что continue ключевое слово похоже на то, что вы ищете.