Ferramentas para capturar e converter a Web

API do raspador da Web para Python API do raspador Python

Em primeiro lugar baixar a API do raspador da Web para Python e observe o manipulador de exemplo localizado dentro para começar.

Processar dados raspados

A maneira mais fácil de processar dados raspados é acessar os dados como um objeto JSON ou XML, pois isso permite que os dados sejam facilmente manipulados e consultados. O JSON será estruturado no seguinte formato geral com o nome do conjunto de dados como atributo do objeto, contendo ele próprio uma matriz de objetos com cada nome de coluna como outro atributo.

{
  "Dataset_Name": [
    {
      "Column_One": "https://grabz.it/",
      "Column_Two": "Found"
    },
    {
      "Column_One": "http://dfadsdsa.com/",
      "Column_Two": "Missing"
    }]
}

Antes de tudo, deve-se lembrar que o manipulador receberá todos os dados raspados, que podem incluir dados que não podem ser convertidos em objetos JSON ou XML. Portanto, o tipo de dados que você está recebendo deve ser verificado antes de ser processado.

scrapeResult = ScrapeResult.ScrapeResult()

if scrapeResult.getExtension() == 'json':
    json = scrapeResult.toJSON()
    for json["Dataset_Name"] in obj:
        if obj["Column_Two"] == "Found":
            #do something
        else:
            #do something else
else:
    #probably a binary file etc save it
    scrapeResult.save("results/"+scrapeResult.getFilename())

O exemplo acima mostra como percorrer todos os resultados do conjunto de dados Dataset_Name e executar ações específicas, dependendo do valor do Column_Two atributo. Além disso, se o arquivo recebido pelo manipulador não for um arquivo JSON, será apenas saved para o diretório de resultados. Enquanto a classe ScrapeResult tenta garantir que todos os arquivos publicados sejam originários dos servidores do GrabzIt, a extensão dos arquivos também deve ser verificada antes de serem saved.

Métodos ScrapeResult

Listados abaixo estão todos os métodos da classe ScrapeResult que podem ser usados ​​para processar resultados de raspagem.

  • string getExtension() - obtém a extensão de qualquer arquivo resultante da raspagem.
  • string getFilename() - obtém o nome do arquivo de qualquer arquivo resultante da raspagem.
  • object toJSON() - converte qualquer arquivo JSON resultante da raspagem intum objeto.
  • string toString() - converte qualquer arquivo resultante da raspagem em um string.
  • xml.etree.ElementTree toXML() - converte qualquer arquivo XML resultante da raspagem em um elemento XML.
  • boolean save(path) - saves qualquer arquivo resultante da raspagem, retorna verdadeiro se for bem-sucedido.

depuração

A melhor maneira de depurar seu manipulador Python é fazer o download dos resultados de uma raspagem do diretório arranhões na web página, save o arquivo com o qual você está tendo problemas para um local acessível e, em seguida, passe o caminho desse arquivo para o construtor da classe ScrapeResult. Isso permite que você depure seu manipulador sem precisar fazer uma nova limpeza a cada vez, como mostrado abaixo.

scrapeResult = ScrapeResult.ScrapeResult("data.json");

#the rest of your handler code remains the same

Controlando uma raspagem

Com a Web Scraper API do GrabzIt para Python, você pode iniciar, parar, ativar ou desativar remotamente uma raspagem, conforme necessário. Isso é mostrado no exemplo abaixo, onde o ID da raspagem junto com o novo status da raspagem é passado para o SetScrapeStatus método.

client = GrabzItScrapeClient.GrabzItScrapeClient("Sign in to view your Application Key", "Sign in to view your Application Secret")
//Get all of our scrapes
myScrapes = client.GetScrapes()
if (len(myScrapes) == 0)
{
    raise Exception('You have not created any scrapes yet! Create one here: https://grabz.it/scraper/scrape.aspx')
}
//Start the first scrape
client.SetScrapeStatus(myScrapes[0].ID, "Start")
if (len(myScrapes[0].Results) > 0)
{
    //re-send first scrape result if it exists
    client.SendResult(myScrapes[0].ID, myScrapes[0].Results[0].ID);
}

Métodos e propriedades de GrabzItScrapeClient

Listados abaixo estão todos os métodos e propriedades da classe GrabzItScrapeClient que podem ser usados ​​para controlar as raspas de estado.

  • GrabzItScrape[] GetScrapes() - retorna todos os rascunhos dos usuários como uma matriz de objetos GrabzItScrape.
  • GrabzItScrape GetScrape(id) - retorna um objeto GrabzItScrape que representa a raspagem desejada.
  • SetScrapeProperty(id, property) - define o propriedade de um arranhão e retorna verdadeiro se for bem-sucedido.
  • SetScrapeStatus(id, status) - define o status ("Iniciar", "Parar", "Ativar", "Desativar") de uma raspagem e retorna verdadeiro se for bem-sucedido.
  • SendResult(id, resultId) - reenvia o resultado de uma raspagem e retorna verdadeiro se for bem-sucedido.
    • A identificação de raspar e a identificação do resultado podem ser encontradas no método GetScrape.
  • SetLocalProxy(proxyUrl) - define o servidor proxy local a ser usado para todas as solicitações.