Задать вопрос
@Usenovich

Не работает код внутри def?

Есть рабочий парсер мне его надо залить в функцию что бы вызвать в другом файле, но парсер просто перестает работать внутри функций, никаких ошибок нет просто код запускается и мгновенно заканчивается, а должен работать минут 3-4
from bs4 import BeautifulSoup
from selenium import webdriver
import time

URL = 'https://equanity.notion.site/af08990fbca340b38301653a7da4c9c3'

options = webdriver.ChromeOptions()
options.headless = True
options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36")
options.add_argument("--disable-blink-features=AutomationControlled")

driver = webdriver.Chrome(executable_path = "D:\PYTHON\Imigracya\chromedriver.exe",options = options)
driver.maximize_window()

try: 
    driver.get(url=URL)
    time.sleep(7)
    source = driver.page_source
    soup = BeautifulSoup(source, 'lxml')
    all_buttons_get = soup.find_all(class_ = "pseudoSelection")
    buttons_name = []
    buttons_href = []
    
    for item in all_buttons_get:
        try:
            item_text = item.text
            item_href = "https://equanity.notion.site/" + item.find('a')['href']
            buttons_name.append(item_text)
            buttons_href.append(item_href)
        except:pass
    del buttons_name[0:2]
    file = open("name.txt", "w", encoding = "utf-8")
    file.write("\n".join(buttons_name).join("\n"))

    for inf in buttons_name:
        file.write("%s\n" %inf)
    file.close()
except:pass

count = 1
try:
    del buttons_href[0:2]
    for hrefs in buttons_href:
        driver.get(url=hrefs)
        time.sleep(7)
        source_2 = driver.page_source      
        soup = BeautifulSoup(source_2, 'lxml')
        text = [i.text for i in soup.find_all('div', class_='notion-selectable')]
        li = []  
        for i in text: 
            if i not in li: 
                li.append(i) 
        del li[0:6]

        file = open(f"data/{count}_info.txt", "w", encoding = "utf-8")
        file.write("\n".join(li).join("\n"))

        for item in li:
            file.write("%s\n" % item)
        file.close()
        count += 1 
except:pass


Вот весь код, например я объявляю функцию main и внутри него пишу код, то код не работает а вне функций все отлично работает
  • Вопрос задан
  • 110 просмотров
Подписаться 1 Простой 3 комментария
Решения вопроса 1
@Usenovich Автор вопроса
Оказывается я не вызывал функцию так: if __ name __ == '__ main __': main() а просто объявляю
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@PavelMos
То есть весь текст скрипта обёрнут в def fuction1() : ....
и потом в другом файле import function1 и вызов function1() ?
URL он нормально видит ? В тексте везде try, то есть если URL не откроется, скрипт не остановится с ошибкой, а просто сделает pass.
Как вариант, можно запустить с отладкой, или расставить контрольные print (...)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы