12 2022 档案
摘要:title: Python爬虫-scrapy中使用CrawlSpider进行全站数据爬取 date: 2021-05-01 13:41:32 categories: [编程, Python, 爬虫] tags: scrapy {% note info %} 目标:爬取豆瓣图书科普分类下的若干页图的书
阅读全文
摘要:PAT常用STL-set set容器内部不包含重复元素并且自动排序。 set常用操作 #include<cstdio> #include<set>//vector类型头文件 using namespace std;//使用STL容器必须添加此句 int main() { set<int> a; a.
阅读全文
摘要:PAT常用STL-map map作为存储**<键-值>**映射关系的容器,可以很方便地根据键提取值,或者根据值来查找键。 map的常用操作 #include<cstdio> #include<map>//map类型头文件 #include<vector>//vector容器 using namesp
阅读全文
摘要:PAT常用STL-vector vector一般用作变成数组,可以方便地实现PAT中结果最后一个地方不许有空格的要求。 vector常用操作 #include<cstdio> #include<vector>//vector类型头文件 using namespace std;//使用STL容器必须添
阅读全文
摘要:常用操作 输入 #include<iostream> #include<string> using namespace std; int main() { string a; cin>>a;//不读空字符 cout<<"a="<<a<<endl; string b; getline(cin,b);/
阅读全文
摘要:基本定义 堆是一个完全二叉树,可以用数组来映射这个树。 建立堆就是根据一个已知的未排序的数组,根据建堆的规则,将数组中的元素按照一定规则重新排列而已 堆的分类 大根堆:根结点是最大的元素,每个结点都大于等于其左右孩子结点 小根堆:根结点是最小的元素,每个结点都小于等于其左右孩子结点
阅读全文
摘要:PAT知识点-并查集 定义 const int MAX=1010; int father[MAX];//father[i]表示节点i的父亲 初始化 void init(int n) { for(int i=1;i<=n;i++)//这里假设节点序号为1到n { father[i]=i;//规定根节点
阅读全文
摘要:PAT知识点-二叉查找树 二叉查找树 定义 struct Node//代表树的一个结点 { int data;//数据域 Node *lchild;//左孩子 Node *rchild;//右孩子 }; 结点的创建 Node *newNode(int data) { Node *node=new N
阅读全文
摘要:PAT知识点-树的基本操作 树的数据结构 二叉树 一般的度为2的树是不考虑左右子树的顺序的,也就是说,左右子树交换对该树没影响。但是!二叉树是规定左右子树顺序的!左右子树交换后就是另一个二叉树了!左右子树的交换方法下面会讲,就是在后序遍历的时候交换左右子树。 struct Node { int da
阅读全文
摘要:PAT题目中常用的库函数 ctype.h isdigit(int ch) 是数字返回非零,否则返回0 isalpha(int ch) 是字母返回非零,否则返回0 isalnum(int ch) 是数字或字母返回非零,否则返回0 islower(int ch) 是小写字母返回非零,否则返回0 isup
阅读全文
摘要:从中可以看出Engine类似于总指挥。 Spiders向Engine提交Requests。 Engine将Requests交给Scheduler进行过滤重复请求等操作。 Scheduler返回新的Requests给Engine。 Engine将Requests交给Downloader Downloa
阅读全文
摘要:PAT降低程序运行时间的办法(C/C++) 刷了100题左右,总结了一些用于降低程序运行时间的办法 0.解题的思路是简单的 解题思路想的好,对题目是降维打击,什么也抵不上一个简单解决问题的思路。 1.使用复杂度更低的算法 对于同一个思路可能有多种算法,选择时间复杂度低的算法。这得看自己有没有学过更好
阅读全文
摘要:PAT中常用数据类型及输入输出(C/C++) 常用数据类型 bool int double long long long 数据类型范围 最大大概为20亿 最大大概为 #include<cstdio> int main() { int intmax=(1<<31)-1; int intmin=-(1>
阅读全文
摘要:PAT常见错误及原因总结 答案错误 因为解题思路不对而造成的答案错误暂且不说,除了解题思路不对还有可能是以下原因: 数值溢出 这个是最不容易注意到的地方,因为int的范围大概为20亿,以下的情形需要用long long代替: 要处理的数据大小可能大于20亿。此时,要处理的数据要用long long代
阅读全文
摘要:PAT中测试数据的输入技巧 把测试数据给正确的输入程序中,是做题的开始。有时候在输入测试数据就费了很长时间,所以在此总结一些麻烦的地方及输入技巧。 1.空格的麻烦 在此说明几个知识点 用scanf输入int、long、long long、float、double忽略空格、回车 #include<cs
阅读全文
摘要:PAT中较难的固定操作 大整数的运算 #include<cstdio> #include<cstring> struct Bn//bignumber { int n[50];//最大设为50位 int len;//数字的长度 Bn() { memset(n,0,sizeof(n));//全部设为0,
阅读全文
摘要:PAT中常用基本操作 在刷了100道题后,发现有些操作真的是反反复复被用到,在此总结一下,把这些基操练习足够熟,相信对编程基本能力提升有帮助。 数组的操作 寻找最大/最小值其下标 #include<cstdio> int main() { int a[5]={4,88,-12,1999,0}; //
阅读全文
摘要:目标:从当当网的图书排行榜中,爬取全部25页的图书名。 技巧: 通过翻页查看网页URL变化,推断页数和URL的关系。 通过所要爬取内容周围HTML文本的特点,写正则表达式提取特定内容。 使用正则表达式需要引入re模块 import requests import re """ <div class=
阅读全文
摘要:正则表达式简介 正则表达式:用于描述特定字符串模式的表达式。元字符为M1, M2, ...,数量修饰符为N1, N2, ... 常见正则表达式形式则为M1N1M2N2... | 元字符 | 含义 | | : : | : : | | . | 处\n外任意字符 | | [0-9] | 数字 | | [A
阅读全文
摘要:准备 xpath语法:https://www.w3school.com.cn/xpath/xpath_syntax.asp 预安装:lxml模块 目标:爬取豆瓣里某本书的若干页评论信息,并将评论信息存储为json文件。 JSON格式: { "userID":"rivocky", "itemID":"
阅读全文
摘要:准备 在Pycharm中安装lxml和bs4模块。 lxml:是一个HTML/XML的解析器,主要的功能是如何解析和提取 HTML/XML 数据 bs4:Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文
阅读全文
摘要:requests模块参考网站:https://docs.python-requests.org/zh_CN/latest/user/quickstart.html 在Pycharm中安装requests模块 File --> Settings --> Projects:[name] --> Pyth
阅读全文
摘要:目标:爬取豆瓣小说标签页面共计三页图书的信息。 流程: 在setting.py中根据需要设置LOG_LEVEL,ROBOTSTXT_OBEY,ITEM_PIPELINES,DOWNLOADER_MIDDLEWARES等项。 在middlewares.py中定义request.headers,用于UA
阅读全文
摘要:基于终端指令的持久化存储 存储数据放到爬虫文件的parse方法的返回值中。 存储只能为json, csv, xml等文本类型。 scrapy crawl spider_name -o output_path。执行spider_name,将输出放到output_path中。 import scrapy
阅读全文
摘要:Mac or Linux: pip install scrapy Windows: pip install wheel 下载twisted:http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted 切换到twisted下载的目录后:pip install
阅读全文
摘要:创建工程:scrapy startproject project_name 切换到工程目录后创建爬虫文件:scrapy genspider spider_name www.xxx.com 执行工程:scrapy crawl spiderName。若要省去输出的繁杂日志,可在settings.py文件
阅读全文
摘要:UA伪装和Cookie设置 在DownloaderMiddleware的process_request中设置request.headers['User-Agent']和request.cookies 在setting.py中设置 代理IP设置 在DownloaderMiddleware的proces
阅读全文
摘要:Python matplotlib绘图 简介 matplotlib是python的一个数据可视化库,matplotlib.pyplot是matplotlib的一个快捷绘图命令字库,使用前要加上import matplotlib.pyplot as plt。 该教程基于MOOC的北京理工大学嵩天教授的
阅读全文
摘要:Pandas库-Series类型 默认索引 #input# import pandas as pd a=pd.Series([9,8,7,6]) a#显示a的信息 #output# 0 9 1 8 2 7 3 6 dtype: int64 其中左侧为索引,右侧为数据,数据类型为int64(沿用num
阅读全文
摘要:数组 定义和属性 import numpy as np a=np.array([1,2,3,4])#按照列表[1,2,3,4]创建数组a a.ndim#数组a的维度 1 a.shape#数组a的形状,为一个元组,这里是一维,表示为(4,) a.size#数组a的大小 1*4=4 a.dtype#数组
阅读全文
摘要:数据 print(3+2)#5 print(3-2)#1 print(3*2)#6 print(3/2)#1.5 print(3//2)#1 print(3%2)#1 print(3**2)#9 print(2.13232+1.000000)#3.13232 #数字转字符串 age=20 print
阅读全文
摘要:人机交互 input用法 s = input()#输入一个字符串 s = input("请输入数据:")#提示信息后输入 s = eval(input())#根据字符串自动返回匹配类型的值。输入12,返回int;输入3.2,返回float;输入[1, 2],返回list s = float(inpu
阅读全文