Selenium基本使用
Selenium基本操作环境准备pip install selenium下载对应版本的谷歌浏览器驱动chromedriver,放在Python目录的Scripts文件夹下
基本使用1234567891011121314151617181920212223242526272829303132333435363738from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver import ActionChainsfrom selenium.webdriver import ChromeOptionsfrom time import sleepfrom PIL import Image#实例化一个浏览器对象bro = webdriver.Chrome()#发起请求bro.get("https://www.baidu.com")#定位所用的方法By.XPATH By.CSS_SELECTOR By.ID#定位输入框并写入字符kw = br ...
异步&进程池&防盗链爬取梨视频热门页视频
异步&进程池&防盗链爬取梨视频热门页视频梨视频热门页
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889import requestsfrom lxml import etreeimport randomimport refrom multiprocessing.dummy import Poolimport timeimport aiohttpimport asyncioimport aiofilesurl = "https://www.pearvideo.com/popular"headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleW ...
ddddocr库实现验证码识别
ddddocr库实现验证码识别123456789import ddddocrocr = ddddocr.DdddOcr()with open("test.jpg", "rb") as f: img = f.read()res = ocr.classification(img)print(res)
处理响应数据中文乱码
处理响应数据中文乱码response = requests.get(url=url, headers=headers)
根据内容推断response.encoding = response.apparent_encoding
将字符串编码为gbk字符编码格式response.encoding = "gbk"
将字符串编码为utf-8字符编码格式response.encoding = "utf-8"
用 ISO-8859-1 编码对内容进行编码,然后再使用 GBK 解码resp.text.encode("iso-8859-1").decode("gbk")
最长上升子序列(LIS)和最长公共子序列(LCS)
最长上升子序列(LIS)和最长公共子序列(LCS)最长上升子序列DP(O(n^2^))12345678910111213141516171819202122232425262728#include <iostream>using namespace std;const int N = 5010;int f[N], a[N], n; //f[i]:以a[i]结尾的最长上升子序列int main(){ cin >> n; for (int i = 1; i <= n; i ++ ) { scanf("%d", &a[i]); f[i] = 1; } for (int i = 1; i <= n; i ++ ) for (int j = 1; j <= i - 1; j ++ ) if (a[j] < a[i]) f[i] = max(f[i], f[j] + 1 ...
A*算法
A*算法思路和性质
在bfs基础上将队列换为优先队列,用(起点到当前点的距离+当前点到终点的估计距离)排序
估计距离<=实际距离
数据无解A*比BFS慢,优先队列操作O(logn)
终点第一次出队一定是答案(可证明)
八数码123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105#include <iostream>#include <vector>#include <cstring>#include <unordered_map>#include <queue>#include <cmath>#include <algorithm> ...
数位dp模板
数位dp模板模板应用:求某个区间[l, r]中,满足某个条件的数的个数思路:
函数f(x)求[0, x]合法的数的个数,答案为f(r) - f(l-1)
从高位向低位枚举,每一位t可以划分为两个分支,左分支为0,1,…,t-1,右分支为t
预处理左分支的所有合法个数,递归处理右分支
不重不漏动态规划[0, x]所有数1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162#include <iostream>#include <cstring>#include <vector>#include <cmath>using namespace std;typedef long long ll;const ll N = 30;// f[i][j]:用于左分支ll f[N][N];// 预处理fvoid init(){}ll dp(ll n){ ...
网页数据解析三种方式
网页数据解析三种方式正则表达式123456import reimport requestsresp = requests.get(url=url, headers=headers)pattern = re.compile(r'正则表达式')data = pattern.findall(resp.text)
bs412345678import bs4import requestsresp = requests.get(url=url, headers=headers)# 创建BeautifulSoup对象soup = bs4.BeautifulSoup(resp.text, 'lxml')# 通过CSS选择器从页面中提取标签data = soup.select("css选择器")
xpath1234567import requestsfrom lxml import etreeresp = requests.get(url=url, headers=headers)tree = etree.HTML(resp.text)da ...
基础算法模板
基础算法模板
快速排序
归并排序
前缀和
差分
二分
高精度
离散化
位运算
快读快写
卡常
快速排序时间复杂度O(nlogn)
123456789101112131415//l:左端点 r:右端点void quick_sort(int a[], int l, int r){ if (l >= r) return ; int i = l - 1, j = r + 1, x = a[l + r >> 1]; while (i < j) { do i ++ ; while (a[i] < x); do j -- ; while (a[j] > x); if (i < j) swap(a[i], a[j]); } quick_sort(a, l, j), quick_sort(a, j + 1, r);}
应用 求第k小的数时间复杂度O(n)
1234567891011121314151617//返回第k小的数int quick ...
数学基础算法模板
数学基础算法模板
试除法判断质数
欧拉筛求质数
分解质因数
最大公约数gcd
试除法求约数
约数个数
约数之和
龟速乘
快速幂
矩阵乘法
1 ~ n所有数的约数个数和 ≈ nlognint范围内约数最多的一个数的约数个数 ≈ 1600如果 N = p1^c1^ * p2^c2^ * … *pk^ck^ (算术基本定理)约数个数: (c1 + 1) * (c2 + 1) * … * (ck + 1)约数之和: (p1^0^ + p1^1^ + … + p1^c1^) * … * (pk^0^ + pk^1^ + … + pk^ck^)
试除法判断质数时间复杂度O(n^0.5^)
12345678bool is_prime(int x){ if (x < 2) return false; for (int i = 2; i <= x / i; i ++ ) if (x % i == 0) return false; return true;}
欧拉筛求质数时间复杂度O(n)
12345678 ...