pegando o nome já;
agora falta data
#author: Maria Beatriz Vaz
import urlparse
import urllib
import codecs
from bs4 import BeautifulSoup
import psycopg2
import sys
try:
conn = psycopg2.connect("dbname='tweet_ic' user='postgres' host='localhost' port='5432' password='8001007'")
print "Connected to database"
except:
print "I am unable to connect to the database"
cur=conn.cursor()
urls = ["https://twitter.com/search?q=%23marcocivil%20since%3A2014-02-03%20until%3A2014-05-23&src=typd"]
visited = [urls[0]]
while len(urls) > 0:
try:
htmltext = urllib.urlopen(urls[0]).read()
except:
print urls[0]
soup = BeautifulSoup(htmltext)
#print soup.get_text().encode("utf-8")
visited.append(urls[0])
tweets = []
names = []
i = 0
for tag in soup.findAll('div', { "class" : "content" }) :
for tweet in tag.findAll('p', {"class" : "js-tweet-text tweet-text"}):
tweet_text = tweet.get_text().encode("utf-8")
tweets.insert(0,tweet_text)
for name in tag.findAll ('strong', {"class" : "fullname js-action-profile-name show-popup-with-id"}):
name_text = name.get_text().encode("utf-8")
names.insert(0,name_text)
i=i+1
print 'chegou'
while i>=0:
try:
print 'name: ' + names[i-1] + ' - tweet: ' + tweets[i-1]
cur.execute(""" INSERT INTO teste_old (name , tweet) VALUES ( %(name)s, %(tweet)s )""", ({ "name" : names[i-1] , "tweet" : tweets[i-1]}))
conn.commit()
except Exception as inst:
conn.rollback()
print 'Igual'
i=i-1
print ">>>visitou: " + urls[0]
urls.pop(0)
if conn:
conn.close()
quarta-feira, 25 de fevereiro de 2015
crawler (python)
#author: Maria Beatriz Vaz
import urlparse
import urllib
import codecs
from bs4 import BeautifulSoup
import psycopg2
import sys
try:
conn = psycopg2.connect("dbname='tweet_ic' user='postgres' host='localhost' port='5432' password='8001007'")
print "Connected to database"
except:
print "I am unable to connect to the database"
cur=conn.cursor()
urls = ["https://twitter.com/search?q=%23marcocivil%20since%3A2014-02-03%20until%3A2014-05-23&src=typd"]
visited = [urls[0]]
while len(urls) > 0:
try:
htmltext = urllib.urlopen(urls[0]).read()
except:
print urls[0]
soup = BeautifulSoup(htmltext)
print soup.get_text().encode("utf-8")
visited.append(urls[0])
for tag in soup.findAll('div', { "class" : "content" }) :
for tweet in tag.findAll('p', {"class" : "js-tweet-text tweet-text"}):
print ">>>>nova tag"
tweet_text = tweet.get_text().encode("utf-8")
print tweet_text
cur.execute(""" INSERT INTO teste_old (tweets) VALUES (%(tweets)s)""", ({"tweets" : tweet.get_text().encode("utf-8")}))
conn.commit()
print ">>>visitou: " + urls[0]
urls.pop(0)
if conn:
conn.close()
Já consigo pegar o texto de tweets de uma determinada página. Agora preciso pegar, pelo menos, o usuário e a data daquele tweet.
Preciso saber também como faz para o programa descer a página.
Com o site de pesquisa https://twitter.com/search?q=%23marcocivil%20since%3A2014-02-03%20until%3A2014-05-23&src=typd
só capturei 19 tweets, ´pois é o que aparece até abaixarmos mais a tela.
import urlparse
import urllib
import codecs
from bs4 import BeautifulSoup
import psycopg2
import sys
try:
conn = psycopg2.connect("dbname='tweet_ic' user='postgres' host='localhost' port='5432' password='8001007'")
print "Connected to database"
except:
print "I am unable to connect to the database"
cur=conn.cursor()
urls = ["https://twitter.com/search?q=%23marcocivil%20since%3A2014-02-03%20until%3A2014-05-23&src=typd"]
visited = [urls[0]]
while len(urls) > 0:
try:
htmltext = urllib.urlopen(urls[0]).read()
except:
print urls[0]
soup = BeautifulSoup(htmltext)
print soup.get_text().encode("utf-8")
visited.append(urls[0])
for tag in soup.findAll('div', { "class" : "content" }) :
for tweet in tag.findAll('p', {"class" : "js-tweet-text tweet-text"}):
print ">>>>nova tag"
tweet_text = tweet.get_text().encode("utf-8")
print tweet_text
cur.execute(""" INSERT INTO teste_old (tweets) VALUES (%(tweets)s)""", ({"tweets" : tweet.get_text().encode("utf-8")}))
conn.commit()
print ">>>visitou: " + urls[0]
urls.pop(0)
if conn:
conn.close()
Já consigo pegar o texto de tweets de uma determinada página. Agora preciso pegar, pelo menos, o usuário e a data daquele tweet.
Preciso saber também como faz para o programa descer a página.
Com o site de pesquisa https://twitter.com/search?q=%23marcocivil%20since%3A2014-02-03%20until%3A2014-05-23&src=typd
só capturei 19 tweets, ´pois é o que aparece até abaixarmos mais a tela.
quinta-feira, 19 de fevereiro de 2015
data scraping
Baseando em um programa em java que realiza um scrapping da sites de notícias, tentarei realizar um scraping do twitter para coletar dados que a api não fornece.
terça-feira, 10 de fevereiro de 2015
Cassandra
>>http://www.ibm.com/developerworks/br/library/os-apache-cassandra/
Registrando o vídeo dessa palestra sobre cassandra. Muito bom!
https://www.youtube.com/watch?v=B_HTdrTgGNs
Cassandra é uma implementação de família de colunas NoSQL que suporta o modelo de dados Big Table e usa aspectos de arquitetura introduzidos por Amazon Dynamo (como visto no vídeo, é um papper que fala sobre noSQL. Um dos primeiros pappers sobre o assunto. Até hoje se baseiam em suas idéias para bancos nosql).
A Figura mostra a arquitetura de um cluster do Cassandra. A primeira observação é que o Cassandra é um sistema distribuído. O Cassandra consiste em vários nós e distribui os dados entre eles (ou divide-os em shards, na terminologia de bancos de dados).
O Cassandra usa hashing consistente para designar itens de dados a nós. Em termos simples, o Cassandra usa um algoritmo hash para calcular o hash de chaves de cada item de dados armazenado nele (por exemplo, nome de coluna, ID de linha). O intervalo de hash, ou todos os valores de hash possíveis (também chamado de keyspace), é dividido entre os nós no cluster do Cassandra. Em seguida, o Cassandra designa cada item de dados ao nó, e esse nó é responsável por armazenar e gerenciar o item de dados.
alguns pontos:
- O Cassandra distribui dados entre seus nós de forma transparente para o usuário. Qualquer nó pode aceitar qualquer solicitação (leitura, gravação ou exclusão) e encaminhá-la ao nó correto, mesmo que os dados não estejam armazenados nesse nó.
- Os usuários podem definir quantas réplicas são necessárias, e o Cassandra cuida da criação e gerenciamento de réplicas de forma transparente.
- Consistência ajustável: ao armazenar e ler dados, os usuários podem escolher o nível de consistência esperado em cada operação. Por exemplo, quando o nível de consistência "quorum" é usado ao gravar ou ler, os dados são gravados e lidos em mais de metade
dos nós no cluster. O suporte a consistência ajustável permite que os usuários escolham o melhor nível de consistência para o caso de uso
- O Cassandra fornece gravações muito rápidas (até mesmo mais rápidas que as leituras), transferindo dados a cerca de 80-360 MB/s por nó.
O cassandra se baseia em nós. Cada nó é totalmente independente. Os dados são dividos nesses nós.
Há também cópia de dados do nó onde foi armazenado para outros nós. Isso permite total constância, evitando erros. Como dito na palestra, devemos admitir que sempre haverá erros para saber como lidar e evitar que isso nos atrapalhe. Então, se um servidor (nó) sair do ar, haverá o dado em outro servidor, não gerando danos no banco.
Essa vantagem também permite manutenção do banco sem precisar tirá-lo do ar.
Registrando o vídeo dessa palestra sobre cassandra. Muito bom!
https://www.youtube.com/watch?v=B_HTdrTgGNs
Cassandra é uma implementação de família de colunas NoSQL que suporta o modelo de dados Big Table e usa aspectos de arquitetura introduzidos por Amazon Dynamo (como visto no vídeo, é um papper que fala sobre noSQL. Um dos primeiros pappers sobre o assunto. Até hoje se baseiam em suas idéias para bancos nosql).
A Figura mostra a arquitetura de um cluster do Cassandra. A primeira observação é que o Cassandra é um sistema distribuído. O Cassandra consiste em vários nós e distribui os dados entre eles (ou divide-os em shards, na terminologia de bancos de dados).
O Cassandra usa hashing consistente para designar itens de dados a nós. Em termos simples, o Cassandra usa um algoritmo hash para calcular o hash de chaves de cada item de dados armazenado nele (por exemplo, nome de coluna, ID de linha). O intervalo de hash, ou todos os valores de hash possíveis (também chamado de keyspace), é dividido entre os nós no cluster do Cassandra. Em seguida, o Cassandra designa cada item de dados ao nó, e esse nó é responsável por armazenar e gerenciar o item de dados.
alguns pontos:
- O Cassandra distribui dados entre seus nós de forma transparente para o usuário. Qualquer nó pode aceitar qualquer solicitação (leitura, gravação ou exclusão) e encaminhá-la ao nó correto, mesmo que os dados não estejam armazenados nesse nó.
- Os usuários podem definir quantas réplicas são necessárias, e o Cassandra cuida da criação e gerenciamento de réplicas de forma transparente.
- Consistência ajustável: ao armazenar e ler dados, os usuários podem escolher o nível de consistência esperado em cada operação. Por exemplo, quando o nível de consistência "quorum" é usado ao gravar ou ler, os dados são gravados e lidos em mais de metade
dos nós no cluster. O suporte a consistência ajustável permite que os usuários escolham o melhor nível de consistência para o caso de uso
- O Cassandra fornece gravações muito rápidas (até mesmo mais rápidas que as leituras), transferindo dados a cerca de 80-360 MB/s por nó.
O cassandra se baseia em nós. Cada nó é totalmente independente. Os dados são dividos nesses nós.
Há também cópia de dados do nó onde foi armazenado para outros nós. Isso permite total constância, evitando erros. Como dito na palestra, devemos admitir que sempre haverá erros para saber como lidar e evitar que isso nos atrapalhe. Então, se um servidor (nó) sair do ar, haverá o dado em outro servidor, não gerando danos no banco.
Essa vantagem também permite manutenção do banco sem precisar tirá-lo do ar.
segunda-feira, 9 de fevereiro de 2015
Instalanda Apache Cassandra Database
Na última reunião foi decidido que iriamos realizar a comparação entre 3 bancos de dados. 1 slq e 2 nosql (mongodb e cassandra)
MongoDB já foi instalado e o passo agora é instalar o Cassandra.
Próximo passo é tentar ligar esses bancos com a api do twitter para recolher os dados em python e ver algumas interfaces alternativas que facilitam o trabalho em comparação a trabalhar com o terminal
MongoDB já foi instalado e o passo agora é instalar o Cassandra.
Próximo passo é tentar ligar esses bancos com a api do twitter para recolher os dados em python e ver algumas interfaces alternativas que facilitam o trabalho em comparação a trabalhar com o terminal
Assinar:
Postagens (Atom)