gpt4 book ai didi

javascript - 使用 selenium python 网页抓取获取向下滚动网页的 html 源代码

转载 作者:行者123 更新时间:2023-12-03 02:30:26 27 4
gpt4 key购买 nike

我试图获取所有酒店,但即使我已经执行了向下滚动的脚本,我的 page_source 只显示包含 11 家酒店的 html 代码,即最初加载的内容。

向下滚动抓取所有酒店后如何获得完整的数据源代码?

如果 driver.execute 脚本正在加载整个页面,那么如何将整个页面的页面源存储在我的变量中?

PS:这仅用于教育目的

from selenium import webdriver
import re
import pandas as pd
import time
chrome_path = r"C:\Users\ajite\Desktop\web scraping\chromedriver.exe"
driver = webdriver.Chrome(chrome_path)
driver.get('https://www.makemytrip.com/mmthtl/site/hotels/search?checkin=02252018&checkout=02262018&roomStayQualifier=1e0e&city=GOI&searchText=Goa,%20India&country=IN')

driver.implicitly_wait(3)
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(5)

two_hotels = driver.find_elements_by_xpath('//*[@id="hotel_card_list"]/div')

最佳答案

你的滚动没有被执行,而是:

driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") 

你应该尝试:

for i in range(0,25): # here you will need to tune to see exactly how many scrolls you need
driver.execute_script('window.scrollBy(0, 400)')
time.sleep(1)

我尝试过的代码:

import selenium
import time
from selenium import webdriver
driver = webdriver.Chrome()

driver.get("https://www.makemytrip.com/mmthtl/site/hotels/search?checkin=02252018&checkout=02262018&roomStayQualifier=1e0e&city=GOI&searchText=Goa,%20India&country=IN")
driver.implicitly_wait(3)

for i in range(0,25): # here you will need to tune to see exactly how many scrolls you need
driver.execute_script('window.scrollBy(0, 400)')
time.sleep(1)

time.sleep(10) #more time so the cards will load

two_hotels = driver.find_elements_by_xpath('//*[@id="hotel_card_list"]/div')

two_hotels 现在具有更多值(value)

enter image description here

对于 25 值范围内的 i,我得到了酒店的 42 值,我认为您需要稍微调整一下值才能获得所有你需要的。

关于javascript - 使用 selenium python 网页抓取获取向下滚动网页的 html 源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48758591/

27 4 0
文章推荐: javascript - 捕获浏览器内容的屏幕截图(网站)
文章推荐: azure - 如何使用 Terraform 在管理组范围上定义和分配 Azure 策略?
文章推荐: javascript - 使用 AngularJS,如何将