主页

python爬虫分享

爬虫 1. 分类 1. 通用爬虫 - Baidu Google Yahoo 2. 聚焦爬虫 - 面向特定主题 2. 爬虫流程模块 1. 网络请求模块 - urllib requests aiohttp 2. 爬虫控制模块 - url队列 3. 信息提取模块 - bs4 xpath 正则 3. 技术分类 构造http:自由度高、根据需求变化 requests asyncio-aiohttp 使用框架: 按照特定的模式进行爬取 scrapy pysider 使用selenium: 基于浏览器模拟用户行为 Scrapy架构 Scrapy Engine:引擎,负责其他组件通信,事件调度触发 Spiders:负责处理Resp...

阅读更多

Mysql读书笔记

行锁 MySQL的行锁由各自的引擎自己实现 两阶段锁协议: 在InnoDB中行锁是需要才加上的,并且需要等到事务commit后才会释放 事务需要锁住多个行,可以把最有可能造成锁冲突的语句放在后面(还是有可能产生死锁) 死锁解决策略: 直接进入等待,设置等待超时时间 innodb_lock_wait_timeout来设置 默认50s 发起死锁检测,如果出现死锁,回滚数据 参数innodb_deadlock_detect设置是否开启死锁检测 减少死锁: 如果出现热点行更新出来的性能问题: 确保不会发生死锁 -》 关掉死锁检测 控制并发度

阅读更多

MySQL读书笔记

MySQL分层架构 Server层:涵盖MySQL大多数的核心功能,以及内置函数如存储过程、触发器、视图等 存储引擎:负责数据的存储和提取 从一条查询语句分析: 其中Server层可划分为: 连接器: 负责跟客户端建立连接、获取权限、维持和管理连接 mysql -h ip -P port -u name -p password show processlist; 查看链接 默认八小时的连接时间 wait_timeout控制 长链接:连接成功后,客户端持续有请求,使用同一连接。 短链接:每次执行完很少的几次操作就断开。 推荐使用长连接 —— MySQL占用内存大 ...

阅读更多

Mysql双机热备

MySQL双机热备 1. 准备两台服务器(虚拟机也可以) A: 1.1.1.1 B: 2.2.2.2 两台服务器均安装同一版本的MySQL数据库,其中将A作为master, B服务器作为slave。 两台服务器中准备好相同的数据(可利用mysqldump进行数据的迁移) 2. 配置master服务器(1.1.1.1) 登陆MySQL数据库 mysql -u xxx -p xxx 建立主从数据库同步账户 mysql> grant replication slave on *.* to 'broot'@'2.2.2.2' identified by 'broot'; mysql> flush privileges; 当创建好用户后,可在B服务器上进行测试 m...

阅读更多

Fastapi教程004

请求体参数 ### 什么是request body ? 当我们想要从浏览器发送数据到API时,我们可以将这个数据作为request body即请求体。 简单说一下什么叫请求体:请求体是客户端发送到API的数据。响应体是API发送给客户机的数据,例如我们在登录一个网站,我们填写的账户密码就是会被封装起来发送到后端服务器进行处理 这个被封装发送到后端服务器的数据我们通常叫它 “请求体”,与请求体相对应的就是“响应体”是由后端服务器返回的数据,我们填写完账户密码后点击登录按钮,会收到类似“登陆成功”的消息,这个就是响应体。 而且当我们发送完请求数据后,后端服务器并不一定会给我们发送一个“响应体”数据。 ### 如何声明 request body 可以通过Pydantic进...

阅读更多

Fastapi教程003

Query参数 简单了解 当我们需要声明其他功能变量,但是不想将其设置为Path路径参数时,通常情况下我们会使用query参数去声明。 query参数通常情况下是在URL中用?来表示的,以key-value的形式出现并且多个k-v之间是用&相连。 举个栗子: from fastapi import FastAPI app = FastAPI() fake_items_db = [{"item_name": "Foo"}, {"item_name": "Bar"}, {"item_name": "Baz"}] @app.get("/items/") async def read_item(skip: int = 0, limit: int = 1...

阅读更多

Fastapi教程002

Path参数 简单demo 你可以使用python字符串进行变量的声明,代码如下: from fastapi import FastAPI app = FastAPI() @app.get("/items/{item_id}") async def read_item(item_id): return {"item_id": item_id} 上面代码的含义是: 路径参数 item_id 将作为 read_item方法的参数,当通过uvicorn main:app --reload将服务跑起来后,可通过http://127.0.0.1:8000/items/foo进行访问,在浏览器中将会返回 {"item_id":"foo"} Path...

阅读更多

Fastapi教程001

老实说,本人英语水平有限,此文档翻译是在个人理解的基础上进行的,如有错误之处请指正,并且欢迎英语水平高的同学加入到这个行列中。而且大家能找到这个博客教程说明已经对Fastapi有了初步的了解,所以我就不在这里介绍这个框架了。 华丽的分割线 第一章 1.0 环境安装与简单Demo创建 本文默认使用创建了一个Python3的虚拟环境进行学习的,如有疑问请移步 百度 进行环境创建 第一步安装 Fastapi与uvicorn pipenv install fastapi pipenv install uvicorn 两种方式任选一种即可 pip install uvicorn pip install fastapi 2.0 第...

阅读更多