zoukankan      html  css  js  c++  java
  • Selenium工具爬取商品

           selenium是一个优秀的自动化测试工具,支持多种语言,具体介绍参考官方文档:https://www.seleniumhq.org/docs/。

    下面我们使用selenium工具模拟用户点击商品详情页,在详情页中获取商品预览图。

    一、安装selenium

    pip install selenium

    二、测试安装

    python
    >> from selenium import webdriver
    >> browser = webdriver.Chrome()

    若没有报错,则可进行后面的步骤。若有错误提示未找到chromedriver,需要下载chromedriver

    三、下载chromedriver

    下载与本地浏览器版本相同的chromedriver,下载后,需将该驱动包放入PATH中,我的浏览器版本 75.0.3770.142

    wget http://npm.taobao.org/mirrors/chromedriver/74.0.3729.6/chromedriver_linux64.zip
    tar zxvf chromedriver_linux64.zip
    cd chromedriver_linux64
    export PATH=$PATH:~/Downloads/chromedriver_linux64

    四、使用举例

    url = "http://www.baidu.com"
    browser = webdriver.Chrome()
    browser.get(url)
    ele = browser.find_element_by_class_name('')
    print(ele)
    其中,find_element_by_class_name根据标签class样式来获取元素,类似的方法还有很多,比如:
    find_element_by_id
    find_element_by_xpath
    find_element_by_tag_name
    ....

    五、实战

    下面我们以抓取www.layuva.com中商品信息为例,该站点的商品详情页链接是动态生成的,现在很多站点内容都是动态生成,这类站点很适合selenium工具抓取数据。具体demo参见附件

    1、新建driver实例
    url = "https://www.layuva.com/pc/index.html#/home/searchDetail?category_id=1060730203664142336"
    browser = webdriver.Chrome()
    browser.get(url)
    
    2、获取商品列表
    list_box = browser.find_elements_by_xpath('//*[@id="app"]//div[5]/div[2]/div/div')
    3、模拟用户查看商品详情 for box in list_box: box.click() browser.switch_to.window(browser.window_handles[-1])
    4、获取详情页中的商品信息 image_src = wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="app"]/div[5]/div/div[1]/div[1]/img'))).get_attribute('data-src') 5、退出详情页 browser.close() browser.switch_to.window(browser.window_handles[0])
    6、获取下一页 target = browser.find_element_by_css_selector( '#app > div.searchDetail > div.width-base > div.common-page > ul > li.ivu-page-next') if target.get_attribute('class').find('ivu-page-disabled') >= 0: // 判断是否有下一页 break ActionChains(browser).move_to_element(target).click(target).perform() # 模拟点击《下一页》按钮

    欢迎拍砖

  • 相关阅读:
    [HAOI2015] 按位或
    [CF662C] Binary Table
    逻辑、集合运算上的卷积一览(FMT、FWT,……)
    从零开始的伯努利数
    [LGP2000] 拯救世界
    [BZOJ4180] 字符串计数
    [清华集训2017] 生成树计数
    [CF911G] Mass Change Queries
    微信公众号服务器配置(校验)
    mariadb数据库通过.ibd恢复过程(知道数据库结构的情况下)
  • 原文地址:https://www.cnblogs.com/xiaodekaixin/p/11266628.html
Copyright © 2011-2022 走看看