All Projects → ranahaani → GNews

ranahaani / GNews

Licence: MIT license
A Happy and lightweight Python Package that Provides an API to search for articles on Google News and returns a JSON response.

Programming Languages

python
139335 projects - #7 most used programming language
Dockerfile
14818 projects

Projects that are alternatives of or similar to GNews

google-news-scraper
Google News Scraper for languages like Japanese, Chinese... [VPN Support]
Stars: ✭ 88 (-67.53%)
Mutual labels:  news, google-news
gnewsclient
An easy-to-use python client for Google News feeds.
Stars: ✭ 42 (-84.5%)
Mutual labels:  news, google-news
goeland
An alternative to rss2email written in golang with many filters
Stars: ✭ 78 (-71.22%)
Mutual labels:  rss-feed, hacktoberfest2022
ariel-news-app
News App developed with Flutter featuring beautiful UI, category-based news, story for faster news reading, inbuilt article viewer, share feature, and more.
Stars: ✭ 31 (-88.56%)
Mutual labels:  news, article
Getnews.tech
A web server that fetches data from the News API and formats it for display in the terminal.
Stars: ✭ 94 (-65.31%)
Mutual labels:  news, article
newspaper3 usage overview
This repository provides usage examples for the Python module Newspaper3k.
Stars: ✭ 78 (-71.22%)
Mutual labels:  news, newspaper3k
HungryHippo
🦛 scrapes websites and generates rss feeds
Stars: ✭ 33 (-87.82%)
Mutual labels:  news, rss-feed
trafilatura
Python & command-line tool to gather text on the Web: web crawling/scraping, extraction of text, metadata, comments
Stars: ✭ 711 (+162.36%)
Mutual labels:  news, rss-feed
Simorgh
The BBC's Open Source Single Page Application. Contributions welcome! Used on some of our biggest websites, e.g.
Stars: ✭ 550 (+102.95%)
Mutual labels:  news, article
nycurl
A web server that fetches data from the New York Times and formats it for display in the terminal.
Stars: ✭ 27 (-90.04%)
Mutual labels:  news, article
GoogleNewsApi
REST Api which will give news of different categories from any location and also related news
Stars: ✭ 18 (-93.36%)
Mutual labels:  google-news, google-news-api
Briefly
source based news in short : Winner @MumbaiHackathon 2018
Stars: ✭ 35 (-87.08%)
Mutual labels:  news, article
HacktoberFest2021
Make your first PR! ~ A beginner-friendly repository made specifically for open source beginners. Add your profile, a blog, or any program under any language or update the existing one. Just make sure to add the file under the correct directory. Happy hacking!
Stars: ✭ 9 (-96.68%)
Mutual labels:  hacktoberfest2022
medium-toc
Easily create a table of contents for your Medium articles in just one click. ✨
Stars: ✭ 33 (-87.82%)
Mutual labels:  article
RssNewsAPI
Free News API for fetching and categorizing news articles
Stars: ✭ 13 (-95.2%)
Mutual labels:  news
crowdin-api-client-js
JavaScript client library for Crowdin API
Stars: ✭ 89 (-67.16%)
Mutual labels:  hacktoberfest2022
BashBar
No description or website provided.
Stars: ✭ 28 (-89.67%)
Mutual labels:  hacktoberfest2022
WebXDAO.github.io
Main website built with Next.js and Tailwind, and Community builded. 🛸
Stars: ✭ 39 (-85.61%)
Mutual labels:  hacktoberfest2022
Hacktoberfest-2021
Participate in Hacktoberfest by contributing to any Open Source project on GitHub! Here is a starter project for first time contributors. #hacktoberfest
Stars: ✭ 1 (-99.63%)
Mutual labels:  hacktoberfest2022
market-monitor
Interactive app to monitor market using Python
Stars: ✭ 20 (-92.62%)
Mutual labels:  news

Contributors Forks Stargazers Issues MIT License Download LinkedIn


GNews

GNews

A Happy and lightweight Python Package that Provide an API to search for articles on Google News and returns a usable JSON response!
Explore the docs »

If you like GNews or if it is useful to you, show your support by buying me a coffee.
Buy Me A Coffee

View Demo · Report Bug · Request Feature

Table of Contents
  1. About
  2. Getting Started
  3. Usage
  4. To do
  5. Roadmap
  6. Contributing
  7. License
  8. Contact
  9. Acknowledgements

About GNews

🚩 GNews is A Happy and lightweight Python Package that searches Google News RSS Feed and returns a usable JSON response
🚩 As well as you can fetch full article (No need to write scrappers for articles fetching anymore)

