• Как выводить все href из всех тэгов?

    hottabxp
    @hottabxp Куратор тега Python
    Сначала мы жили бедно, а потом нас обокрали..
    F12 -> видим, что запрос нужно отправлять по адресу "https://store.steampowered.com/search/results?term=", например - "https://store.steampowered.com/search/results?term..."

    И ещё можно вынести парсинг в отдельную функцию, чтобы было проще отлаживать:
    from bs4 import BeautifulSoup
    import requests
    
    
    def search_game(title):
    	URL = 'https://store.steampowered.com/search/results'
    
    	games_list = []
    
    	response = requests.get(URL,params={'term':title},headers={'user-agent':'hacked by hottabXP'})
    	soup = BeautifulSoup(response.text,'lxml')
    
    	games = soup.find('div', id='search_resultsRows').find_all('a',class_='search_result_row ds_collapse_flag')
    	for game in games:
    		title = game.find('span',class_='title').text.strip()
    		try: # На случай, если цена со скидкой
    			price = game.find('div',class_='col search_price responsive_secondrow').text.strip()
    		except:
    			price = game.find('strike').text
    		games_list.append({'title':title,'price':price})
    
    	return games_list
    
    print(search_game("GTA 5"))

    [{'title': 'Grand Theft Auto V', 'price': ''}, {'title': 'Grand Theft Auto V: Premium Edition', 'price': '629₴'}, {'title': 'Grand Theft Auto V: Premium Edition & Great White Shark Card Bundle', 'price': '790₴'}, {'title': 'Grand Theft Auto V: Premium Edition & Megalodon Shark Card Bundle', 'price': '1 228₴'}, {'title': 'GTA Online: Shark Cash Cards', 'price': ''}, {'title': 'Grand Theft Auto V - Criminal Enterprise Starter Pack', 'price': '209₴'}, {'title': 'Grand Theft Auto V: Premium Edition & Whale Shark Card Bundle', 'price': '916₴'}, {'title': 'liteCam Game 5:  120 FPS Game Capture + Streamer', 'price': ''}, {'title': 'Assetto Corsa - Dream Pack 1', 'price': '129₴'}, {'title': 'Warhammer 40,000: Dawn of War III', 'price': '599₴'}, {'title': 'Memory Card Monsters - Expanded Content 5', 'price': '21₴'}, {'title': 'Fantasy Memory Card Game - Expansion Pack 5', 'price': '21₴'}, {'title': 'APB Reloaded', 'price': 'Free to Play'}, {'title': 'Shop Tycoon: Prepare your wallet', 'price': '119₴'}, {'title': '3dSunshine', 'price': 'Free'}, {'title': 'Druid', 'price': '20₴'}, {'title': 'Lazaretto', 'price': '129₴'}, {'title': "Rock 'N' Roll Defense", 'price': '21₴'}, {'title': '小黑盒加速器', 'price': 'Free To Play'}, {'title': 'Drop Hunt - Adventure Puzzle', 'price': '20₴'}, {'title': 'Carmageddon Max Pack', 'price': '169₴'}, {'title': 'Lamp Head', 'price': '27₴'}, {'title': 'Need for Drive - Open World Multiplayer Racing', 'price': '21₴'}, {'title': 'Crash Drive 3', 'price': '279₴'}, {'title': 'Retro City Rampage™ DX', 'price': '229₴'}, {'title': 'VCB: Why City 4k', 'price': '67₴'}, {'title': 'CS2D', 'price': 'Free To Play'}, {'title': 'ConflictCraft', 'price': '21₴'}, {'title': 'State of Anarchy: Master of Mayhem', 'price': '20₴'}, {'title': 'Geneshift', 'price': '229₴'}, {'title': '汉武大帝传', 'price': '149₴'}, {'title': 'Fix Me Up Doc! – Dark Humor', 'price': '21₴'}, {'title': 'Extreme Racing on Highway', 'price': '179₴'}, {'title': 'The Last Hope: Trump vs Mafia - North Korea', 'price': '21₴'}, {'title': 'Control Craft 3', 'price': '21₴'}, {'title': 'Zombie Killer Drift - Racing Survival', 'price': '21₴'}, {'title': 'Bugs Must Die / 异星特勤队', 'price': '199₴'}, {'title': 'Control Craft 2', 'price': '21₴'}, {'title': 'Hero Hunters - 杀手 3D 2K19', 'price': '119₴'}, {'title': 'USA Truck Simulator', 'price': '27₴'}, {'title': 'MechDefender - Tower Defense', 'price': '21₴'}, {'title': 'CYBER.one: Racing For Souls', 'price': ''}, {'title': 'VCB: Why City (Beta Version)', 'price': ''}, {'title': 'Mountain Taxi Driver', 'price': '21₴'}, {'title': 'The Kickstarter Avoidance Album', 'price': '21₴'}, {'title': 'Dino Zoo Transport Simulator', 'price': '27₴'}, {'title': 'Snow Clearing Driving Simulator', 'price': '169₴'}, {'title': 'Space Hero Line', 'price': '21₴'}, {'title': 'EDEN STAR', 'price': '279₴'}, {'title': 'liteCam Game: 100 FPS Game Capture', 'price': ''}]
    Ответ написан
    Комментировать
  • Как сравнить две картинки по-пиксельно?

    hottabxp
    @hottabxp Куратор тега Python
    Сначала мы жили бедно, а потом нас обокрали..
    Сразу скажу, что с графикой и алгоритмами не дружу. За пару минут накидал пример:
    pip install Pillow

    from PIL import Image
    
    
    img1 = Image.open('1.png') # Открываем первое изображение
    im1 = img1.load() # Загружаем первое изображение для доступа к пикселям
    
    img2 = Image.open('2.png') # Открываем второе изображение
    im2 = img2.load() # Загружаем второе изображение для доступа к пикселям
    
    i = 0 # Счетчик пикселей, которые не совпадают
    
    if (img1.size == img2.size): # Проверяем, что размер изображений совпадают
    	x1,y1 = img1.size # Через атрибут size получаем кортеж с двумя элементами (размер изображения по x и y)
    
    	# Проходимся последовательно по каждому пикселю картинок
    	for x in range(0,x1):
    		for y in range(0,y1):
    			if im1[x,y] != im2[x,y]: # Если пиксель первой картинки по координатах [x,y] не совпадает
    				# с пикселем второй картинки по координатах [x,y], тогда:
    				i = i + 1 # Увеличиваем счетчик на 1
    				print(f'Координаты: x={x}, y={y} Изображение 1={im1[x,y]} - Изображение 2={im2[x,y]}')
    	print(f"Количество разных пикселей: {i}")
    else:
    	print("Размер изображений не совпадают!")

    Вывод:
    Координаты: x=2, y=1 Изображение 1=(255, 0, 0) - Изображение 2=(255, 255, 255)
    Количество разных пикселей: 1
    Ответ написан
    2 комментария
  • AttributeError: 'NoneType' object has no attribute 'open'. Ошибка возникает на 23 строке. Как исправить?

    hottabxp
    @hottabxp Куратор тега Python
    Сначала мы жили бедно, а потом нас обокрали..
    Вы смешали людей и лошадей:
    def ImageEditor(filename):
    а нужно всего лишь заменить def на class( и убрать из filename, так как Python будет думать что класс ImageEditor наследуется от filename).
    Ответ написан
    Комментировать
  • Регистрация Flask/Python?

    hottabxp
    @hottabxp
    Сначала мы жили бедно, а потом нас обокрали..
    Единственный верный вариант это - брать из базы новых пользователей с почтой *@mycorp.ru и отправлять туда ссылки на подтверждение регистрации.
    Ответ написан
    Комментировать
  • Как узнать время работы скрипта?

    hottabxp
    @hottabxp Куратор тега Python
    Сначала мы жили бедно, а потом нас обокрали..
    Для того чтобы узнать время работы скрипта, нужно где-то сохранить время запуска скрипта.
    Ответ написан
    Комментировать
  • Что за процесс reason security engine?

    hottabxp
    @hottabxp
    Сначала мы жили бедно, а потом нас обокрали..
    Этого никто не знает, так как это сикретная информация!

    Это может быть все что угодно. Антивирус, Вредоносное ПО, переименованный блокнот. Найдите этот файл через правый клик по нему, и загрузите его на virustotal.
    Ответ написан
    Комментировать
  • Как вывести список с одним кортежем из трёх, в котором список состоит из чётных чисел?

    hottabxp
    @hottabxp Куратор тега Python
    Сначала мы жили бедно, а потом нас обокрали..
    for x in l:
    	if len(x[1]) %2 ==0:
    		print(x)
    или:
    s = [x for x in l if len(x[1]) %2 == 0 ]
    print(s)
    Ответ написан
    Комментировать
  • Почему не устанавливается python?

    hottabxp
    @hottabxp Куратор тега Python
    Сначала мы жили бедно, а потом нас обокрали..
    Смотрите log файл, там все написано.
    Точно не помню, но для установки Python на Windows 7 нужно установить или какое-то обновление, или какое-то visual c++ redistributable.

    Нужно установить KB3063858.
    Ответ написан
    Комментировать
  • Как можно самому поменять настройки расширения браузера?

    hottabxp
    @hottabxp
    Сначала мы жили бедно, а потом нас обокрали..
    1) Скопируйте папку расширения(например на рабочий стол)
    2) Отредактируйте файл replace.js:
    var doFilter = function(textNode) {
    
        textNode.data = textNode.data.replace('legatobrown', 'legatobrown_лох');
    }
    3) Зайдите в расширения и включите режим разработчика
    4) Нажмите "Загрузить распакованное расширение" и укажите папку расширения
    5) После каждого редактирования нужно в расширениях нажать "обновить"
    61deaa0a69a46078278656.png
    Ответ написан
    Комментировать
  • При каждом новом запуске кода требует авторизацию, что делать?

    hottabxp
    @hottabxp Куратор тега Python
    Сначала мы жили бедно, а потом нас обокрали..
    Очевидно же, что данные авторизации нужно где-то хранить. Можно создать и подключить профиль:
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    options = Options()
    options.add_argument("user-data-dir=/home/sergey/SeleniumProfile")
    driver = webdriver.Chrome(chrome_options=options)
    driver.get("https://google.com")
    Ответ написан
    1 комментарий
  • Причина ошибки импортирования qtcore Отсутствует модуль?

    hottabxp
    @hottabxp Куратор тега Python
    Сначала мы жили бедно, а потом нас обокрали..
    Предполагаю что возможно причина в майкрософт библиотеках с++

    Скорее всего так и есть. Тут вариантов масса.
    1) Метод тыка. Скачиваете C++ redistributable и устанавливаете по очереди, пока не устраните ошибку.
    2) Посмотреть на работающих машинах список установленных C++ redistributable.
    3) Прогнать все DLL через Dependency Walker
    4) Посмотреть журналы Windows, возможно там будет имя отсутствующей библиотеки.
    Ответ написан
  • Как отсортировать список файлов?

    hottabxp
    @hottabxp Автор вопроса, куратор тега Python
    Сначала мы жили бедно, а потом нас обокрали..
    Как подсказал galaxy, можно использовать key=lambda. Конкретно для моего случая(там после числа идет точка) можно использовать один из следующих способов:
    sorted(new_file_list, key=lambda n: int(n.split()[1].replace('.','')))
    sorted(new_file_list, key=lambda n: int(n.replace('.','',1).split()[1]))
    sorted(new_file_list, key=lambda n: int(n.split()[1][:-1]))
    Ответ написан
    Комментировать
  • Как открыть все ссылки из файла?

    hottabxp
    @hottabxp Куратор тега Python
    Сначала мы жили бедно, а потом нас обокрали..
    Очень просто.
    main.py:
    import requests
    from bs4 import BeautifulSoup
    
    with open('links.txt') as file:
    	links = file.read().splitlines()
    
    for link in links:
    	response = requests.get(link)
    	soup = BeautifulSoup(response.text, 'html.parser')
    	print(soup.title)
    links.txt:
    https://qna.habr.com/q/1099328
    https://qna.habr.com/q/1099326
    https://qna.habr.com/q/1099320
    https://qna.habr.com/q/1099316
    Результат:
    <title>Как удалить одинаковые ключи из словаря Python? — Хабр Q&amp;A</title>
    <title>Как открыть все ссылки из файла? — Хабр Q&amp;A</title>
    <title>Как отсортировать список файлов? — Хабр Q&amp;A</title>
    <title>Как создать "перезапуск кода" на Python? — Хабр Q&amp;A</title>


    Применение:
    Разбить код на функции, добавить обработку ошибок по своему вкусу.
    Ответ написан
  • Как проверить наличие элемента в json?

    hottabxp
    @hottabxp Куратор тега Python
    Сначала мы жили бедно, а потом нас обокрали..
    Может кривой json? У меня сработало(правда, я json прогнал через фиксер):
    61dc34873ee78316352402.png
    А как получаете json? Если requests, тогда попробуйте так:
    if not result.json()['data']['signals']
    Ответ написан
  • Сломанный усик на процессор amd что может произойти?

    hottabxp
    @hottabxp
    Сначала мы жили бедно, а потом нас обокрали..
    Нужно найти распиновку проца, и посмотреть, за что отвечает нога. Если все работает, скорее всего ничего не произойдет. На проце много дублированных ног для питания.
    Ответ написан
    Комментировать
  • Как сделать свой браузер на основе исходного кода chromium?

    hottabxp
    @hottabxp
    Сначала мы жили бедно, а потом нас обокрали..
    знаю что можно и что переделывали (на некоторых форумах судя по-всему это делал каждый 2-ой)...

    На некоторых форумах, судя по всему, каждый 2-ой - Пиноккио, с длинным носом.

    А так, вариантов немного:
    1) Учите C++, JS, и ещё +100500 разных штук;
    2) Читаете Get the Code: Checkout, Build, & Run Chromium
    3) Заменяете в коде и скриптах "Chromium" на что-то вроде "Бесплатный браузер Stavr для CS:GO на русском без регистрации со встроенным Minecraft" (чтобы больше школьников скачали).
    4) Заменяете скучные обои на свои нескучные.
    5) Клонируете репозиторий кода;
    6) Устанавливаете +100500 зависимостей, sdk и т.д.;
    7) Конфигурируете свой браузер;
    8) Собираете свой браузер с блэкджеком и шлюпками;
    Если все получится, хотя вря тли, то к тому времени, ваш браузер не сможет открыть более 1% сайтов, так как версия движка уже не будет актуальна.

    Есть второй вариант, там программирование знать практически не обязательно:
    1) Ищите в сети "CEF C#" (правда, не знаю, насколько данная приблуда сейчас актуальна).
    2) Далее в гугл:
    a) C# установка CEF;
    b) C# CEF открыть ссылку;
    c) C# Табы;
    d) C# CEF открыть ссылку в новой вкладке;
    ...
    z) Как сделать инсталлятор программы;
    Далее делаете инсталлятор своего браузера с блэкджеком и шлюпками.

    Как по мне, лучше выбрать второй вариант.

    PS: Есть ещё третьей вариант. Если вы обладаете такими ресурсами, как Microsoft, Yandex, Google - просто найдите человека, который сможет найти нужных программеров, дизайнеров, и т.д. - и он все сделает.
    Ответ написан
    1 комментарий
  • Как запускать Linux Mint в качестве live usb всегда?

    hottabxp
    @hottabxp
    Сначала мы жили бедно, а потом нас обокрали..
    Вариков много:
    1) УСТАНОВКА LINUX НА ФЛЕШКУ
    2) РЕДАКТИРОВАНИЕ ОБРАЗОВ В LINUX

    В общем, алгоритм следующий: распаковываем iso. Далее распаковываем образ squashfs(он самый большой). Монтируем файловые системы (системные, вроде tmpfs, etc), Далее входим чрутом, и работаете как в обычной системе. Обновляете пакеты, устанавливаете, удаляете, кидаете скрипты в автозагрузку. Потом выходите из чрута, отмонтируете файловые системы и запаковываете папку обратно в squashfs, и iso образ (предварительно нужно посчитать контрольные сумы файлов).
    Ответ написан
    1 комментарий
  • Как исправить ошибку SyntaxError: Non-ASCII character '\xc2' in file /usr/bin/py3clean?

    hottabxp
    @hottabxp Куратор тега Python
    Сначала мы жили бедно, а потом нас обокрали..
    1) Не нужно таким образом ставить Python.
    2) Уже пора переехать на 64 бита.

    Не понимаю, почему новички рвутся ставить последний Python (например, 3.10). Для новичка что 3.6, что 3.10 - одинаково, они все равно не найдут различий.
    Ответ написан