Notícias-Por favor, é um rastreador de notícias de código aberto e fácil de usar que extrai informações estruturadas de quase qualquer site de notícias. Ele pode seguir recursivamente hiperlinks internos e ler feeds RSS para buscar artigos mais recentes e também antigos. Você só precisa fornecer o URL raiz do site de notícias para rastejá -lo completamente. A porção de notícias combina o poder de várias bibliotecas e ferramentas de última geração, como scrapy, jornal e legibilidade.
O Notícias-por favor, também apresenta um modo de biblioteca, que permite que os desenvolvedores do Python usem a funcionalidade de rastreamento e extração em seu próprio programa. Além disso, as notícias por favor permite rastejar e extrair convenientemente artigos do (muito) grande arquivo de notícias em CommonCrawl.org.
Se você deseja contribuir com as notícias, por favor, leia primeiro aqui.
23/03/2021: Se você estiver interessado em classificação de sentimentos em artigos de notícias, confira nosso conjunto de dados em larga escala para obter a classificação de sentimento dependente do alvo. Também publicamos um modelo neural fácil de usar que atinge o desempenho de última geração. Visite o projeto aqui.
01/06/2018: Se você estiver interessado em extração de eventos de notícias, também pode querer conferir nosso novo projeto, Giveme5W1H - uma ferramenta que extrai frases que respondem aos cinco jornalísticos W e One perguntas para descrever o evento principal de um artigo, ou seja, quem fez o que, quando, por que, e como.
Notícias-por favor extrai os seguintes atributos de artigos de notícias. Um arquivo JSON Examplay, conforme extraído por notícias, pode ser encontrado aqui.
A porção de notícias suporta três casos principais de uso, que são explicados com mais detalhes a seguir.
python3 -m newsplease.examples.commoncrawl É super fácil, prometemos!
Notícias-Porta é executada no Python 3.8+.
$ pip install news-pleaseVocê pode acessar a funcionalidade principal das notícias, ou seja, extração de informações semiestruturadas de um ou mais artigos de notícias, em seu próprio código usando notícias-por favor no modo de biblioteca. Se você deseja usar a extração completa do site da notícia (dada apenas o URL da raiz) ou o modo contínuo de rastejamento (usando RSS), você precisará usar o modo CLI, descrito posteriormente.
from newsplease import NewsPlease
article = NewsPlease . from_url ( 'https://www.nytimes.com/2017/02/23/us/politics/cpac-stephen-bannon-reince-priebus.html?hp' )
print ( article . title )Uma amostra de um artigo extraído pode ser encontrado aqui (como um arquivo JSON).
Se você deseja rastejar vários artigos por vez, opcionalmente com qualquer parâmetro opcional tirado por solicitações.request ()
NewsPlease . from_urls ([ url1 , url2 , ...], request_args = { "timeout" : 6 })ou se você tiver um arquivo contendo todos os URLs (cada linha contendo um único URL)
NewsPlease . from_file ( path )ou se você tiver dados HTML bruto (você também pode fornecer o URL original para aumentar a precisão de extrair a data de publicação)
NewsPlease . from_html ( html , url = None )Ou se você tiver um arquivo WARC (também confira nosso fluxo de trabalho CommonCrawl, que fornece métodos convenientes para filtrar o arquivo do CommonCrawl para meios de comunicação e datas específicos)
NewsPlease . from_warc ( warc_record )No modo da biblioteca, as notícias por favor tentarão baixar e extrair informações de cada URL. As funções descritas anteriormente estão bloqueando, ou seja, retornará quando a porção de notícias tiver tentado todos os URLs. A lista resultante contém todos os artigos extraídos com sucesso.
Finalmente, você pode processar as informações extraídas contidas no (s) objeto (s) do artigo. Por exemplo, para exportar para um formato JSON, você pode usar:
import json
with open ( "article.json" , "w" ) as file :
json . dump ( article . get_serializable_dict (), file )$ news-please As notícias por favor começarão a rastejar algumas páginas de exemplos. Para encerrar o processo, pressione CTRL+C . As notícias por favor serão encerradas em 5-60 segundos. Você também pode pressionar CTRL+C duas vezes, o que matará imediatamente o processo (embora não seja recomendado).
Os resultados são armazenados por padrão nos arquivos JSON na pasta de data . Na configuração padrão, as notícias por favor também armazenam os arquivos HTML originais.
Provavelmente, você não deseja se arrastar dos sites fornecidos em nossa configuração de exemplo. Simplesmente vá ao arquivo sitelist.hjson e adicione os URLs da raiz das páginas da web dos meios de comunicação de sua escolha. As notícias por favor também podem extrair os eventos mais recentes do projeto GDELT, veja aqui.
As notícias-por favor, também suportam a exportação para o Elasticsearch. O uso do Elasticsearch também ativará o recurso de versão. Primeiro, habilite -o no config.cfg no diretório de configuração, que é por padrão ~/news-please/config , mas também pode ser alterado com o parâmetro -c para um local personalizado. Caso o diretório não exista, um diretório padrão será criado no local especificado.
[Scrapy]
ITEM_PIPELINES = {
'newsplease.pipeline.pipelines.ArticleMasterExtractor' :100 ,
'newsplease.pipeline.pipelines.ElasticsearchStorage' :350
} É isso! Exceto, se o seu banco de dados Elasticsearch não estiver localizado em http://localhost:9200 , usar um nome de usuário/senha ou autenticação de certificação de Ca. Nesses casos, você também precisará alterar o seguinte.
[Elasticsearch]
host = localhost
port = 9200
...
# Credentials used for authentication (supports CA-certificates):
use_ca_certificates = False # True if authentification needs to be performed
ca_cert_path = '/path/to/cacert.pem'
client_cert_path = '/path/to/client_cert.pem'
client_key_path = '/path/to/client_key.pem'
username = 'root'
secret = 'password' A porção de notícias permite o armazenamento de artigos em um banco de dados PostgreSQL, incluindo o recurso de versão. Para exportar para o PostgreSQL, abra o arquivo de configuração correspondente ( config_lib.cfg para modo de biblioteca e config.cfg para o modo CLI) e adicione o módulo PostgreSqlStorage ao pipeline e ajuste as credenciais do banco de dados:
[Scrapy]
ITEM_PIPELINES = {
'newsplease.pipeline.pipelines.ArticleMasterExtractor' :100 ,
'newsplease.pipeline.pipelines.PostgresqlStorage' :350
}
[Postgresql]
# Postgresql-Connection required for saving meta-informations
host = localhost
port = 5432
database = 'news-please'
# schema = 'news-please'
user = 'user'
password = 'password' Se você planeja usar as notícias por favor e sua exportação para o PostgreSQL em um ambiente de produção, recomendamos desinstalar o pacote psycopg2-binary e instalar psycopg2 . Usamos o primeiro, pois ele não requer um compilador C para ser instalado. Veja aqui, para obter mais informações sobre as diferenças entre psycopg2 e psycopg2-binary e como configurar um ambiente de produção.
A porção de notícias permite armazenar artigos em um banco de dados Redis, incluindo o recurso de versão. Para exportar para Redis, abra o arquivo de configuração correspondente ( config_lib.cfg para modo de biblioteca e config.cfg para o modo CLI) e adicione o módulo RedisStorage ao pipeline e ajuste as credenciais de conexão:
[Scrapy]
ITEM_PIPELINES = {
'newsplease.pipeline.pipelines.ArticleMasterExtractor' :100 ,
'newsplease.pipeline.pipelines.RedisStorage' :350
}
[Redis]
host = localhost
port = 6379
db = 0
# You can add any redis connection parameter here
ssl_check_hostname = True
username = "news-please"
max_connections = 24Este oleoduto também deve ser compatível com a AWS Elasticache e GCP MemoryStore
Coletamos várias informações úteis para usuários e desenvolvedores. Como usuário, você provavelmente lidará apenas com dois arquivos: sitelist.hjson (para definir sites a serem rastreados) e config.cfg (provavelmente apenas raramente, caso você queira ajustar a configuração).
Você pode encontrar mais informações sobre uso e desenvolvimento em nosso wiki! Antes de entrar em contato conosco, confira o wiki. Se você ainda tiver dúvidas sobre como usar as notícias por favor, crie uma nova pergunta em discussões aqui no Github. Por favor, entenda que não somos capazes de fornecer suporte individual por e -mail. Achamos que a ajuda é mais valiosa se for compartilhada publicamente para que mais pessoas possam se beneficiar disso. No entanto, se você ainda precisar de suporte individual, por exemplo, devido à confidencialidade do seu projeto, podemos fornecer consultas particulares. Entre em contato conosco para obter informações sobre preços e mais detalhes.
Para relatórios de bugs, pedimos que você use o modelo de relatório de bugs. Certifique-se de usar a versão mais recente do News-por agradar, pois não podemos apoiar para versões mais antigas. Conforme descrito anteriormente, não podemos apoiar problemas ou perguntas enviadas por e -mail.
Suas doações são muito apreciadas! Eles nos libertarão mais para trabalhar neste projeto, para realizar tarefas como adicionar novos recursos, suporte a correr de bug e abordar outras preocupações com a biblioteca.
Este projeto não teria sido possível sem as contribuições dos seguintes alunos (encomendados em ordem alfabética):
Agradecemos também a todos os outros colaboradores, que você pode encontrar na página dos colaboradores!
Se você estiver usando notícias, cite nosso artigo (Researchgate, Mendeley):
@InProceedings{Hamborg2017,
author = {Hamborg, Felix and Meuschke, Norman and Breitinger, Corinna and Gipp, Bela},
title = {news-please: A Generic News Crawler and Extractor},
year = {2017},
booktitle = {Proceedings of the 15th International Symposium of Information Science},
location = {Berlin},
doi = {10.5281/zenodo.4120316},
pages = {218--223},
month = {March}
}
Você pode encontrar mais informações sobre este e outros projetos de notícias em nosso site.
Você quer contribuir? Ótimo, estamos sempre felizes por qualquer apoio neste projeto! Estamos particularmente procurando solicitações de tração que corrigem bugs. Também recebemos pedidos de puxão que contribuam com suas próprias idéias.
Ao contribuir para este projeto, você concorda que suas contribuições serão licenciadas sob a licença do projeto.
Adoramos contribuições de nossos usuários! Se você planeja enviar uma solicitação de tração, abra um problema primeiro e descreva o problema que deseja corrigir ou o que deseja melhorar e como! Dessa forma, podemos discutir se sua ideia pode ser adicionada às notícias-por favor, em primeiro lugar e, se sim, como ela poderia ser melhor implementada para se encaixar no estilo de arquitetura e codificação. Na questão, indique que você planeja implementar os recursos descritos.
Infelizmente, não temos recursos para implementar os recursos solicitados pelos usuários. Em vez disso, recomendamos que você implemente os recursos necessários e, se desejar, abrir uma solicitação de tração aqui para que a comunidade também possa se beneficiar de suas melhorias.
Licenciado sob a licença Apache, versão 2.0 (a "licença"); Você não pode usar notícias-exceto em conformidade com a licença. Uma cópia da licença está incluída no projeto, consulte o arquivo Licença.txt.
A menos que exigido pela lei aplicável ou acordada por escrito, o software distribuído pela licença é distribuído "como está", sem garantias ou condições de qualquer tipo, expressa ou implícita. Consulte a licença para o idioma específico que rege as permissões e limitações sob a licença. O logotipo da notícia é cortesia de Mario Hamborg.
Copyright 2016-2024 A equipe de notícias por favor