Bevakar Blocket med Web Scraping i Python
Efter stora problem med Blockets inbyggda bevakningstjänst för nya annonser så bestämde jag mig för att göra en egen! Vi använder oss av Beautiful Soup-modulen för att skrapa Blockets sidor efter data. När vi får vårt program att fungera, så låter jag programmet skicka ett sms till min telefon när det dyker upp nya annonser (med hjälp av 46elks API för att skicka SMS).
Videon ”Bevakar Blocket med Python” hittar du på vår YouTube-kanal: https://youtu.be/T3VMn289QVc
Koden för huvudfilen, blocket.py hittar du här nedan. Glöm inte att också eventuellt skapa secret.py enligt instruktioner i videon. Lycka till!
import requests
from bs4 import BeautifulSoup
import time
import secret
URL = "https://www.blocket.se/annonser/hela_sverige"
API_PASSWORD = secret.API_PASSWORD
API_USERNAME = secret.API_USERNAME
phone = secret.phone
def parse_site(url):
page = requests.get(url)
soup = BeautifulSoup(page.content, "html.parser")
return soup
def get_latest_ad():
soup = parse_site(URL)
ad_elems = soup.find_all("article", class_="hidZFy")
latest_ad = ad_elems[0]
# hitta namn, pris och url
ad_name = latest_ad.find("span", class_ = "jzzuDW").text
ad_price = latest_ad.find("div", class_ = "bNwNaE").text
ad_url = latest_ad.find("a", class_="enigRj")["href"]
return ad_name, ad_price, ad_url
# skickar sms
def send_sms(name, price, url):
message = "***NY ANNONS***\n" + name + "\n" + price + "\n" + "https://blocket.se" + url
requests.post(
'https://api.46elks.com/a1/sms',
auth=(API_USERNAME, API_PASSWORD),
data={
'from': 'Annonsalarm',
'to': phone,
'message': message
}
)
prev_ad_name, prev_ad_price, prev_ad_url = get_latest_ad()
print("Senaste annonsen: ", prev_ad_name, ": ", prev_ad_price)
print("Url: ", prev_ad_url)
while True:
time.sleep(5)
ad_name, ad_price, ad_url = get_latest_ad()
if ad_name == prev_ad_name:
# inga nya annonser
t = time.localtime()
current_time = time.strftime("%H:%M:%S",t)
print("Ingen ny annons hittad...", current_time)
else:
# ny annons hittad!!!!
print("Ny annons: " + ad_name)
send_sms(ad_name,ad_price, ad_url)
prev_ad_name = ad_name
Unga Programmerare håller kurser i programmering för barn och ungdomar. Unga Programmerare startades av studenter från Chalmers Tekniska Högskola.
Företagsinfo
Innovation Institute of Sweden AB
Box 2062, 116 74 Stockholm
Org.nr. 559290-7603