selenium 基本使用:
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()
数据类型的使用:
int、float、str、bool、list、dict、complex、tuple、set
重点:*****
数据类型的重点方法!
可变不可变类型!
数据类型的相互转换!
非重点:
数据类型不常用方法
isinstance(obj,类型):可以判断,True/False 本质上作为1/0存储的。
字符串常规操作:******
1、字符串的索引取值:能索引取值的多个值都是有序。例:str="123abc"
使用:字符串名+[索引值]
2、字符串拼接:用"+"号或用占位符"%s"。
3、字符串长度:len(字符串)
4、字符串切片:取子字符串。变量名=字符串[开始:结束:步长]
s=str[0:3:1] s=str[-1:-3:-1]
5、字符串循环(遍历):for i in 字符串 :
6、c成员运算:判断某字符串是否在该字符串中:
某字符串 in 该字符串 结果为bool值
字符串重要方法:*****
1、索引:目标字符串的索引位置:
位置=字符串.index("目标字符串")
2、去字符串两边空格:strip
字符串.strip()
3、计算目标字符串出现次数:count
4、判断字符串是否是数字:isdigit()
字符串.isdigit():结果为bool值,只能判断正整数。
5、大小写转换:upper/lower 字符串.upper/lower
首字母大写:capitalize()
每个单词首字母大写:title()
6、判断是否以某某开头或结尾:startwith()/endwith(),结果为 bool值
7、替换:replace(old,new,count)
8、格式化:format
列表类型:列表内部可以存放多个值,可以是任何类型
列表可以嵌套
列表的常用操作:
1、索引取值:
2、列表运算:+、*。得到的是新列表。
3、列表长度:len(列表)
4、列表切片:[: :]
5、成员运算: 目标成员 in 目标列表
6、循环:for i in 目标列表 :
列表常用方法:
1、列表的增删改查:
增:列表.append(): 末尾增
列表.insert(index,值):任意位置的index之前的增
改:列表[index]=目标改的值
删:列表.remove(目标值)
列表.pop():默认从末尾删,并返还值。可以(index) 指定位置删除
del 列表[index]
列表.clear():清空列表
2、其他方法:
排序:按照目标规则进行排序:列表.sort():默认正向排序
针对于同类型!
反转排序:列表.sort(reverse=True)
列表.reverse():叫反转不叫排序
计算值的个数:列表.count():列表中可以存放重复数据
用来计算目标值的存放次数。
整体增加,添加到末尾:列表.extend("可迭代对象")
目标的索引位置,可以规定区间:
列表.index(目标对象,[开始位置,[结束位置]])
***可变与不可变类型***:
可变类型:值改变,地址不变。
不可变类型:值改变,地址也改变。
了解内容:
1. find | rfind:查找子字符串索引,无结果返回-1
2. lstrip:去左留白
3. rstrip:去右留白
4. center | ljust | rjust | zfill:按位填充
语法:center(所占位数, '填充符号')
5. expandtabs:规定 所占空格数
6. captialize | title | swapcase:首字母大写 | 单词首字母大写 | 大小写反转
7. isdigit | isdecimal | isnumeric:数字判断
8. isalnum | isalpha:是否由字母数字组成 | 由字母组成
9. isidentifier:是否是合法标识符
10. islower | isupper:是否全小 | 大写
11. isspace:是否是空白字符
12. istitle:是否为单词首字母大写格式