появляется ошибка selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: stale element not found. Как от нее избавиться?
for item in response.json()['Employees']:
first_name = item["User"]["FullName"]["FirstName"]
last_name = item["User"]["FullName"]["LastName"]
if "MiddleName" in item["User"]["FullName"]:
middle_name = item["User"]["FullName"]["MiddleName"]
else:
middle_name = "отчество отсутствует"
print(f"Имя: {first_name}, фамилия: {last_name}, отчество: {middle_name}")
# Имя: Иван, фамилия: Иванов, отчество: Иванович
# Имя: Петр, фамилия: Петров, отчество: отчество отсутствует
# EC.presence_of_element_located((By.CSS_SELECTOR, "product-slider__img js-product-current-img"))
EC.presence_of_element_located((By.CSS_SELECTOR, ".product-slider__img.js-product-current-img"))
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
options = Options()
service = Service(r'D:\project\chromedriver-130.0.6723.93.exe')
driver = webdriver.Chrome(service=service, options=options)
url = 'https://superstep.ru/product/NCFSW0W288YW_GRA/#colorGRA'
driver.get(url)
try:
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.CSS_SELECTOR, ".product-slider__img.js-product-current-img"))
)
page_html = driver.page_source
print(page_html)
except TimeoutException:
print("Элемент не найден")
finally:
print('Программа завершена')
driver.quit()
from selenium import webdriver
from selenium.webdriver.firefox.service import Service
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
options = Options()
service = Service(r'D:\project\geckodriver.exe')
driver = webdriver.Firefox(service=service, options=options)
url = 'https://superstep.ru/product/NCFSW0W288YW_GRA/#colorGRA'
driver.get(url)
try:
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.CSS_SELECTOR, ".product-slider__img.js-product-current-img"))
)
page_html = driver.page_source
print(page_html)
except TimeoutException:
print("Элемент не найден")
finally:
print('Программа завершена')
driver.quit()
your_secret_key
, скорее всего в ЛК этого сайта.your_secret_key
полученный ключ из п1, вместо остальных - в API руководстве написано, что нужно.import requests
# Подставить нужные данные из API руководства
params = {
'key': '?',
'hash_name': '?',
'id': '?',
'price': '?',
}
# GET запрос на сервер, аналог того, что мы использовали в браузере из п2.
response = requests.get('https://rust.tm/api/v2/buy', params=params)
# Печатаем результат запроса, аналог того, что мы использовали в браузере из п3.
print(response.json())
# В консоль распечатается приблизительно это:
# {
# "success": true,
# "id": "136256960"
# }
# Затем нужно циклом обойти результат с сервера и уже на основание полученных данных - предпринять необходимые действия. Например, пойти пожрать, чем я сейчас как раз и займусь... ;)
import time
# Время берется 1 раз в момент запуска скрипта, чему оно будет равно?
now = datetime.now()
current_time = now.strftime("%H:%M:%S")
# Цикл запущен и проверяет время, которое было взято 1 раз выше, что получится? Получится то, что цикл будет искать время, которое уже истекло.
while True:
time.sleep(1)
if current_time == '16:49:00':
print('text')
# Так, щас 16:49:00?
# Ок, ждем 1 сек...
# Так, щас 16:49:01?
# Ок, ждем 1 сек...
# Так, щас 16:49:02?
# У нас время идет вперед или назад..? Если все таки вперед, то сможет ли оно достигнуть current_time, которое уже меньше, чем ожидаемое время..?
import time
from datetime import datetime
while True:
now = datetime.now()
current_time = now.strftime("%H:%M:%S")
if current_time == '17:15:00':
print('text')
time.sleep(1)
else:
print(f'Нихуа ({current_time})!')
time.sleep(1)
# Нихуа (17:14:56)!
# Нихуа (17:14:57)!
# Нихуа (17:14:58)!
# Нихуа (17:14:59)!
# text
# Нихуа (17:15:01)! <--- Вот здесь оказывается Ваш первоначальный скрипт
# Нихуа (17:15:02)!
# Нихуа (17:15:03)! <--- Мы ждем какое время, 16:49:00?
from typing import Dict, Any
def process(answer, result_json: Dict[str, Any]) -> None:
tmp_json = parse_answer(answer)
result_json['summary_text'] += tmp_json['result']
result_json['tags'].extend(tmp_json['tags'])
result_json['input_size'] += answer.input_size
result_json['output_size'] += answer.output_size
def handler(text: str, max_size: int) -> Dict[str, Any]:
result_json = {'summary_text': '', 'tags': [], 'input_size': 0, 'output_size': 0}
match len(text):
case size if size > max_size:
chunker = TextChunker(maxlen=max_size)
for chunk in chunker.chunk(text):
answer = get_answer(chunk, tags_quantity=1)
process(answer, result_json)
case _:
answer = get_answer(text, tags_quantity=3)
process(answer, result_json)
return result_json
list = ['Да', 'да', 'интересно', 'Интересно']
input = input("Введите текст: ")
if any(w in input for w in list):
print('Одно из слов есть в тексте')
list = ['Да', 'да', 'интересно', 'Интересно']
input = input("Введите текст: ")
match input:
case _ if any(w in input for w in list):
print('Одно из слов есть в тексте')
case _:
print('Здесь нет таких')
данный код не работает
# driver.find_element("xpath", "//input[@id='LinkDa']" ).click
driver.find_element("xpath", "//input[@id='LinkDa']" ).click()
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
driver.get('https://autoins.ru/osago/raschet-stoimosti-osago/proverit-kbm/')
# Debug
time.sleep(10)
checkbox = driver.find_element(By.XPATH, '//label[@for="linkDa"]')
checkbox.click()
# Debug
time.sleep(10)
button = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.ID, "btnDa"))
)
button.click()
# Debug
time.sleep(10)
driver.quit()
Flask / django / restapi?
Что из этого проще в освоении
Что из этого ... эффективнее.
Что изучать python backend разработчику?
Знаю, что быдло код, просьба не критиковать , так как я только учась! :)
Почему не парсит остальные страницы?
while cout_page < 8:
# ...
root = soup.findAll('span',{'class':'label label-default'})
for i in root:
tage.append(i.text)
import requests
from bs4 import BeautifulSoup
start_page = 1
last_pages = 8
tags = []
for page in range(start_page, last_pages + 1):
url = f"https://cs-ms-monitoring.ru/all-servers/page/{page}/"
res = requests.get(url)
if res.status_code == 200:
soup = BeautifulSoup(res.text, "lxml")
root = soup.find_all('span', {'class': 'label label-default'})
tags.extend([tag.text for tag in root])
else:
print(f"Ошибка на странице {page}")
with open("base.txt", "w") as file:
for tag in tags:
file.write(tag + "\n")
Мне необходимо создавать и записывать данные в новый файл
import fcntl
with open('file.txt', 'a') as f:
fcntl.flock(f, fcntl.LOCK_EX) # файл кем то заблокирован, ждем
try:
f.write("Some data\n") # файл разблочился, блокируем его и работаем с ним
finally:
fcntl.flock(f, fcntl.LOCK_UN) # что то пошло не так, снимаем блокировку с файла принудительно
# h2= g.find_element(By.XPATH, '//h2').text
h2 = g.find_element(By.XPATH, './/h2').text