Экстрактор ссылки Scrapy по значению HTML-тега - PullRequest
0 голосов
/ 05 июня 2019

Я использую scrapy для очистки политик конфиденциальности, сканируя веб-сайт с его домашней страницы как таковой, и хочу интеллектуально сканировать конкретные ссылки на страницах, содержащих конкретные ключевые слова (конфиденциальность, данные, защита и т. Д.).

Я видел, что CrawlSpider и объект LinkExtractor в scrapy позволяют именно это, однако я бы хотел, чтобы LinkExtractor не только применял регулярное выражение к обнаруженным ссылкам, но и к текст в тегах <a></a>

Чтобы, например, лучше определить случаи, подобные этим:

<a href="http://example.com/legal">Check out our privacy policy</a>

В котором URL-адрес может быть не совсем подходящим, но текст в тегах HTML более полезен.

Я видел, что объект LinkExtractor scrapy уже имеет аргумент под названием process_value, который может запустить операцию над текстом в теге HTML, но я не уверен, как я мог бы "вернуть совпадение с положительной ссылкой" (как выражение регулярного выражения) указывается в параметре allow) и, таким образом, «добавляет эту ссылку в список объектов для анализа объектом CrawlSpider»

1 Ответ

0 голосов
/ 07 июня 2019

Вы сможете сделать это в Scrapy 1.7.0 или позже. См # 3635 .

Изменения добавляют параметр restrict_text к LinkExtractor. Из ветки master документации Scrapy по LinkExtractor :

restrict_text ( регулярное выражение (или список)) ) - одно регулярное выражение (или список регулярных выражений), которому должен соответствовать текст ссылки, чтобы быть извлеченным. Если не указан (или пуст), он будет соответствовать всем ссылкам. Если указан список регулярных выражений, ссылка будет извлечена, если она соответствует хотя бы одному.

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