From 1f8528158c4647c06e1261ec826abb66e4c31831 Mon Sep 17 00:00:00 2001 From: "Ap.Muthu" Date: Fri, 6 Sep 2024 22:08:33 +0530 Subject: [PATCH] Added Python scripts for writing to file and web scraping https://sebhastian.com/no-module-named-requests/ --- Python/README.md | 10 ++ Python/WebScrapeChatGPT.py | 44 ++++++ Python/html.zip | Bin 0 -> 20915 bytes Python/pysave.py | 57 +++++++ Python/writing.py | 15 ++ README.md | 2 + dbs_xchg_rate.php | 312 +++++++++++++++---------------------- 7 files changed, 256 insertions(+), 184 deletions(-) create mode 100644 Python/README.md create mode 100644 Python/WebScrapeChatGPT.py create mode 100644 Python/html.zip create mode 100644 Python/pysave.py create mode 100644 Python/writing.py diff --git a/Python/README.md b/Python/README.md new file mode 100644 index 0000000..984279d --- /dev/null +++ b/Python/README.md @@ -0,0 +1,10 @@ +## Python 3 constructs on Windows 11 +* The version of Python used is 3.12.5 +* Installed in `C:\Python312` +* Add the modules in `C:\Python312\Scripts` using `pip3 install ` + +### Web Scraping +* `writing.py` - Write to file +* `pysave.py` - Extract contents from awebpage and write to file / parse text +* `WebScrapeChatGPT.py` - Webscrape and parse content using `requests` and `BeautifulSoup4` packages +* `html.zip` - Sample html.txt file scarped frrom a Web URL and zipped diff --git a/Python/WebScrapeChatGPT.py b/Python/WebScrapeChatGPT.py new file mode 100644 index 0000000..18bd19d --- /dev/null +++ b/Python/WebScrapeChatGPT.py @@ -0,0 +1,44 @@ +# pip install requests beautifulsoup4 + +""" +# C:\Python312\Scripts>pip3 install beautifulsoup4 +Defaulting to user installation because normal site-packages is not writeable +Collecting beautifulsoup4 + Downloading beautifulsoup4-4.12.3-py3-none-any.whl.metadata (3.8 kB) +Collecting soupsieve>1.2 (from beautifulsoup4) + Downloading soupsieve-2.6-py3-none-any.whl.metadata (4.6 kB) +Downloading beautifulsoup4-4.12.3-py3-none-any.whl (147 kB) +Downloading soupsieve-2.6-py3-none-any.whl (36 kB) +Installing collected packages: soupsieve, beautifulsoup4 +Successfully installed beautifulsoup4-4.12.3 soupsieve-2.6 + +Use the following Python code: + +python +""" + +import requests +from bs4 import BeautifulSoup + +# URL of the web page you want to extract +url = 'https://google.com' # Replace with the URL of your choice + +# Fetch the content from the URL +response = requests.get(url) + +# Check if the request was successful +if response.status_code == 200: + # Parse the content with BeautifulSoup + soup = BeautifulSoup(response.text, 'html.parser') + + # Extract and display the title of the web page + title = soup.title.string + print('Title of the page:', title) + + # Example: Extract all paragraph text + paragraphs = soup.find_all('p') + for para in paragraphs: + print(para.get_text()) +else: + print('Failed to retrieve the web page. Status code:', response.status_code) + diff --git a/Python/html.zip b/Python/html.zip new file mode 100644 index 0000000000000000000000000000000000000000..5ef02a3d3d37124d667fbaee16e83d1cc767a1c4 GIT binary patch literal 20915 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 literal 0 HcmV?d00001 diff --git a/Python/pysave.py b/Python/pysave.py new file mode 100644 index 0000000..9886b45 --- /dev/null +++ b/Python/pysave.py @@ -0,0 +1,57 @@ +# https://sebhastian.com/no-module-named-requests/ +# in cmd prompt +# cd D:\Python311\Scripts +# pip3 install requests +# +# C:\Python312\Scripts>pip3 install requests +''' +Collecting requests + Downloading requests-2.32.3-py3-none-any.whl.metadata (4.6 kB) +Collecting charset-normalizer<4,>=2 (from requests) + Downloading charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl.metadata (34 kB) +Collecting idna<4,>=2.5 (from requests) + Downloading idna-3.8-py3-none-any.whl.metadata (9.9 kB) +Collecting urllib3<3,>=1.21.1 (from requests) + Downloading urllib3-2.2.2-py3-none-any.whl.metadata (6.4 kB) +Collecting certifi>=2017.4.17 (from requests) + Downloading certifi-2024.8.30-py3-none-any.whl.metadata (2.2 kB) +Downloading requests-2.32.3-py3-none-any.whl (64 kB) +Downloading certifi-2024.8.30-py3-none-any.whl (167 kB) +Downloading charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl (100 kB) +Downloading idna-3.8-py3-none-any.whl (66 kB) +Downloading urllib3-2.2.2-py3-none-any.whl (121 kB) +Installing collected packages: urllib3, idna, charset-normalizer, certifi, requests +Successfully installed certifi-2024.8.30 charset-normalizer-3.3.2 idna-3.8 requests-2.32.3 urllib3-2.2.2 +''' + + +import requests + +r = requests.get("https://example.com/") +print(r.status_code) +# t=open('html.zip', 'wb') + +# t=open('html.txt', 'wb') +# t.write(r.content) +# t.close() + +# from pathlib import Path +# contents = Path("html.txt").read_text() + +contents = repr(r.content) +parts = contents.split('

