Scrapy 基础
随着网络爬虫的应用越来越多,互联网中涌现了一些网络爬虫框架,这些框架将网络爬虫的一些常用功能和业务逻辑进行了封装。在这些框架的基础上,我们只需要按照需求添加少量代码,就可以实现一个网络爬虫。Scrapy是目前比较流行的Python网络爬虫框架之一,可以帮助开发人员高效地开发网络爬虫程序。 简介 Scrapy 架构 Scrapy Engine(引擎): 负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。 Scheduler(调度器): 它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,去重,入队,当引擎需要时,交还给引擎。 Downloader(下载器): 负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理。 **Spider(爬虫):...
样例2:保存豆瓣社区前x页的html页面
方法112345678910111213141516171819202122232425262728293031import requestsfrom bs4 import BeautifulSoupimport osurl_template = "https://www.douban.com/tag/%E7%A4%BE%E5%8C%BA/article?start={}"headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}# 存储HTML内容的列表html_contents = []# 爬取前三页内容for i in range(0, 45, 15): # 每页显示15条,start参数每次增加15 response =...
样例1:爬取豆瓣top250
12345678910111213141516171819202122232425import bs4import requests# 设置请求头,模拟浏览器访问,以避免被网站反爬虫机制阻止headers = { "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36"}print("豆瓣评分top250的电影:")for start_num in range(0, 250, 25): # 构造豆瓣电影Top250的URL,start参数用于分页 response = requests.get(f"https://movie.douban.com/top250?start={start_num}",headers=headers) #...
ES6
~~博主说学vue之前要先学这玩意儿,不懂那学学吧~~ 以下内容部分实例代码参考了dengruicode.com的内容 ECMAScript 的背景JavaScript 是大家所了解的语言名称,但是这个语言名称是商标( Oracle 公司注册的商标)。因此,JavaScript 的正式名称是 ECMAScript 。1996年11月,JavaScript 的创造者网景公司将 JS 提交给国际化标准组织 ECMA(European computer manufactures association,欧洲计算机制造联合会),希望这种语言能够成为国际标准,随后 ECMA 发布了规定浏览器脚本语言的标准,即 ECMAScript。这也有利于这门语言的开放和中立。 ECMAScript 的历史ES6 是 ECMAScript 标准十余年来变动最大的一个版本,为其添加了许多新的语法特性。 1997 年 ECMAScript 1.0 诞生。 1998 年 6 月 ECMAScript 2.0 诞生,包含一些小的更改,用于同步独立的 ISO 国际标准。 1999 年 12 月...
实验:自定义网络跨容器通信实战案例
创建自定义桥接网络 启动容器并连接到自定义网络 测试跨容器通信查看两个容器的ip 进入容器01去ping 02的ip 进入容器02区ping 01的名字(自动解析为ip地址) 主机与容器之间通信
docker的常用命令
基础命令docker version # 显示docker的版本信息 docker info # 显示docker的系统信息,包括镜像和容器的数量 docker 命令 –help # 帮助命令 帮助文档的地址:https://docs.docker.com/engine/reference/commandline/build/ docker pull:用于从远程仓库拉取镜像到本地。 docker images:查看本地已有的镜像列表。 docker run:基于镜像创建并启动一个容器。 docker ps:查看正在运行的容器列表。 docker stop:停止一个正在运行的容器。 docker rm:删除一个已停止的容器。 docker rmi :删除一个镜像 docker history :查看镜像详细信息 systemctl start docker #启动docker systemctl stop docker #关闭docker systemctl restart docker #重启docker systemctl enable docker...
ddddocr的安装和基础使用
ddddocr名字真奇怪是一款强大的基于深度学习的通用开源ocr识别库,具有高效、准确、易用的特点,广泛应用于图像处理和文字识别任务。 常见用处:在爬虫时候 识别验证码 安装非常easy 1pip install ddddocr 使用实例12345678910import ddddocrocr = ddddocr.DdddOcr(show_ad=False) # show\_ad=False关闭广告with open("./img/img_1.png", "rb") as f1: im = f1.read() yzm1 = ocr.classification(im)with open("./img/img_2.png", "rb") as f2: im = f2.read() yzm2 = ocr.classification(im)print(yzm1,...
并查集基础
属性并查集的逻辑结构是一个包含N个元素的集合,如图: 并查集的存储结构是一个包含N个元素的树,如图: 用一个数组存储p[x]来存储每个元素(点)的父节点 讲解知识点基本原理每个集合的根节点便是这个集合的编号,每个点存储自己的父节点(初始化) 1234for(int i=1;i<=n;i++){ p[i]=i;} 树根:p[x]==x //(父节点等于自己) 求集合编号:while(p[x]!=x) x=p[x] //(不是根节点的话,置换成父节点进行再次判断) 路径压缩优化12345678int find(int x)//找根节点{ if (p[x]!=x)//父节点等于自己的是根节点 { p[x] = find(p[x]);//递归到根节点 } return p[x];} 并查集的两种基本操作1.将两个集合合并p[find(a)] =...
linux虚拟机环境安装配置(centos7)
1、查看VMware服务 2.查看vmware 网络设置,选择VMnet8, 3.修改配置本机VMware Network Adapter VMnet8虚拟网络,并且启动网络服务 IP、网关的前三段一定要与上图所示IP一致:#.#.#.1,#.#.#.2 2、新建镜像:centos镜像 3、 修改静态IP#查看修改前的IP [roiot@localhost ~]# ip addr [root@hadoop100 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33 #修改 BOOTPROTO=static ip模式 (dhcp或者static)、vion ONBOOT=yes #新增(在dn配置B #静态IP(“172” 与你的vmnet8虚拟网络IP保持一致,“200”...
今日python作业
1.1234567arr = [0] * 110nums = list(map(int, input().split()))for i in nums: arr[i] += 1for i in range(1, 101): if arr[i]: print(f"{i}出现{arr[i]}次") 21234567891011121314nums = list(map(int, input().split()))sum = 0.0for i in nums: sum += ians1 = 0ans2 = 0stand = sum/len(nums)for i in nums: if i > stand: ans1 += 1 elif i < stand: ans2 +=...