Selenium:向下滚动页面并用python解析

时间:2017-10-12 12:45:44

标签: python html selenium beautifulsoup

我尝试解析页面ozon.ru

我有一些问题。 我应该滚动页面然后获取所有html代码。 但我滚动页面,高度正在改变,但解析结果是错误的,因为它只返回第一页的结果。 我无法理解,我应该更新页面的HTML代码,我该怎么做?

def get_link_product_ozon(url):
    chromedriver = "chromedriver"
    os.environ["webdriver.chrome.driver"] = chromedriver
    driver = webdriver.Chrome(chromedriver)
    driver.get(url)
    i = 0
    last_height = driver.execute_script("return document.body.scrollHeight")
    while i < 80:
        try:
            driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
            time.sleep(3)
            new_height = driver.execute_script("return document.body.scrollHeight")
            i += 1
            last_height = new_height
        except:
            time.sleep(3)
            continue
    soup = BeautifulSoup(driver.page_source, "lxml")
    all_links = soup.findAll('div', class_='bOneTile inline jsUpdateLink mRuble ')
    for link in all_links:
        print(link.attrs['data-href'])

    driver.close()

1 个答案:

答案 0 :(得分:1)

滚动后加载的div不具有类mRuble,并且您正在进行精确的字符串匹配。也许尝试类似的事情:

all_links = soup.select('div.bOneTile.inline.jsUpdateLink')
all_links = soup.select('div[data-href]')
...