Skelbiu.lt automatinis skelbimų atnaujinimas (Python skriptas)

skelbiult-automatinis-atnaujinimas

Skaitymo laikas: 2 minutės

Tekstas atnaujintas: 2020-08-14

Turėjau kelis skelbimus skelbiu.lt portale ir ten yra tokia funkcija jog kas 24 valandas galima atnaujinti skelbimą kuris kažkiek pakyla per pozicijas tuo momentu.

Kelias dienas bedarydamas tai rankiniu būdu, pagalvojau o nėra kažkokio automatinio varianto?

Github radau vieną variantą.

Kodas atrodo taip:

import requests



url = 'https://www.skelbiu.lt/users/signin'

payload = {'nick': 'vartotojo_vardas', 'password':'kodas'} #Fill in with account name and password



with requests.Session() as s:

p = s.post(url, data=payload)



url2='https://www.skelbiu.lt/users/renew'

payload2= {'command': 'renew'}

s.post(url2, data=payload2)

Pamėginau šį kodą ir paleidus gaudavau html kodą kuriame būdavo matyti jog nepavyksta prisijungti.

Turiu įtarimą, gal dėl paslėpto captcha puslapio kode 🤔

Tada pamėginau pridėti headers į kodą:

import requests
login_headers = {
'x-requested-with': 'XMLHttpRequest',
'Content-Type': 'application/x-www-form-urlencoded', # its urlencoded instead of form-data
'User-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36',
'Cookie': 'svarbiausia_dalis_eina_cia',
}
with requests.Session() as s:
url2='https://www.skelbiu.lt/users/renew' payload2= {'command': 'renew'} r = s.post(url2, headers=login_headers, data=payload2) print(r.text)

Svarbiausia dalis kurią reikia pridėti tai cookies, kurį reikia gauti iš puslapio:

skelbiu.lt skelbimu atnaujinimas

Reikia viską iš Cookie nukopijuoti ir perkelti į skriptą.

Kai bus praėję laikas ir galės atnaujinti tada reiktų paleisti, tai darydavau naudojant Cron.

Skriptas veikdavo, bet yra minusas jog tai Cookie ir jis pradingsta po tam tikro laiko ir vėl reikia paimti iš naršyklės.

Tada netyčia atsirado dar vienas skriptas tam pačiame GitHub.

Kuris naudoja Selenium ir gali prisijungti prie puslapio to pasekoje nereikia atnaujinti Cookie.

Turint Python sistemoje reikia per terminalą įrašyti:

pip install selenium

Ir reikia parsisiųsti Chromedriver. Tai toks failiukas kurį reikia patalpinti sistemoje kur norime ir jam suteikti executable teises: chmod +x /failo_vieta/chromedriver

Pats skriptas atrodo taip:

import selenium

from selenium import webdriver

from selenium.webdriver.common.keys import Keys

from selenium.webdriver.chrome.options import Options



options = webdriver.ChromeOptions()

options.add_argument('headless')



driver = webdriver.Chrome(options=options, executable_path='<pathto>/chromedriver.exe')



def renew():

driver.get ('https://www.skelbiu.lt/users/renew')

driver.find_element_by_id('nick').send_keys('login')

driver.find_element_by_id('password').send_keys('password')

driver.find_element_by_id('login-button').click()

driver.implicitly_wait(1)

driver.find_element_by_xpath('//*[@id="default_page_content"]/form/button').click()



renew()

Pakoreguojame paryškintas vietas.

Šis skriptas turėtų veikti visada, nebent pats skelbiu.lt kažką atnaujins pas save.

Norėčiau padėkoti barbadosas už šį skriptą, jau pats galvojau kažką tokio gamintis 😅

Ar patiko įrašas?

Spausk jog įvertinti.

Vidutinis įvertinimas / 5. Įvertino:

Įvertinimų nėra, būk pirmas!

Jeigu įrašas patiko...

Pasidalink!

Jeigu įrašas nepatiko.

Padėk patobulinti įrašą!

Būtų malonu sužinoti kodėl?


Jeigu patiko įrašas, siūlau prenumeruoti, kaip tai padaryti aprašiau čia (el. paštu, telegram ir discord kanalai, facebook, twitter).

Gal patiks ir kiti įrašai