π§ A Python-based script to compare the popularity of multiple keywords using Google Trends data, now with a Flask web interface for easy access and visualization.
Overview β’ Features β’ Prerequisites β’ How to Use β’ API Endpoints β’ Web Interface β’ Example Output β’ Visualization β’ Error Handling β’ License
This Python-based script allows you to compare the popularity of two or three keywords over a specified timeframe using Google Trends data. The script fetches interest over time for the provided keywords and visualizes the trends using matplotlib
. You can now access the comparison tool via a Flask web interface, submit keywords, and display the resulting comparison image directly in your browser.
- Compare the search interest of 2 or 3 keywords over a custom time period.
- Supports multiple timeframes, including the past 7 days, past 12 months, and custom date ranges.
- Outputs a visual plot of the trends, saved as a
.png
image. - Uses the Google Trends API (
pytrends
) to fetch real-time or historical trend data. - Provides a Flask-based web interface for easy access and interaction.
- Handles rate-limiting with an optional delay between requests to avoid being blocked by Google.
Before running the script or Flask API, ensure you have the following Python packages installed:
Flask
Flask-CORS
pytrends
matplotlib
pandas
Install the required packages using:
pip install Flask Flask-CORS pytrends matplotlib pandas
-
Run the Flask server to expose the web interface throughout the network:
python app.py
-
Open your browser and go to
http://localhost:5000
. Youβll see a web form where you can input the keywords and select a timeframe for comparison. -
After submitting the form, the trends comparison plot will be generated and displayed on the results page.
-
Run the script by passing at least two required keywords and an optional third keyword. Additionally, you can specify a timeframe.
-
Command-line Usage:
python google_trends_compare.py <keyword1> <keyword2> [--keyword3 <keyword3>] [--timeframe <timeframe>]
<keyword1>
: The first keyword for comparison.<keyword2>
: The second keyword for comparison.--keyword3 <keyword3>
: (Optional) A third keyword to compare.--timeframe <timeframe>
: (Optional) Specify the time range for comparison. Defaults totoday 12-m
.
-
Example Commands:
Compare two keywords (
"Python"
and"Java"
) over the last 7 days:python google_trends_compare.py "Python" "Java" --timeframe "now 7-d"
Compare three keywords (
"spiderman"
,"batman"
,"superman"
) over the last 12 months:python google_trends_compare.py "spiderman" "batman" --keyword3 "superman" --timeframe "today 12-m"
- Open a browser and go to the URL
http://localhost:5000
. - Fill in the form with two or three keywords and select a timeframe from the dropdown menu.
- Submit the form, and the Google Trends comparison plot will be generated and displayed on the results page.
- Keyword 1:
Python
- Keyword 2:
Java
- Keyword 3 (Optional):
JavaScript
- Timeframe:
today 12-m
The script generates a comparison plot of the search trends, such as the one below:
-
Method:
POST
-
Description: Compare the search trends of two or three keywords over a specified timeframe and receive a plot as the output.
-
Request Body:
keywords
: A list of two or three keywords to compare.timeframe
: (Optional) The time range for comparison. Defaults totoday 12-m
.
Example
POST
request:{ "keywords": ["Python", "Java", "JavaScript"], "timeframe": "today 12-m" }
-
Response:
{ "message": "Comparison successful", "image": "google_trends_comparison.png" }
-
Example Request using
curl
:curl -X POST http://localhost:5000/compare \ -H "Content-Type: application/json" \ -d '{"keywords": ["Python", "Java"], "timeframe": "now 7-d"}'
The flow of the Google Trends Comparison Script is visualized below using Mermaid:
graph TD
A[User Input: Keywords & Timeframe] --> B[Script Initialization]
B --> C[Fetch Data from Google Trends API using pytrends]
C --> D[Handle Rate-Limiting]
D --> E[Process and Clean Data using Pandas]
E --> F[Generate Comparison Plot with Matplotlib]
F --> G[Save as PNG]
G --> H[Output: google_trends_comparison.png]
The flow of the API-based process is visualized below:
graph TD
A[User Input: Keywords & Timeframe] --> B[API Request to /compare]
B --> C[Fetch Data from Google Trends API using pytrends]
C --> D[Handle Rate-Limiting]
D --> E[Process and Clean Data using Pandas]
E --> F[Generate Comparison Plot with Matplotlib]
F --> G[Save as PNG]
G --> H[Return plot filename in API response]
- The script will handle cases where no data is available for the specified keywords.
- In cases where Google returns a
400
error, the timeframe or keyword formatting may be incorrect.
This project is licensed under the MIT License - see the LICENSE file for details.