Scrapy - Extratores de Link
Descrição
Como o próprio nome indica, extratores de link são os objetos usados para extrair links de páginas da web usando scrapy.http.Responseobjetos. No Scrapy, existem extratores integrados, comoscrapy.linkextractors importar LinkExtractor. Você pode personalizar seu próprio extrator de link de acordo com suas necessidades, implementando uma interface simples.
Cada extrator de link tem um método público chamado extract_linksque inclui um objeto Response e retorna uma lista de objetos scrapy.link.Link. Você pode instanciar os extratores de link apenas uma vez e chamar o método extract_links várias vezes para extrair links com respostas diferentes. O CrawlSpiderclass usa extratores de link com um conjunto de regras cujo objetivo principal é extrair links.
Referência do extrator de link integrado
Normalmente, os extratores de link são agrupados com o Scrapy e são fornecidos no módulo scrapy.linkextractors. Por padrão, o extrator de link será LinkExtractor, que é igual em funcionalidade com 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)
O LxmlLinkExtractor é um extrator de links altamente recomendado, porque tem opções de filtragem úteis e é usado com o HTMLParser robusto do lxml.
Sr. Não | Parâmetro e Descrição |
---|---|
1 | allow (uma expressão regular (ou lista de)) Ele permite uma única expressão ou grupo de expressões que devem corresponder ao url a ser extraído. Se não for mencionado, corresponderá a todos os links. |
2 | deny (uma expressão regular (ou lista de)) Ele bloqueia ou exclui uma única expressão ou grupo de expressões que deve corresponder ao url que não deve ser extraído. Se não for mencionado ou deixado em branco, não eliminará os links indesejados. |
3 | allow_domains (str ou lista) Ele permite uma única string ou lista de strings que deve corresponder aos domínios dos quais os links serão extraídos. |
4 | deny_domains (str ou lista) Ele bloqueia ou exclui uma única string ou lista de strings que deve corresponder aos domínios dos quais os links não devem ser extraídos. |
5 | deny_extensions (Lista) Ele bloqueia a lista de strings com as extensões ao extrair os links. Se não for definido, por padrão será definido como IGNORED_EXTENSIONS, que contém uma lista predefinida no pacote scrapy.linkextractors . |
6 | restrict_xpaths (str ou lista) É uma região de lista XPath de onde os links devem ser extraídos da resposta. Se fornecidos, os links serão extraídos apenas do texto, que é selecionado pelo XPath. |
7 | restrict_css (str ou lista) Ele se comporta de forma semelhante ao parâmetro strict_xpaths que extrairá os links das regiões CSS selecionadas dentro da resposta. |
8 | tags (str ou lista) Uma única tag ou uma lista de tags que devem ser consideradas ao extrair os links. Por padrão, será ('a', 'área'). |
9 | attrs (Lista) Um único atributo ou lista de atributos deve ser considerado ao extrair links. Por padrão, será ('href',). |
10 | canonicalize (boleano) O url extraído é trazido para o formato padrão usando scrapy.utils.url.canonicalize_url . Por padrão, será True. |
11 | unique (boleano) Ele será usado se os links extraídos forem repetidos. |
12 | process_value (cobrável) É uma função que recebe um valor de tags e atributos escaneados. O valor recebido pode ser alterado e devolvido ou então nada será devolvido para rejeitar o link. Se não for usado, por padrão será lambda x: x. |
Exemplo
O código a seguir é usado para extrair os links -
<a href = "javascript:goToPage('../other/page.html'); return false">Link text</a>
A seguinte função de código pode ser usada em process_value -
def process_value(val):
m = re.search("javascript:goToPage\('(.*?)'", val)
if m:
return m.group(1)