不同的瀏覽器要用不同的web driver,要安裝驅動庫
chrome:
Safari 更簡單
找到chrome的版本
24年8月19日我的版本是:Version 127.0.6533.100 (Official Build) (arm64)
https://storage.googleapis.com/chrome-for-testing-public/127.0.6533.119/mac-arm64/chrome-mac-arm64.zip
下載後在Finder裡用shift+command+G 開啟路徑搜索,輸入usr/local/bin 打開隱藏文件夾
然後把下載到桌面的chromedriver 拉到bin裡
嘗試運行,說Mac不接受,查了網上的解決方法
(base) bess@YuedeMBP ~ % which chromedriver
/usr/local/bin/chromedriver
(base) bess@YuedeMBP ~ % xattr -d com.apple.quarantine /usr/local/bin/chromedriver
運行之後就可以了,但是瀏覽器會閃退, 又查了一下,用了sleep來解決,現在看是OK的
from time import sleep
from selenium import webdriver
browser = webdriver.Chrome()
sleep(10)
看By的訂位方法,按command,再按By
本课有用的资源
1. scrape.center 作为爬虫练习网站
2. 代理服务器的使用
用requests爬不安全网站,可以在请求的过程中设置参数
res = requests.get('https://...", verify =False)
也可以用以下代码disable warning
urllib3.disable_warnings()
还可以用logging模块捕获警告
import logging
import logging
import requests
logging.captureWarnings(True)
res=requests.get('url', verify=False)
大规模爬去的时候被封号,就要用到代理
通过代理服务器来发送请求
透明代理
匿名代理
高匿代理
所以有可能需要购买代理服务器
付费之后,售方可能会给你一个IP地址
url ='https://sssss"
head={"User-Agent":...}
proxyMeta= "http://36.62.194...."
proxies={"http":proxyMeta,}
#代理URL必须包含链接方式
html=requests.get(url, headers=head, proxies =proxies).content.decode('utf-8')
如果代理需要验证
proxyMeta = 'http://username:password@124...."
超时设置,一秒后没反应就pass
res = requests.get('https://...", timeout=1)
尝试五次,每次30秒
res = requests.get('https://...", timeout=(5,30))
需要登陆的网页
import requests
from requests.auth import HTTPBasicAuth
r=requests.get('https://ssr3.scrape.center/', auth=HTTPBasicAuth('admin', 'admin'))
print(r.status_code)
也可以
import requests
#from requests.auth import HTTPBasicAuth
#r=requests.get('https://ssr3.scrape.center/', auth=HTTPBasicAuth('admin', 'admin'))
r=requests.get('https://ssr3.scrape.center/', auth=('admin', 'admin'))
print(r.status_code)
设置字号
新建默认注释
注释方法
大屏幕和小屏幕不同表现
bootstrap特有
子元素绝对布局,父元素要相对布局
bootstrp里面的p-3,py-5可以调距离
逻辑运算符
and : 与,表示并且
or : 或, 表示或者
not : 非,表示不是
成员运算符
in
not in
身份运算符
is
is not
比较运算符:
== 等于 ,比较对象是否相等
!== 不等于,比较两个对象是否不相等
> 大于
< 小于
>= 大于等于
<=小于等于
true就是0,false就是1
:冒号说明结束了。初学者容易丢。
四个空格。或者tab键
1.2 生成随机整数
语法: random.randint(low, high=None size=None, dtype=l)
生成一个整数或N维整数数组,取数范围: 若high不为None时,取[low,.high)之间随机整数,否则取值(0,ow)之间随机整数。
.3随机抽样
语法: random.choice(a, size=None, replace=True, p=None):
从序列中获取元素,若a为整数,元素取值为np.range(a)中随机数,若a为数组,取值为a数组元素中随机元素。replace 表示是否允许重复,默认ru; p 表示抽取概率,shape必须和相同,每个数字代表a里相同位置数据被抽取的概率,所有概率值相加必须等于1
reshape
resize
和reshape的区别是如果数量小于坑位的数量,重复填充
shape( , , ) z轴,行,列
ravel 和 flatten的区别
raval中c是a的视图,虽然他们是不同的对象,但在修改c的时候,a中相应的数也改变了
视图:可以理解为某个数组的望远镜(视图的概念)
增加维度
squeeze只能减少维度为1的维度,一般使用较少,如果有多个维度为1的维度,指定要减少的维度
合并数组
布尔索引 花式索引
切片
深拷贝
对numpy的切片进行修改是直接对原数组的修改
flat属性,是一个迭代器
flatten()
nditer()
提取一个表格
提取多个表格
excel提取数据
# 级联置空:适用于主表内容没有了,从表内容保留的情况。例如:同学的地址取消或变更,同学信息都在
# 级联删除:适用于主表内容没有了,从表内容删除的情况,例如:课程计划取消了,那么对应的教室、时间、人员安排都删除。
公式:page表示页数,size表示每页的记录条数
select 查询列表 from 表 limit(page-1)*size,size;
limit最后执行,本质上是查询结果的部分显示
数据集合并后,union结果集会自动对记录进行去重
union all结果集会保留重复数据