', 2) +datestr = parts[1].split(' ', 2) +day = datestr[0] +month = datestr[1] +linkstr = datestr[2].split('"', 2) +link=linkstr[1].split('/view', 1) +url = link[0] +print(day, ' ', month, ' ', url) + + + + + + + + diff --git a/Python/writing.py b/Python/writing.py new file mode 100644 index 0000000..35795fb --- /dev/null +++ b/Python/writing.py @@ -0,0 +1,15 @@ +import math +t=open('page.txt', 'w') +t.write('Hello. Okay.') +t.close() + +t=open('page.txt', 'a') +t.write("\nValue of Pi is ") +t.write(repr(math.pi)) # repr converts float to string +pi=math.pi +t.write("\nValue of formatted Pi is: {}".format(pi)) +print("\nWriting to file now.") +t.close(); + + + diff --git a/README.md b/README.md index 022e269..e6b6387 100644 --- a/README.md +++ b/README.md @@ -71,6 +71,8 @@ pubip=`wget -qO- http://www.apmuthu.com/ip.php` * `TandC.php` - Place defined constants in a PHP String * `mask_download_url.php` - Mask the real URL of a downloadable file in php +## [Python scripts](Python) + ## PDF Scripts * `images_to_pdf.php` - Join images in a folder into a single PDF file using FPDF library * `pdfoverlay` - Generate an overlaid PDF populating a template PDF file using data from a database diff --git a/dbs_xchg_rate.php b/dbs_xchg_rate.php index 38860d8..56ff332 100644 --- a/dbs_xchg_rate.php +++ b/dbs_xchg_rate.php @@ -19,7 +19,8 @@ $debug = false; $savefile = false; -$url='https://www.posb.com.sg/personal/rates-online/foreign-currency-foreign-exchange.page'; +//$url='https://www.posb.com.sg/personal/rates-online/foreign-currency-foreign-exchange.page'; +$url='https://www.dbs.com.sg/personal/rates-online/foreign-currency-foreign-exchange.page'; $bcurrency = isset($_REQUEST['b']) ? substr(strtoupper(trim($_REQUEST['b'])),0,3) : 'SGD'; $currency = isset($_REQUEST['c']) ? substr(strtoupper(trim($_REQUEST['c'])),0,3) : (($bcurrency != 'SGD') ? 'SGD' :'INR'); // TSV only if target currency is not given @@ -75,7 +76,7 @@ -Foreign Currencies - Foreign Exchange | POSB Singapore +Foreign Currencies, Foreign Exchange Rates | DBS Singapore @@ -87,12 +88,11 @@ - - - -

+ + +
-
-
+
-
-
- - - - - +
-