Как заставить селен работать на pythonanywhere - PullRequest
0 голосов
/ 16 сентября 2018

Насколько я понимаю, pythonanywhere поддерживает безголовый браузер Firefox, но вам нужно

from pyvirtualdisplay import Display

И поэтому вы можете подключиться, используя

with Display():
    while True:
        try:
            driver = webdriver.Firefox()
            break
        except:
            time.sleep(3)

И я подключаюсь очень хорошо.Однако после того, как я начал использовать драйвер с

with Display():
    while True:
        try:
            driver = webdriver.Firefox()
            break
        except:
            time.sleep(3)
    wb=load_workbook(r'/home/hoozits728/mutual_fund_tracker/Mutual_Fund_Tracker.xlsx')
    ws=wb.get_sheet_by_name('Tactical')

    for i in range(3, ws.max_row+1):
        if ws.cell(row=i,column=2).value is not None:
            driver.get('https://finance.yahoo.com/quote/' + ws.cell(row=i,column=2).value + '/performance?ltr=1')
            oneyear=driver.find_element_by_css_selector('#Col1-0-Performance-Proxy > section > div:nth-child(2) > div > div:nth-child(5) > span:nth-child(2)').text
            threeyear=driver.find_element_by_css_selector('#Col1-0-Performance-Proxy > section > div:nth-of-type(2) > div > div:nth-of-type(6) > span:nth-of-type(2)').text
            fiveyear=driver.find_element_by_css_selector('#Col1-0-Performance-Proxy > section > div:nth-of-type(2) > div > div:nth-of-type(7) > span:nth-of-type(2)').text
            ws.cell(row=i,column=10).value=oneyear
            ws.cell(row=i,column=11).value=threeyear
            ws.cell(row=i,column=12).value=fiveyear

           … and so on …

, через некоторое время я получил эту ошибку

enter image description here

Для чегоСтоит, этот код прекрасно работает на моей локальной машине.Кроме того, я платный участник, поэтому не должно быть проблем с белым списком.

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Недавно я понял, что Yahoo заблокировал pythonany везде от запуска любых скриптов веб-очистки.Я предполагаю, что это верно для всех серверов AWS и тех, кто их использует, но я не уверен на 100% в этом.Я надеюсь, что это поможет любому, кто сталкивается с этим вопросом.

https://www.pythonanywhere.com/forums/topic/5724/#id_post_52307

0 голосов
/ 16 сентября 2018

Вы получаете эту ошибку, потому что селен не может подключиться к браузеру, который вы создали. Если вы запускаете первую часть кода, а затем вторую часть кода, то дисплей был закрыт, что, вероятно, приведет к сбою браузера.

Вам нужно запустить код, который использует браузер внутри с блоком.

На страницах справки PythonAnywhere есть пример, показывающий, как сделать все это наиболее надежным способом.

...