爬虫-获取鼠标点击或则移动到指定位置才能获得的动态加载数据

本文介绍如何使用selenium模拟浏览器操作,针对https://www.zalando.de/damen-home/网站,当鼠标移到横向导航栏时,抓取动态加载的子分类链接。涉及网页元素操作及爬取所有子分类下商品数据的源码分享。
摘要由CSDN通过智能技术生成

测试网站 https://www.zalando.de/damen-home/  一家电子商城网站

我们的目的就是去爬取各个子分类下面的链接,

这些数据必须到当鼠标移动到 上面的横向导航栏菜单才会动态加载出对应的子菜单。

主体思路

使用selenium去模拟将鼠标放到航向导航栏,同时立刻获得下面加载出来的动态数据

会涉及到 基于driver的网页元素操作

以及附上源码:

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import os,time



#下载动态界面并返回子分类链接
def get_dynamic_htmlNavLink(site_url):
    print('开始加载',site_url,'动态页面')
    chrome_options = webdriver.ChromeOptions()
    #ban sandbox
    chrome_options.add_argument('--no-sandbox')
    chrome_options.add_argument('--disable-dev-shm-usage')
    #use headless
    #chrome_options.add_argument('--headless')
    chrome_options.add_argument('--disable-gpu')
    chrome_options.add_argument('--ignore-ssl-errors')
    driver = webdriver.Chrome(executable_path=CHROME_DRIVER_PATH,chrome_options=chrome_options)
    #print('dynamic laod web is', site_url)
    driver.set_page_load_timeout(100)
    #driver.set_script_timeout(100)
    try:
        driver.get(site_url)
    except Exception as e:
        driver.execute_script('window.stop()')  # 超出时间则不加载
        print(e, 'dynamic web load timeout')
    action = ActionChains(driver)
    womwn_nav_tag = driver.find_element_by_css_selector('.z-navicat-header_categoryList')
    nav_tag_list = womwn_nav_tag.find_elements_by_css_selector('li')
    cate_list = []
    for tag in nav_tag_list:
        print(tag.text)
        action.move_to_element(tag).perform()
        time.sleep(5)
        a_tag_list = driver.find_elements_by_css_selector('a.z-navicat-header_subCategoryLink')
        for tag in a_tag_list:
            href = tag.get_attribute('href')
            if href != '':
                print(href)
                cate_list.append(href)
    try:
        driver.quit()
    except:
        pass
    return cate_list


site_url = 'https://www.zalando.de/damen-home/'
 get_dynamic_htmlNavLink(site_url)

最后附上爬取该网站所有子分类下面的所有商品数据,包含了上面

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值