开发者社区> 问答> 正文

用Selenium取消页面在多个浏览器间随机加载失败的javascript网站

我有一个带有selenium的python刮板,可以刮掉一个动态加载的javascript网站。 拾荒本身工作正常,但网页有时无法加载与404错误。 问题是,公共http没有我需要的数据,但加载每次和javascript http的数据,我需要有时不会加载随机时间。 更奇怪的是,相同的javascript http在一个浏览器中加载,而在另一个浏览器中不加载,反之亦然。 我尝试了chrome、firefox、firefox开发者版和opera的webdriver。没有一个是每次都加载所有页面的。 没有我需要的数据的公共链接是这样的:https://www.sazka.cz/kurzove-sazky/fotbal/*League*/。 我需要的Javascript链接是这样的:https://rsb.sazka.cz/fotbal/League/>。 平均而言,在30个链接中,有8个无法加载,尽管在不同的浏览器中,相同的链接在同一时间被完美地加载。 我试着在页面资源中搜索一些线索,但什么也没找到。 谁能帮我看看哪里有问题吗?谢谢你! 编辑:这是我认为相关的代码 Edit2:你可以通过右键点击某个联盟来重现这个问题,并尝试在另一个标签页中打开链接。然后可以看到,即使这个页面第一次加载后,打开它在新的选项卡,它改变了http链接的开始,从https://www.sazka.cz到https://rsb.sazka。有时会出现404错误,这种错误会持续一个多小时。

driver = webdriver.Chrome(executable_path='chromedriver', 
                               service_args=['--ssl-protocol=any', 
                               '--ignore-ssl-errors=true'])
driver.maximize_window()
for single_url in urls:   
    randomLoadTime = random.randint(400, 600)/100
    time.sleep(randomLoadTime)
    driver1 = driver
    driver1.get(single_url)  
    htmlSourceRedirectCheck = driver1.page_source

    # Redirect Check
    redirectCheck = re.findall('404 - Page not found', htmlSourceRedirectCheck)

    if '404 - Page not found' in redirectCheck:
        leaguer1 = single_url
        leagueFinal = re.findall('fotbal/(.*?)/', leaguer1)
        print(str(leagueFinal) + ' ' + '404 - Page not found')
        pass

    else:
        try:
            loadedOddsCheck = WebDriverWait(driver1, 25)
            loadedOddsCheck.until(EC.element_to_be_clickable \
            ((By.XPATH, ".//h3[contains(@data-params, 'hideShowEvents')]")))
        except TimeoutException:
                pass

        unloadedOdds = driver1.find_elements_by_xpath \
        (".//h3[contains(@data-params, 'loadExpandEvents')]")
        for clicking in unloadedOdds:
            clicking.click()
            randomLoadTime2 = random.randint(50, 100)/100
            time.sleep(randomLoadTime2)

        matchArr = []
        leaguer = single_url

        htmlSourceOrig = driver1.page_source

问题来源StackOverflow 地址:/questions/59382341/scrapping-javascript-website-with-selenium-where-pages-randomly-fail-to-load-acr

展开
收起
kun坤 2019-12-27 17:13:12 579 0
1 条回答
写回答
取消 提交回答
  • ……

    2019-12-27 17:21:07
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
JavaScript面向对象的程序设计 立即下载
Delivering Javascript to World 立即下载
编程语言如何演化-以JS的private为例 立即下载