Учебники

Scrapy — экстракторы ссылок

Как указывает само название, экстракторы ссылок — это объекты, которые используются для извлечения ссылок с веб-страниц с использованием объектов scrapy.http.Response . В Scrapy есть встроенные экстракторы, такие как scrapy.linkextractors import LinkExtractor . Вы можете настроить свой собственный экстрактор ссылок в соответствии с вашими потребностями, реализовав простой интерфейс.

Каждый экстрактор ссылок имеет открытый метод extract_links, который включает в себя объект Response и возвращает список объектов scrapy.link.Link. Вы можете создавать экземпляры экстракторов ссылок только один раз и вызывать метод extract_links несколько раз, чтобы извлечь ссылки с разными ответами. CrawlSpiderclass использует экстракторы ссылок с набором правил, основной целью которых является извлечение ссылок.

Справочник по встроенным ссылкам

Обычно экстракторы ссылок сгруппированы с Scrapy и представлены в модуле scrapy.linkextractors. По умолчанию экстрактором ссылки будет LinkExtractor, который по функциональности равен LxmlLinkExtractor —

from scrapy.linkextractors import LinkExtractor

LxmlLinkExtractor

class scrapy.linkextractors.lxmlhtml.LxmlLinkExtractor(allow = (), deny = (), 
   allow_domains = (), deny_domains = (), deny_extensions = None, restrict_xpaths = (), 
   restrict_css = (), tags = ('a', 'area'), attrs = ('href', ), 
   canonicalize = True, unique = True, process_value = None)

LxmlLinkExtractor — это настоятельно рекомендуемый экстрактор ссылок, поскольку он имеет удобные параметры фильтрации и используется с надежным HTMLParser от lxml.

Sr.No Параметр и описание
1

разрешить (регулярное выражение (или список))

Это позволяет отдельное выражение или группу выражений, которые должны соответствовать URL, который должен быть извлечен. Если это не упомянуто, это будет соответствовать всем ссылкам.

2

отказать (регулярное выражение (или список))

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

3

allow_domains (str или list)

Это позволяет одну строку или список строк, которые должны соответствовать доменам, из которых должны быть извлечены ссылки.

4

deny_domains (ул или список)

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

5

deny_extensions (список)

Он блокирует список строк с расширениями при извлечении ссылок. Если он не установлен, то по умолчанию будет установлено значение IGNORED_EXTENSIONS, которое содержит предопределенный список в пакете scrapy.linkextractors .

6

restrict_xpaths (str или list)

Это область списка XPath, из которой ссылки должны быть извлечены из ответа. Если дано, ссылки будут извлечены только из текста, выбранного XPath.

7

restrict_css (str или list)

Он ведет себя подобно параметру restrict_xpaths, который извлекает ссылки из выделенных областей CSS внутри ответа.

8

теги (ул или список)

Отдельный тег или список тегов, которые следует учитывать при извлечении ссылок. По умолчанию это будет (‘a’, ‘area’).

9

attrs (список)

Отдельный атрибут или список атрибутов должны учитываться при извлечении ссылок. По умолчанию это будет (‘href’,).

10

канонизировать (булево)

Извлеченный URL-адрес приводится в стандартную форму с помощью scrapy.utils.url.canonicalize_url . По умолчанию это будет True.

11

уникальный (логический)

Он будет использоваться, если извлеченные ссылки будут повторяться.

12

process_value (вызываемый)

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

разрешить (регулярное выражение (или список))

Это позволяет отдельное выражение или группу выражений, которые должны соответствовать URL, который должен быть извлечен. Если это не упомянуто, это будет соответствовать всем ссылкам.

отказать (регулярное выражение (или список))

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

allow_domains (str или list)

Это позволяет одну строку или список строк, которые должны соответствовать доменам, из которых должны быть извлечены ссылки.

deny_domains (ул или список)

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

deny_extensions (список)

Он блокирует список строк с расширениями при извлечении ссылок. Если он не установлен, то по умолчанию будет установлено значение IGNORED_EXTENSIONS, которое содержит предопределенный список в пакете scrapy.linkextractors .

restrict_xpaths (str или list)

Это область списка XPath, из которой ссылки должны быть извлечены из ответа. Если дано, ссылки будут извлечены только из текста, выбранного XPath.

restrict_css (str или list)

Он ведет себя подобно параметру restrict_xpaths, который извлекает ссылки из выделенных областей CSS внутри ответа.

теги (ул или список)

Отдельный тег или список тегов, которые следует учитывать при извлечении ссылок. По умолчанию это будет (‘a’, ‘area’).

attrs (список)

Отдельный атрибут или список атрибутов должны учитываться при извлечении ссылок. По умолчанию это будет (‘href’,).

канонизировать (булево)

Извлеченный URL-адрес приводится в стандартную форму с помощью scrapy.utils.url.canonicalize_url . По умолчанию это будет True.

уникальный (логический)

Он будет использоваться, если извлеченные ссылки будут повторяться.

process_value (вызываемый)

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

пример

Следующий код используется для извлечения ссылок —

<a href = "javascript:goToPage('../other/page.html'); return false">Link text</a>

Следующая функция кода может использоваться в process_value —