Поиск определенной строки во всем HTML, используя Beautiful Soup в Scrapy - PullRequest
0 голосов
/ 02 мая 2018

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

find = soup.find('word')
print(find)

Но это дает None, даже если на странице word. Также я попробовал:

find = soup.find_all('word')
print(find)

И это дает только [].

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Попробуйте find = soup.findAll(text="word")

0 голосов
/ 02 мая 2018

Метод find выполняет поиск тега. Поэтому, когда вы делаете soup.find('word'), вы просите BeautifulSoup найти все теги <word></word>. Я думаю, что это не то, что вы хотите.

Есть несколько способов выполнить то, что вы просите. Вы можете использовать модуль re для поиска с помощью регулярного выражения, такого как:

import re

is_present = bool(re.search('word', response.text))

Но вы можете избежать импорта дополнительных модулей, так как используете Scrapy, в которой есть встроенные методы для работы с регулярными выражениями. Просто используйте метод re на селекторе:

is_present = bool(response.xpath('//body').re('word'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...