zoukankan      html  css  js  c++  java
  • Day 07 字符串内置方法和爬虫基础3

    异常处理

    try:
        print(1/0) # 有错误就跳过,没错误就执行
    except ZeroDivisionError: # 错误被捕捉
        pass # 什么也不做
    
    
    try:
        key = input('请输入一个key来获取相应的值')
        dic = {'a': 1}
        dic[key] # KeyError
    except Exception as e: # Exception万能异常 把错误信息输出,同时一般把错误记录到日志中
        logging.info(e) # 给程序员看
        print('请输入正确的key') # 给用户看
    
    # 预运行(类似把代码抽离到另外一个文件中运行,这样的运行对本文件不会造成任何影响),能不用则不用
        
    

    LeetCode使用之两数之和(示例)

    给定一个整数数组(列表) nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

    示例1:

    给定 nums = [2, 7, 11, 15], target = 9

    因为 nums[0] + nums[1] = 2 + 7 = 9

    所以返回 [0, 1]

    # 需求1: 在该数组中找出和为目标值的那 两个 整数
    # 需求2: 返回他们的数组下标
    # 条件: 你不能重复利用这个数组中同样的元素
    
    nums = [2, 7 11, 15]
    target = 9
    for i in range(len(nums)):
        for j in range(i+1, len(nums)):
            if nums[i] + num[j] = target:
            	return i,j 
            
    # 循环一次,用减法得到结果,判断是否在nums内
    nums = [2, 7 11, 15]
    target = 9
    for i in range(len(nums)):
        sub = target - nums[i]
        if sub in nums:
            res = nums.index(sub)
            if r
            return i,res
    

    字符串内置方法

    a = 'mrbigb'
    
    
    # 索引取值
    print(a[0]) # m
    
    # 切片
    print(a[0:5]) # mrbig
    
    # 成员运算
    print('bigb' in a) # True
    print('bigb1' not in a) # True
    
    
    # for循环
    for i in a:  
        print(i) # m r b i g b
    
    # len()
    print(len(a)) # 6
    
    
    a = '**mrbigb**'
    # .strip(): 去掉两端元素
    print(a.strip())  # 去除两端空格  
    print(a.strip('*'))  # 去除两端*     mrbigb
    
    
    # lstrip()/rstrip(): 去除左端/右端元素
    print(a.lstrip('*')) # mrbigb**
    print(a.rstrip('*')) # **mrbigb
    
    # .startswith()/endswith(): 判断以...开头/以...结尾
    print(a.startswith('mr')) # True
    print(a.endswith('bigb')) # True
    
    # .find()/index() 获取某一个元素的索引位置
    print(a.find('x'))  # 找不到返回-1  
    # print(a.index('x'))  # 找不到报错
    
    # .join() 把列表内的元素拼接出来
    print('*'.join(['a', 'b', 'c'])) # a*b*c
    
    # .split(): 切割
    a = 'a*b*c'
    print(s.split('*'))  # 以*为切割符号,切割字符串
    
    # .center/ljust/rjust : 打印更美观,居中/居左/居右
    print(a.center(50, '-')) # 居中, 两边各50个'_'
    print(a.ljust(50, '-'))  # 靠左, 右边50个'_'
    print(a.rjust(50, '-')) # 靠右, 左边50个'_'
    
    # .isdigit()/isalpha()
    print(a.isdigit())  # 是否为纯数字
    print(a.isalpha())  # 是否为纯字母
    
    # .count() 计数
    print(a.count('bigb')) # 1
    
    # .replace() 替换
    a.replace('bigb', 'bigme') # 将字符串中的bigb替换成bigme
    
    

    爬虫基础3

    selenium基本使用

    # 导入webdriver驱动浏览器
    from selenium import webdriver
    import time
    
    # 通过 webdriver 驱动浏览器加载驱动
    # webdriver.Chrome('驱动绝对路径')
    driver = webdriver.Chrome(r'D:chromedriverchromedriver.exe')
    
    try:
    
        # 等待浏览器数据加载10秒
        driver.implicitly_wait(10)
        driver.get(r'https://www.baidu.com/') # 输入百度网址
    
        # 找到搜索框并输入python
        input_tag = driver.find_element_by_id('kw')
        input_tag.send_keys('python')
    
        # 找到百度一下按钮并点击
        submit_tag = driver.find_element_by_id('su')
        submit_tag.click()
    
        # 等待10秒
        time.sleep(10)
    
    finally:
        driver.close()
    
    

    selenium模拟百度登录

    from selenium import webdriver
    import time
    
    # 通过webdriver加载驱动
    driver = webdriver.Chrome(r'D:chromedriverchromedriver.exe')
    
    try:
        # 打开浏览器访问百度主页
        driver.implicitly_wait(10)
        driver.get('https://www.baidu.com')
    
        # 通过文本找到登录按钮并点击
        login_botton = driver.find_element_by_link_text('登录')
        login_botton.click()
        time.sleep(3)
    
    
        # 通过id找到用户名登录按钮并点击
        user_login_tag = driver.find_element_by_id('TANGRAM__PSP_10__footerULoginBtn')
        user_login_tag.click()
        time.sleep(3)
    
        # 通过id找到账号输入框并输入
        id_input = driver.find_element_by_id('TANGRAM__PSP_10__userName')
        id_input.send_keys('18895317622')
        time.sleep(3)
    
        # 通过id找到密码输入框并输入
        password_input = driver.find_element_by_id('TANGRAM__PSP_10__password')
        password_input.send_keys('0123456')
        time.sleep(3)
    
        # 找到并点击登录按钮
        submit = driver.find_element_by_id('TANGRAM__PSP_10__submit')
        submit.click()
        time.sleep(10)
    
    finally:
        driver.close()
    

    selenium爬取京东商品信息

    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys  # 键盘按键操作
    import time
    
    try:
        # 加载驱动
        driver = webdriver.Chrome(r'D:chromedriverchromedriver.exe')
    
        # 打开京东首页
        driver.implicitly_wait(10)
        driver.get('https://www.jd.com/')
        time.sleep(5)
    
        # 通过id找到搜索栏并搜索'手机'
        ser_bar = driver.find_element_by_id('key')
        ser_bar.send_keys('手机')
    
        # 模拟键盘按enter键
        ser_bar.send_keys(Keys.ENTER)
        time.sleep(5)
    
        # 按销量排序
        # 按文本找到销量按钮并点击
        sales_volume_botton = driver.find_element_by_link_text('销量')
        sales_volume_botton.click()
        time.sleep(5)
    
        # 通过id查找所以商品的父标签
        goods_div = driver.find_element_by_id('J_goodsList')
    
        # 通过class查找goods.div所以li标签
        goods_list = goods_div.find_elements_by_class_name('gl-item')
    
        # 循环获取goods_list里每一个li标签
        for goods in goods_list:
            # 获取价格文本
            # css 属性选择器
            # 通过css_selector获取商品价格
            goods_price = goods.find_element_by_css_selector('.p-price i').text
            # 通过css_selector获取商品名称
            goods_name = goods.find_element_by_css_selector('.p-name em').text
            # 通过css_selector获取商品评价人数
            goods_commit = goods.find_element_by_css_selector('.p-commit a').text
            # 通过css_selector获取商品详情链接
            goods_url = goods.find_element_by_css_selector('.p-commit a').get_attribute('href')
    
            goods_data = f'''
            商品名称: {goods_name}
            商品价格: {goods_price}
            评价人数: {goods_commit}
            商品详情: {goods_url}
            '''
            # 保存数据
            with open('jd goods list.text', 'a', encoding='utf-8') as f:
                f.write(goods_data)
    
        time.sleep(10)
    finally:
        driver.close()
    
    
  • 相关阅读:
    virtualbox+vagrant学习-2(command cli)-9-vagrant Plugin命令
    virtualbox+vagrant学习-2(command cli)-15-vagrant resume命令
    virtualbox+vagrant学习-2(command cli)-14-vagrant reload命令
    virtualbox+vagrant学习-2(command cli)-12-vagrant Provision命令
    virtualbox+vagrant学习-2(command cli)-11-vagrant PowerShell命令
    java设计模式之单例
    java设计模式之策略
    java设计模式之组合
    设计模式之适配器
    java设计模式之模板方法
  • 原文地址:https://www.cnblogs.com/bigb/p/11432743.html
Copyright © 2011-2022 走看看