Google News cover across 141+ countries with 41+ languages. On the bottom left side of the Google News page you may find a Language & region section where you can find all of the supported combinations.

Demo

GNews Demo

Getting Started

This is an example of how you may give instructions on setting up your project locally. To get a local copy up and running follow these simple example steps.

Installation

pip install gnews

Setup with Docker

Developing with docker

  1. Install docker and docker-compose.
  2. Set-up your .env environment placing the mongo db credentials.
  3. Run docker-compose up --build

Install using clone

  1. Clone this repository https://github.com/ranahaani/GNews.git
  2. Start your virtual environment virtualenv gnews
  3. Install the requirements with pip install -r requirements.txt

Example usage

from gnews import GNews

google_news = GNews()
pakistan_news = google_news.get_news('Pakistan')
print(pakistan_news[0])
[{
'publisher': 'Aljazeera.com',
 'description': 'Pakistan accuses India of stoking conflict in Indian Ocean  '
                'Aljazeera.com',
 'published date': 'Tue, 16 Feb 2021 11:50:43 GMT',
 'title': 'Pakistan accuses India of stoking conflict in Indian Ocean - '
          'Aljazeera.com',
 'url': 'https://www.aljazeera.com/news/2021/2/16/pakistan-accuses-india-of-nuclearizing-indian-ocean'
 },
 ...]

Get top news

  • GNews.get_top_news()

Get news by keyword

  • GNews.get_news(keyword)

Get news by major topic

  • GNews.get_news_by_topic(topic)
  • Available topics: WORLD, NATION, BUSINESS, TECHNOLOGY, ENTERTAINMENT, SPORTS, SCIENCE, HEALTH.

Get news by geo location

  • GNews.get_news_by_location(location)
  • location can be name of city/state/country

Results specification

  • It's possible to pass proxy, country, language, period, start date, end date exclude websites and size during initialization
google_news = GNews(language='en', country='US', period='7d', start_date=None, end_date=None, max_results=10, exclude_websites=['yahoo.com', 'cnn.com'],
                    proxy=proxy)
  • Or change it to an existing object
google_news.period = '7d'  # News from last 7 days
google_news.results = 10  # number of responses across a keyword
google_news.country = 'United States'  # News from a specific country 
google_news.language = 'english'  # News in a specific language
google_news.exclude_websites = ['yahoo.com', 'cnn.com']  # Exclude news from specific website i.e Yahoo.com and CNN.com
google_news.start_date = (2020, 1, 1) # Search from 1st Jan 2020
google_news.end_date = (2020, 3, 1) # Search until 1st March 2020

The format of the timeframe is a string comprised of a number, followed by a letter representing the time operator. For example 1y would signify 1 year. Full list of operators below:

 - h = hours (eg: 12h)
 - d = days (eg: 7d)
 - m = months (eg: 6m)
 - y = years (eg: 1y)

Setting the start and end dates can be done by passing in either a datetime or a tuple in the form (YYYY, MM, DD).

Supported Countries

print(google_news.AVAILABLE_COUNTRIES)

{'Australia': 'AU', 'Botswana': 'BW', 'Canada ': 'CA', 'Ethiopia': 'ET', 'Ghana': 'GH', 'India ': 'IN',
 'Indonesia': 'ID', 'Ireland': 'IE', 'Israel ': 'IL', 'Kenya': 'KE', 'Latvia': 'LV', 'Malaysia': 'MY', 'Namibia': 'NA',
 'New Zealand': 'NZ', 'Nigeria': 'NG', 'Pakistan': 'PK', 'Philippines': 'PH', 'Singapore': 'SG', 'South Africa': 'ZA',
 'Tanzania': 'TZ', 'Uganda': 'UG', 'United Kingdom': 'GB', 'United States': 'US', 'Zimbabwe': 'ZW',
 'Czech Republic': 'CZ', 'Germany': 'DE', 'Austria': 'AT', 'Switzerland': 'CH', 'Argentina': 'AR', 'Chile': 'CL',
 'Colombia': 'CO', 'Cuba': 'CU', 'Mexico': 'MX', 'Peru': 'PE', 'Venezuela': 'VE', 'Belgium ': 'BE', 'France': 'FR',
 'Morocco': 'MA', 'Senegal': 'SN', 'Italy': 'IT', 'Lithuania': 'LT', 'Hungary': 'HU', 'Netherlands': 'NL',
 'Norway': 'NO', 'Poland': 'PL', 'Brazil': 'BR', 'Portugal': 'PT', 'Romania': 'RO', 'Slovakia': 'SK', 'Slovenia': 'SI',
 'Sweden': 'SE', 'Vietnam': 'VN', 'Turkey': 'TR', 'Greece': 'GR', 'Bulgaria': 'BG', 'Russia': 'RU', 'Ukraine ': 'UA',
 'Serbia': 'RS', 'United Arab Emirates': 'AE', 'Saudi Arabia': 'SA', 'Lebanon': 'LB', 'Egypt': 'EG',
 'Bangladesh': 'BD', 'Thailand': 'TH', 'China': 'CN', 'Taiwan': 'TW', 'Hong Kong': 'HK', 'Japan': 'JP',
 'Republic of Korea': 'KR'}

