Как очистить определенный текст независимо от того, какие теги он содержит в использовании scrapy - PullRequest
0 голосов
/ 18 марта 2019

Я пытаюсь очистить несколько сайтов, чтобы найти, присутствует ли определенный фрагмент кода.Большую часть времени скребок работает отлично, как и предполагалось.

Я использую следующий метод для поиска нужного мне кода:

...
item["foo"] = response.xpath("//script[contains(text(), 'fooscript')]")

...
if len(item["foo"]) != 0:
    doStuff()

Однако моя проблема заключается в следующем: иногда то, что я хочу найти, не в самом скрипте, а в качестве источника для скрипта (я тоже знаю, как это обработать), а иногда, когда используется JQuery, я не могу получить правильные результаты чистки.

Итак, мой вопрос: есть ли более простой способ просмотреть необработанный текст HTML / JS, чтобы найти соответствие тому, что я ищу?Попытка просмотреть все альтернативные варианты быстро разложит код, и мне нужно только увидеть, присутствует ли этот определенный текст.Я не нашел подходящего метода в официальной документации по скрапингу (хотя я все еще немного неопытен с этим инструментом, поэтому, возможно, я его пропустил), поэтому, если у кого-то есть решение для этого, оно будет очень признательно.

1 Ответ

0 голосов
/ 18 марта 2019

Может быть, вы ищете простой регулярный поиск по HTML-источнику? Что-то вроде

if re.search(r'fooscript', response.text):
    doStuff()

Или, если вы просто знаете, что он заключен в какой-то элемент, и просто не знаете, какой, вы можете сделать

item["foo"] = response.xpath("//*[contains(text(), 'fooscript')]")

Кроме того, вам не нужно использовать len для проверки результата, просто

if item["foo"]:
    doStuff()

достаточно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...