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() # 模拟点击《下一页》按钮

    欢迎拍砖

  • 相关阅读:
    JavaScript中的闭包
    SQL 备忘
    SqlServer 2005 升级至SP2过程中出现"身份验证"无法通过的问题
    unable to start debugging on the web server iis does not list an application that matches the launched url
    Freebsd 编译内核
    Freebsd 6.2中关于无线网络的设定
    【Oracle】ORA01219
    【Linux】Windows到Linux的文件复制
    【Web】jar命令行生成jar包
    【Linux】CIFS挂载Windows共享
  • 原文地址:https://www.cnblogs.com/xiaodekaixin/p/11266628.html
Copyright © 2011-2022 走看看