异常处理

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:\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模拟百度登录

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爬取京东商品信息

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()

Day 07 字符串内置方法和爬虫基础3的更多相关文章

  1. 7.python字符串-内置方法分析

    上篇对python中的字符串内置方法进行了列举和简单说明,但这些方法太多,逐一背下效率实在太低,下面我来对这些方法按照其功能进行总结: 1.字母大小写相关(中文无效) 1.1 S.upper() -& ...

  2. 6.python字符串-内置方法列举

    所谓内置方法,就是凡是字符串都能用的方法,这个方法在创建字符串的类中,下面是总结: 首先,我们要学习一个获取帮助的内置函数 help(对象) ,对象可以是一个我们创建出来的,也可以是创建对象的那个类, ...

  3. python字符串-内置方法列举

    所谓内置方法,就是凡是字符串都能用的方法,这个方法在创建字符串的类中,下面是总结: 首先,我们要学习一个获取帮助的内置函数 help(对象) ,对象可以是一个我们创建出来的,也可以是创建对象的那个类, ...

  4. python字符串内置方法

    网上已经有很多,自己操作一遍,加深印象. dir dir会返回一个内置方法与属性列表,用字符串'a,b,cdefg'测试一下 dir('a,b,cdefg') 得到一个列表 ['__add__', ' ...

  5. python中字符串内置方法

    字符串类型 作用:定义姓名.性别等 定义方式: s='lzs' #\n换行 \t缩进4个空格 \r回退上一个打印结果,覆盖上一个打印结果 加上一个\让后面的\变得无意义 内置方法: (优先掌握) 1. ...

  6. python字符串-内置方法用法分析

    1.字母大小写相关(中文无效) 1.1 S.upper() -> string 返回一个字母全部大写的副本

  7. python 字符串内置方法实例

    一.字符串方法总结: 1.查找: find(rfind).index(rindex).count 2.变换: capitalize.expandtabs.swapcase.title.lower.up ...

  8. python中的字符串内置方法小结

    #!/usr/local/bin/python3 # -*- coding:utf-8 -*- ''' name="my wife is mahongyan" ---------- ...

  9. Python 字符串内置方法笔记

    一. 大小写转换 ① capitalize() capitalize() #字符串首字母大写 >>> str0 = 'hello World' >>> str0.c ...

随机推荐

  1. ubuntu 18 怎样对Windows进行远程桌面控制

    ubuntu 18 怎样对Windows进行远程桌面控制: 1. 先安装一个redesktop 工具(sudo apt-get install redesktop) 2. 在通过 redesktop ...

  2. lqb 基础练习 十六进制转十进制

    基础练习 十六进制转十进制 时间限制:1.0s   内存限制:512.0MB     问题描述 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出. 注:十六进制数中的10~ ...

  3. nyoj 266-字符串逆序输出 (isdigit(), geline(cin, my_string))

    266-字符串逆序输出 内存限制:64MB 时间限制:3000ms 特判: No 通过数:15 提交数:18 难度:0 题目描述: 给定一行字符,逆序输出此行(空格.数字不输出) 输入描述: 第一行是 ...

  4. webpack安装与核心概念

    安装webpack webpack核心概念:入口.输出.加载器.插件.模块.模式 一.安装webpack 1.安装webpack之前需要安装nodejs环境,在使用nodejs环境自带的包管理工具np ...

  5. Docker从入门到实践(2)

    二.基本概念 Docker 镜像 我们都知道,操作系统分为内核和用户空间.对于 Linux 而言,内核启动后,会挂载 root 文件系统为其提供用户空间支持.而 Docker 镜像(Image),就相 ...

  6. 力扣(LeetCode)最后一个单词的长度 个人题解

    给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度. 如果不存在最后一个单词,请返回 0 . 说明:一个单词是指由字母组成,但不包含任何空格的字符串. 示例: 输入: &quo ...

  7. 领扣(LeetCode)单调数列 个人题解

    如果数组是单调递增或单调递减的,那么它是单调的. 如果对于所有 i <= j,A[i] <= A[j],那么数组 A 是单调递增的. 如果对于所有 i <= j,A[i]> = ...

  8. python:模块0

    一.模块是更高级的封装: 容器:数据的封装 函数:语句的封装 类   :方法和属性的封装 模块:模块就是程序,即每个.py文件 二.引入 import 模块名 from 模块名 import xx(函 ...

  9. 从cocos2dx源代码看android和iOS跨平台那些事

    cocos2dx一个跨移动(平板)平台的游戏引擎,支持2d和3d,基于c/c++,网上介绍多在此不详叙.我们本篇关心的是跨平台那些事,自然而然就找到platform目录.好家伙,支持的操作平台还真不少 ...

  10. Asis CTF 2016 b00ks理解

    ---恢复内容开始--- 最近在学习堆的off by one,其中遇到这道题,萌新的我弄了大半天才搞懂,网上的很多wp都不是特别详细,都得自己好好调试. 首先,这题目是一个常见的图书馆管理系统,虽然我 ...