Back-End

22 jan, 2016

Conheça um script verificador de site WordPress em Python

Publicidade

Até o final deste texto, você será capaz de codificar um programa que irá verificar entre uma série de nomes de domínio armazenados em um arquivo de texto quais usam WordPress. Neste programa, vamos escrever o resultado para cada site em uma planilha Google para uso posterior, mas você pode aplicar um código determinado enquanto isso, se for um site WordPress.

Script Python para verificar se determinados sites são WordPress

Abaixo está o programa escrito na linguagem de programação Python que lê um arquivo de texto que armazena os nomes de domínio, um em cada linha, verifica se ele é um site WordPress e grava o status em uma planilha do Google.

from bs4 import BeautifulSoup
import mechanize
import gdata.spreadsheet.service
import datetime
rowdict = {}
rowdict['date'] = str(datetime.date.today())
spread_sheet_id = '1mvebf95F5c_QUCg4Oep_oRkDRe40QRDzVfAzt29Y_QA'
worksheet_id = 'od6'
client = gdata.spreadsheet.service.SpreadsheetsService()
client.debug = True
client.email = "email@domain.com"
client.password = 'password'
client.source = 'iswordpress'
client.ProgrammaticLogin()
br = mechanize.Browser()
br.set_handle_robots(False)
br.addheaders = [("User-agent","Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.13) Gecko/20101206 Ubuntu/10.10 (maverick) Firefox/3.6.13")]
base_url = br.open("http://www.isitwp.com/")
with open('websitesforwpcheck.txt') as f:
    for line in f:
        rowdict['website'] = str(line)
        br.select_form(nr=0)
        br["q"] = str(line)
        isitwp_response = br.submit()
        isitwp_response = isitwp_response.read()
        if "Good news everyone" in a:
            rowdict['iswordpresswebsite'] = "yes"
        else:
            rowdict['iswordpresswebsite'] = "no"
        client.InsertRow(rowdict,spread_sheet_id, worksheet_id)

Explicando o código do Isitwordpresswebsite

Antes de começar, é preciso criar uma planilha com três linhas contendo website, date e isitwordpresswebsite.

  1. Linhas 1 a 4

Estas são as instruções de importação para as bibliotecas que usaremos em nosso programa. Usamos BeautifulSoup para converter a resposta do pedido para um objeto soup. Mechanize é utilizado a fim de pular os códigos para sessions e cookies. Gdata é utilizado para conectar a nossa conta do Google para acessar a planilha que queremos utilizar. Datetime é usado para obter a data atual, no momento da execução do script.

  1. Linha 5

Na linha 5, nós criamos um dicionário vazio, no qual mais tarde criaremos uma key:value para data, nome e status do website (se é WordPress ou não). A planilha Google também aceita um dicionário item/json que é então escrito na planilha. Na linha 6, nós armazenamos a data atual do momento da execução do script em uma chave “date”, que é mais tarde gravada na planilha do Google.

  1. Linhas 7 a 14

Agora, antes de prosseguir, precisamos criar a planilha no Google. Outro passo é dar uma olhada na URL da planilha que criamos. Precisamos do ID da planilha para acessá-la por meio do nosso programa. O ID da planilha é ‘od6’ por padrão. As linhas de 9 a 14 nos conectam à nossa conta do Google para termos acesso à planilha com a qual queremos trabalhar.

  1. Linhas 15 a 18

Na linha 15, utilizamos o método do módulo mechanize para iniciar um browser. A linha 16 serve para ignorar o arquivo robots.txt. A linha 17 adiciona um agente de usuário para o browser. A linha 18 abre o website “isitwp.com”, que iremos utilizar para verificar se um site é WordPress ou não.

  1. Linha 19

A linha 19 abre o arquivo de texto onde temos a lista com os nomes de domínio (um em cada linha).

  1. Linhas 20 a 21

Na linha 20, percorremos as linhas do arquivo onde armazenamos os nomes de domínio. A cada iteração, o nome de domínio na linha atual é armazenado na variável. Na linha 21, criamos um par key:value onde armazenamos o nome de domínio em cada iteração na chave “website”.

  1. Linhas 22 a 30

A linha 22 é uma declaração para selecionar o formulário de índice 0, ou seja, o primeiro formulário presente no site isitwp.com. Agora o valor do nome no seachbox é “q”, que é onde nós armazenamos o nome do domínio antes de enviar o formulário. A linha 24 envia o formulário depois de passar o valor de nome de domínio no br[‘q’] e armazena a resposta na variável isitwp_response. A linha 25 é a resposta completa da página web, armazenada na variável isitwp_response. Na linha 26, iremos verificar se a substring “Good news everyone” está presente na resposta, o que significa que o site é WordPress; senão, não é. A linha 27 faz um par key:value onde a chave “iswordpresswebsite” recebe o valor “sim” se a condição na linha 26 passar, e “não” se a condição falhou. Agora lembre que a chave do dicionário rowdict deve ser o nome da linha da nossa planilha.

Dessa forma, podemos testar se um website é WordPress por uma série de nomes de sites armazenados em um arquivo de texto (um em cada linha). Obrigado pela leitura. Se você tiver dúvidas sobre o artigo ou o código, comente abaixo para que possamos discutir sobre isso.

***

Bhishan Bhandari faz parte do time de colunistas internacionais do iMasters. A tradução do artigo é feita pela redação iMasters, com autorização do autor, e você pode acompanhar o artigo em inglês no link: http://www.thetaranights.com/is-it-a-wordpress-website-checker-script-in-python/