zoukankan      html  css  js  c++  java
  • python_day5

    selenium的基本使用二


    昨天已经介绍了关于selenium的简单基本基本使用——通过两种方式自动打开和关闭谷歌浏览器今天,我们将介绍的模块将是在昨天打开谷歌浏览器的基础上,打开某一个电商平台,并搜索某一个产品,利用前面学的知识将所有产品的信息爬取出来。

    我们以打开京东官网为例:

    • 建立try模块,捕获异常
      try:
      # 捕获异常
      except Exception as e:
          print(e)
      # 不论发生什么异常,都会驱动浏览器关闭
      finally:
          driver.close()
      
    • 向京东主页发送请求
          # 往京东主页发送请求
          driver.get('https://www.jd.com/')
      
    • 输入商品名目
          # 通过id查找input输入框
          input_tag = driver.find_element_by_id('key')
      
          # send_keys为当前标签传值
          input_tag.send_keys('公仔')
      
          # 按键盘的回车键
          input_tag.send_keys(Keys.ENTER)
      
          time.sleep(3)
      
    • 通过for循环遍历每一个商品
       for good in good_list:
              # 通过属性选择器查找商品详情页url
              # url
              good_url = good.find_element_by_css_selector('.p-img a').get_attribute('href')
              print(good_url)
      
              # 名称
              good_name = good.find_element_by_css_selector('.p-name em').text
              print(good_name)
      
              # 价格
              good_price = good.find_element_by_class_name('p-price').text
              print(good_price)
      
              # 评价数
              good_commit = good.find_element_by_class_name('p-commit').text
              print(good_commit)
      
      
              str1 = f'''
              url: {good_url}
              名称: {good_name}
              价格: {good_price}
              评价: {good_commit}
              
      
              '''
      
    • 把商品信息储存到文本中
          # 把商品信息写入文本中
              with open('jd.txt', 'a', encoding='utf-8') as f:
                  f.write(str1)
      

    以下附完整代码:

    from selenium import webdriver
    # 导入键盘Keys
    from selenium.webdriver.common.keys import Keys
    import time
    
    driver = webdriver.Chrome()
    
    # 检测代码块
    try:
        # 隐式等待,等待标签加载
        driver.implicitly_wait(10)
    
        # 往京东主页发送请求
        driver.get('https://www.jd.com/')
    
        # 通过id查找input输入框
        input_tag = driver.find_element_by_id('key')
    
        # send_keys为当前标签传值
        input_tag.send_keys('公仔')
    
        # 按键盘的回车键
        input_tag.send_keys(Keys.ENTER)
    
        time.sleep(3)
    
        '''
        爬取京东商品信息:
            公仔
                名称
                url
                价格
                评价
        '''
        # element 找一个
        # elements 找多个
        # 查找所有的商品列表
        good_list = driver.find_elements_by_class_name('gl-item')
        # print(good_list)
    
        # 循环遍历每一个商品
        for good in good_list:
            # 通过属性选择器查找商品详情页url
            # url
            good_url = good.find_element_by_css_selector('.p-img a').get_attribute('href')
            print(good_url)
    
            # 名称
            good_name = good.find_element_by_css_selector('.p-name em').text
            print(good_name)
    
            # 价格
            good_price = good.find_element_by_class_name('p-price').text
            print(good_price)
    
            # 评价数
            good_commit = good.find_element_by_class_name('p-commit').text
            print(good_commit)
    
    
            str1 = f'''
            url: {good_url}
            名称: {good_name}
            价格: {good_price}
            评价: {good_commit}
            
    
            '''
            # 把商品信息写入文本中
            with open('jd.txt', 'a', encoding='utf-8') as f:
                f.write(str1)
    
    
        time.sleep(10)
    
    # 捕获异常
    except Exception as e:
        print(e)
    
    # 最后都会把驱动浏览器关闭掉
    finally:
        driver.close()
    View Code
  • 相关阅读:
    第四次作业
    团队编程第三次博客
    团队编程2
    团队编程
    ARM寄存器总结:
    proc介绍及问题分析
    Ubuntu连接手机步骤
    Bluetooth(android 4.2.2版本)
    Android Bluetooth 总结
    android代码常识
  • 原文地址:https://www.cnblogs.com/smile321/p/11105150.html
Copyright © 2011-2022 走看看