Supported Languages

print(google_news.AVAILABLE_LANGUAGES)

{'english': 'en', 'indonesian': 'id', 'czech': 'cs', 'german': 'de', 'spanish': 'es-419', 'french': 'fr',
 'italian': 'it', 'latvian': 'lv', 'lithuanian': 'lt', 'hungarian': 'hu', 'dutch': 'nl', 'norwegian': 'no',
 'polish': 'pl', 'portuguese brasil': 'pt-419', 'portuguese portugal': 'pt-150', 'romanian': 'ro', 'slovak': 'sk',
 'slovenian': 'sl', 'swedish': 'sv', 'vietnamese': 'vi', 'turkish': 'tr', 'greek': 'el', 'bulgarian': 'bg',
 'russian': 'ru', 'serbian': 'sr', 'ukrainian': 'uk', 'hebrew': 'he', 'arabic': 'ar', 'marathi': 'mr', 'hindi': 'hi',
 'bengali': 'bn', 'tamil': 'ta', 'telugu': 'te', 'malyalam': 'ml', 'thai': 'th', 'chinese simplified': 'zh-Hans',
 'chinese traditional': 'zh-Hant', 'japanese': 'ja', 'korean': 'ko'}

Article Properties

  • Get news returns the list with following keys: title, published_date, description, url, publisher.
Properties Description Example
title Title of the article IMF Staff and Pakistan Reach Staff-Level Agreement on the Pending Reviews Under the Extended Fund Facility
url Google news link to article Article Link
published date Published date Wed, 07 Jun 2017 07:01:30 GMT
description Short description of article IMF Staff and Pakistan Reach Staff-Level Agreement on the Pending Reviews Under the Extended Fund Facility ...
publisher Publisher of article The Guardian

Getting full article

  • To read a full article you can either:
    • Navigate to the url directly in your browser, or
    • Use newspaper3k library to scrape the article
  • The article url, needed for both methods, is accessed as article['url'].

Using newspaper3k

  1. Install the library - pip3 install newspaper3k.
  2. Use get_full_article method from GNews, that creates an newspaper.article.Article object from the url.
from gnews import GNews

google_news = GNews()
json_resp = google_news.get_news('Pakistan')
article = google_news.get_full_article(
    json_resp[0]['url'])  # newspaper3k instance, you can access newspaper3k all attributes in article

This new object contains title, text (full article) or images attributes. Examples:

article.title 

IMF Staff and Pakistan Reach Staff-Level Agreement on the Pending Reviews Under the Extended Fund Facility'

article.text 

End-of-Mission press releases include statements of IMF staff teams that convey preliminary findings after a mission. The views expressed are those of the IMF staff and do not necessarily represent the views of the IMF’s Executive Board.\n\nIMF staff and the Pakistani authorities have reached an agreement on a package of measures to complete second to fifth reviews of the authorities’ reform program supported by the IMF Extended Fund Facility (EFF) ..... (full article)

article.images

{'https://www.imf.org/~/media/Images/IMF/Live-Page/imf-live-rgb-h.ashx?la=en', 'https://www.imf.org/-/media/Images/IMF/Data/imf-logo-eng-sep2019-update.ashx', 'https://www.imf.org/-/media/Images/IMF/Data/imf-seal-shadow-sep2019-update.ashx', 'https://www.imf.org/-/media/Images/IMF/Social/TW-Thumb/twitter-seal.ashx', 'https://www.imf.org/assets/imf/images/footer/IMF_seal.png'}

article.authors

[]

Read full documentation for newspaper3k newspaper3k

Todo

  • Save to MongoDB
  • Save to SQLite
  • Save to JSON
  • Save to .CSV file
  • More than 100 articles

Roadmap

See the open issues for a list of proposed features (and known issues).

Contributing

Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

Distributed under the MIT License. See LICENSE for more information.

Contact

Muhammad Abdullah - @ranahaani - [email protected]

Project Link: https://github.com/ranahaani/GNews

Project Link: https://github.com/ranahaani/GNews

"Buy Me A Coffee"

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].