我有一个带有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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。