Nuo Plausible statistikos kaupimo, šis tekstas buvo skaitytas 342 kartą/us.
Šio teksto atnaujinimo ar rašymo laikas jau yra senesnis, kaip vieneri metai, tad per šį laiką galėjo mano nuomonė pasikeisti bei aptartos konfigūracijos.
Tekstas buvo atnaujintas: 2022-01-27.
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:
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