Day 07 built-in string methods and reptiles base 3

Exception Handling

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') # 给用户看

# 预运行(类似把代码抽离到另外一个文件中运行,这样的运行对本文件不会造成任何影响),能不用则不用
    

Use LeetCode sum of two numbers (example)

Given an array of integers (list) nums and a target value target, and ask you to identify the target value of the two integers in the array, and return to their array subscript. You can assume that each input corresponds to only one answer. However, you can not re-use the same array element.

Example 1:

Given nums = [2, 7, 11, 15], target = 9

Because nums [0] + nums [1] = 2 + 7 = 9

Is returned [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

String built-in method

# 内置方法:自带的方法(提前安排好的,会用就行了)
# 字符串的内置方法:只有字符串才能使用,列表不能用

s = 'nick handsome'
#    0123

# 1. 索引取值
print(s[0])

# 2. 切片
print(s[0:4])

# 3. 成员运算
print('nick' in s)
print('nick1' in s)

s = 'nick handsome'
# 4. for循环
for i in s:  # n i c k  h a
    print(i)

# 5. len()
print(len(s))

# 接下来讲的都是字符串.出来的方法

s = '****  ni  ck  '
print(s)
# 6. strip(): 默认去掉两端空格,可以
# print(s.strip())  # 去空格
# print(s.strip('*'))  # 去*
print(s.strip('n* '))  # 去 和*和n

# 7.lstrip()/rstrip(): 左端/右端
s = '**nick**'
print(s.lstrip('*'))
print(s.rstrip('*'))

# 8.startswith()/endswith(): 以。。开头/以。。结尾
s = 'nick'
print(s.startswith('nick'))
print(s.endswith('k'))

# 9.find()/index() : 获取某一个元素的索引位置
s = 'nick'
print(s.find('a'))  # 找不到返回-1
# print(s.index('a'))  # 找不到报错


# 10.join() : 把列表内的元素拼接出来
print('*'.join(['a', 'b', 'c']))

# 11.split(): 切割
s = 'a*b*c'
print(s.split('*'))  # 以*为切割符号,切割字符串

# 12.center/ljust/rjust : 打印更美观,居中/居左/居右
print(s.center(50, '-'))
print(s.ljust(50, '-'))
print(s.rjust(50, '-'))

# 13.isdigit()/isalpha()
s = 'a'
print(s.isdigit())  # 是否为纯数字
print(s.isalpha())  # 是否为纯字母

# 14.count(): 计数
s = 'nick nick'
print(s.count('nick'))

# ctrl+alt+l --> 让他符合pep8标准(python创始人规定了代码的风格)

Reptile base 3

The basic use of selenium

# 导入webdriver驱动浏览器
from selenium import webdriver
import time

# 通过 webdriver 驱动浏览器加载驱动
# webdriver.Chrome('驱动绝对路径')
driver = webdriver.Chrome(r'D:\chromedriver\chromedriver.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 analog Baidu Log

from selenium import webdriver
import time

# 通过webdriver加载驱动
driver = webdriver.Chrome(r'D:\chromedriver\chromedriver.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 crawling Jingdong product information

from selenium import webdriver
from selenium.webdriver.common.keys import Keys  # 键盘按键操作
import time

try:
    # 加载驱动
    driver = webdriver.Chrome(r'D:\chromedriver\chromedriver.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()

Guess you like

Origin www.cnblogs.com/bigb/p/11432743.html