让硒在pythonanywhere上运行

时间:2018-09-16 11:22:34

标签: python selenium selenium-webdriver python-3.5 pythonanywhere

我的理解是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 :(得分:5)

最近,据我了解,雅虎已阻止pythonanywhere运行任何Web抓取脚本。我认为这对于所有AWS服务器和使用它们的用户都是正确的,但是我不确定100%是否如此。我希望这对遇到这个问题的人有所帮助。

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

答案 1 :(得分:0)

您收到该错误,因为硒无法连接到您创建的浏览器。如果您先运行第一段代码,然后运行第二段代码,则显示已关闭,这很可能导致浏览器崩溃。

您需要运行在with块中使用浏览器 的代码。

PythonAnywhere帮助页面上有一个示例,展示了如何以最可靠的方式完成所有操作。