এই টিউটোরিয়ালে আমরা ওয়েব ক্রলিং করতে সক্ষম মোট দুইটি প্রোগ্রাম লিখব এবং রাসবেরি পাইতে রান করব। প্রোগ্রামগুলো বুঝতে হলে অবশ্যই পাইথনের রেগুলার এক্সপ্রেশন সম্পর্কে ধারনা থাকতে হবে।
প্রোগ্রাম ১ঃ প্রথম প্রোগ্রামটি রাসবেরি পাইভিত্তিক একটি এলসিডি ক্লকের প্রোগ্রাম যা ইন্টারনেট থেকে সময় আপডেট করবে। আমরা https://www.observerbd.com/ থেকে বাংলাদেশ সময়ের আপডেট নিয়েছি।
এই ওয়েবসাইটের যেখানে সময় দেখানো হয়, সেই অংশটুকু Inspect করলে HTML কোডে আমরা দেখতে পাব সময়ের অংশটি শুরু হয়েছে <div class=”time” >কথাটি দিয়ে এবং শেষ হয়েছে </div> দিয়ে। কাজেই এই দুইয়ের মধ্যবর্তী অংশটুকু আলাদা করে নিলেই আমরা সময় সংক্রান্ত তথ্য পেয়ে যাব।
নিচের প্রোগ্রামে ঠিক এই কাজটিই করা হয়েছে।
আমাদের প্রোগ্রামে আমরা কমান্ড প্রম্পট এবং এলসিডি দুই মাধ্যমেই সময় দেখিয়েছি। রাসবেরি পাইয়ের সাথে এলসিডি কানেক্ট করতে চাইলে অবশ্যই RPLCD লাইব্রেরি ইন্সটল করা থাকতে হবে। RPLCD ইন্সটল করা না থাকলে এই টিউটোরিয়াল দেখে করে নিন।
import requests
import re
from RPLCD import CharLCD
from RPi import GPIO
lcd = CharLCD(numbering_mode=GPIO.BOARD, cols=16, rows=2, pin_rs=37, pin_e=35, pins_data=[33,31,29,23])
url="https://www.observerbd.com/"
while True:
response=requests.get(url)
text=response.text
result=re.findall(r'<div class="time">(.*?)</div', text, re.M | re.DOTALL)
resultstring=" ".join(str(x) for x in result)
resultstring=resultstring.replace("[u'","")
resultstring=resultstring.replace(" ]'","")
print(resultstring)
lcd.clear()
lcd.write_string(resultstring)
প্রোগ্রাম ১ এর সার্কিটঃ
প্রয়োজনীয় যন্ত্রপাতি | পরিমাণ | লিংক |
Raspberry Pi 4 Model B 4GB Complete Set | 1 | এখানে ক্লিক করুন |
LCD module | 1 | এখানে ক্লিক করুন |
Female to female jumpers | 8 | এখানে ক্লিক করুন |
সার্কিট কানেকশন ও ডায়াগ্রামঃ এলসিডি মডিউল এবং রাসবেরি পাইয়ের মধ্যে নিচের কানেকশনটি সম্পন্ন করতে হবে।
Raspberry Pi 4 Model B 4GB Complete Set | LCD module advanced |
VCC | VCC |
GND | GND |
37 | RS |
35 | E |
33 | D4 |
31 | D5 |
29 | D6 |
23 | D7 |
প্রোগ্রামটি রান করা অবস্থায় এলসিডিতে সময় দেখা যাবে।
প্রোগ্রাম ২ঃ এই প্রোগ্রামটি প্রায় আগেরটির মতই, তবে একটু আলাদা। এই এই প্রোগ্রামে আমরা দুটি ওয়েবসাইট ক্রলিং করব। রাসবেরি পাইয়ের সাথে একটি বাটন সংযুক্ত থাকবে। সেটি একবার প্রেস করলে কমান্ড এলসিডিতে সময় এবং আবার প্রেস করলে টাকায় গ্রামপ্রতি স্বর্নের মূল্য লাইভ দেখা যাবে।
import requests
import re
import time
import RPi.GPIO as GPIO
from RPLCD import CharLCD
from RPi import GPIO
lcd = CharLCD(numbering_mode=GPIO.BOARD, cols=16, rows=2, pin_rs=37, pin_e=35, pins_data=[33,31,29,23])
lcd.clear()
button_switch = 8
GPIO.setmode(GPIO.BOARD)
GPIO.setup(button_switch, GPIO.IN)
previous_state = 0
present_state = 0
flag=0
url="http://goldpricez.com/bd/gram"
url2="https://www.observerbd.com/"
while True:
input_value = GPIO.input(button_switch)
#previous_state = input_value
if(input_value == True):
if(flag==0):
response=requests.get(url)
text=response.text
result=re.findall(r'<span class="display_rates">(.*?)</div', text, re.M | re.DOTALL)
resultstring=" ".join(str(x) for x in result)
resultstring=resultstring.replace("
","")
resultstring=resultstring.replace(" 1 Gram Gold Price","")
resultstring=resultstring.replace(" </span>","")
resultstring=resultstring.replace("\n","")
resultstring=resultstring.replace("= ","=")
resultstring=resultstring.replace(" BDT","BDT")
print(resultstring)
lcd.clear()
lcd.write_string(resultstring)
lcd.cursor_pos = (1,0)
lcd.write_string("/gm 18 ct gold")
flag=1
elif(flag==1):
response2=requests.get(url2)
text2=response2.text
result2=re.findall(r'<div class="time">(.*?)</div', text2, re.M | re.DOTALL)
resultstring2=" ".join(str(y) for y in result2)
resultstring2=resultstring2.replace("[u'","")
resultstring2=resultstring2.replace(" ]'","")
print(resultstring2)
lcd.clear()
lcd.write_string(resultstring2)
flag=0
প্রোগ্রাম ২ এর সার্কিটঃ এলসিডির কানেকশনটি আগের মতই থাকবে। নিচের সার্কিট অনুযায়ী একটি বাটন এবং পুল ডাউন রেজিস্টর যুক্ত হবে।
প্রয়োজনীয় আরও যন্ত্রপাতি | পরিমান | প্রোডাক্ট লিংক |
Breadboard | 1 | এখানে ক্লিক করুন |
330 ohm resistor | 4 | এখানে ক্লিক করুন |
Male to Female jumpers | 3 | এখানে ক্লিক করুন |
Push switch | 1 | এখানে ক্লিক করুন |
প্রোগ্রামটি রান করা অবস্থায় একবার বাটনটি প্রেস করলে সময় এবং আরেকবার প্রেস করলে গ্রামপ্রতি স্বর্ণের মূল্য দেখা যাবে।