使用Selenium慢慢向下滚动页面

我正试图从航班搜索页面抓取一些数据.

 

此页面以这种方式工作:

你填写一个表格,然后你点击按钮搜索 – 这没关系.当您单击该按钮时,您将被重定向到包含结果的页面,这就是问题所在.这个页面连续添加结果,例如一分钟,这不是什么大问题 – 问题是得到所有这些结果.当您使用真正的浏览器时,您必须向下滚动页面并显示这些结果.所以我试图使用Selenium向下滚动.它可能在页面底部向下滚动可能非常快,或者是跳转而不是滚动页面不会加载任何新结果.

当你慢慢向下滚动时,它会重新加载结果,但是如果你这么做就会停止加载.

我不确定我的代码是否有助于理解,所以我附上它.

 

SEARCH_STRING = """URL""" class spider(): def __init__(self): self.driver = webdriver.Firefox() @staticmethod def prepare_get(dep_airport,arr_airport,dep_date,arr_date): string = SEARCH_STRING%(dep_airport,arr_airport,arr_airport,dep_airport,dep_date,arr_date) return string def find_flights_html(self,dep_airport, arr_airport, dep_date, arr_date): if isinstance(dep_airport, list): airports_string = str(r'%20').join(dep_airport) dep_airport = airports_string wait = WebDriverWait(self.driver, 60) # wait for results self.driver.get(spider.prepare_get(dep_airport, arr_airport, dep_date, arr_date)) wait.until(EC.invisibility_of_element_located((By.XPATH, '//img[contains(@src, "loading")]'))) wait.until(EC.invisibility_of_element_located((By.XPATH, u'//div[. = "Poprosíme o trpezlivosť, hľadáme pre Vás ešte viac letov"]/preceding-sibling::img'))) self.driver.execute_script("window.scrollTo(0,document.body.scrollHeight);") self.driver.find_element_by_xpath('//body').send_keys(Keys.CONTROL+Keys.END) return self.driver.page_source @staticmethod def get_info_from_borderbox(div): arrival = div.find('div',class_='departure').text price = div.find('div',class_='pricebox').find('div',class_=re.compile('price')) departure = div.find_all('div',

转载于:https://www.cnblogs.com/perfectdata/p/10586183.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值