爬虫 Day2
resp.close()#关掉resp
一requests入门
(一) 用到的网页:豆瓣电影分类排行榜 - 喜剧片
import requestsurl = "https://movie.douban.com/j/chart/top_list"
#参数太长,重新封装参数
param = {"type": "24","interval_id": "100:90","action":" ","start": 0,"limit": 20,
}
#根据网页设定get和postresp = requests.get(url = url, params = param)
print(resp.request.url)
#text 抓取不下来
#print(resp.text)
抓取结果:
(二)反爬
import requestsurl = "https://movie.douban.com/j/chart/top_list"
#参数太长,重新封装参数
param = {"type": "24","interval_id": "100:90","action":" ","start": 0,"limit": 20,
}
#根据网页设定get和post
#text 直接抓取不下来,要换headers
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36"
}
resp = requests.get(url = url, params = param,headers = headers)
print(resp.json())
# print(resp.text)
resp.close()#关掉resp
注意到每次下滑刷新榜单只有start参数改变,20递增
二从html里提取数据--数据解析
1.正则re解析--效率高
2.bs4 beautiful soup解析--效率不高
3.xpath解析--简洁
1.正则解析
. 匹配换行符之外的所有
\w 匹配数字、字母、下划线 \W非数字、字母、下划线
\s 匹配任意空白符 \S
\d 匹配任意数字 \D
\n 匹配换行符
\t 匹配制表符
^ 开始
$ 结束
a | b 匹配字符a或b
[] 字符组 [a-zA-Z0-9],
[^] 非字符组
* 重复0零次或更多次
+ 重复一次或更多次
? 重复0次或1次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次
例:你玩儿什么游戏,矿工游戏你会吗,晚上一起玩游戏吧
惰性匹配:尽可能多的匹配):玩儿.*?游戏 : 玩儿什么游戏
贪婪匹配:玩儿.*游戏 :玩儿什么游戏,矿工游戏你会吗,晚上一起玩游戏
但我们需要的只是“周杰伦”和“林俊杰”。
2.示例
import re
#findall的结果是列表
#匹配字符串中所有符合正则的内容
lst = re.findall(r"\d+","我的电话是10010,我朋友的电话是10086")
print(lst)
print("")
#finditer: 匹配字符串中的所有内容【返回的是迭代器】,从迭代器中拿内容需要.group
it = re.finditer(r"\d+","我的电话是10010,我朋友的电话是10086")
for i in it:print(i.group())
示例2:
findall
finditer
search
match
compile
import re
print("#findall的结果是列表")
#findall的结果是列表
#匹配字符串中所有符合正则的内容
lst = re.findall(r"\d+","我的电话是10010,我朋友的电话是10086")
print(lst)
print("")
print("#finditer: ")
#finditer: 匹配字符串中的所有内容【返回的是迭代器】,从迭代器中拿内容需要.group()
it = re.finditer(r"\d+","我的电话是10010,我朋友的电话是10086")
for i in it:print(i.group())
print("")
print("#serch:检索到一个就返回,检验存在性")
#serch是全文匹配返回的是match对象,拿数据需要.group(),检索到一个就返回,检验存在性
s = re.search(r"\d+","我的电话是10010,我朋友的电话是10086")
print(s.group())
print("")
print("#match是从头开始匹配")
#match是从头开始匹配
s = re.match(r"\d+","10010,我朋友的电话是10086")#"我的电话是10010,我朋友的电话是10086"
print(s.group())
print("")
print("#预加载正则表达式")
#预加载正则表达式
obj = re.compile(r"\d+")
ret = obj.finditer("我的电话是10010,我朋友的电话是10086")
print("#这里输出的还是迭代器")#这里输出的还是迭代器
print(ret)
print("用迭代器输出:")
for i in ret:print(i.group())
print("#match:")
ans = obj.match("10010,我朋友的电话是10086")
print(ans.group())
# obj.search()
# obj.findall()
示例3:
import re
s ="""<div class='jay'><span id = '1'>周杰伦</span><div><div class='Ang'><span id = '2'>杨异或</span><div><div class='jjaa'><span id = '3'>林经济</span><div><div class='yja'><span id = '4'>周伦</span><div><div class='may'><span id = '5'>五樱桃</span><div>
"""
#def compile(pattern,flags=0) flags是状态位
# () 特殊 在引号里面
#python输出时,end=''不换行
#(?P<分组名字>正则)可以单独从正则匹配的内容中进一步提取
obj = re.compile(r"<div class='(?P<engname>.*?)'><span id = '(?P<id>\d+)'>(?P<chiname>.*?)</span><div>",re.S) #让.能匹配换行符
result = obj.finditer(s)
for i in result:print(i.group("engname"),end=' ')print(i.group("chiname"),end=' ')print(i.group("id"))
相关文章:
爬虫 Day2
resp.close()#关掉resp 一requests入门 (一) 用到的网页:豆瓣电影分类排行榜 - 喜剧片 import requestsurl "https://movie.douban.com/j/chart/top_list" #参数太长,重新封装参数 param {"type": "…...
达梦数据库SQL
达梦JSON函数技术文档 SQL中关键词处理 -- 必须要使用双引号包裹 select id,"comment" from t_cmp_rd_process;select id,"commit" from t_cmp_rd_gjj_eva;JSON_EXTRACT函数 -- party_sup_other_json 是包含JSON数据的列名。 -- $.content_abstract 是J…...
python教程——把视频转成gif
一、前言 很多网站提供视频转GIF的功能,但要么收费要么有广告,实际上可以通过python,几行代码就能够实现视频转gif。 二、使用方法 1安装必备库moviepy pip install moviepy -i https://pypi.tuna.tsinghua.edu.cn/simple 2. 写入代码 …...
深入浅出Go的`encoding/xml`库:实战开发指南
深入浅出Go的encoding/xml库:实战开发指南 引言基本概念XML简介Go语言中的XML处理结构体标签(Struct Tags) 解析XML数据使用xml.Unmarshal解析XML结构体标签详解处理常见解析问题 生成XML数据使用xml.Marshal生成XML使用xml.MarshalIndent优化…...
深度学习之扩散模型(Diffusion model)
代码解析:正向扩散过程和加噪演示 引言 这段代码实现了一个正向扩散过程和加噪演示的功能。通过生成一个特定形状的数据集,并在每个时间步长上应用正向扩散过程和加噪过程,最终展示了数据点在空间中的演变过程。 数据集生成 通过 make_swiss…...
Tomcat Session ID---会话保持
简单拓补图 一、负载均衡、反向代理 7-1nginx代理服务器配置 [rootdlnginx ~]#yum install epel-release.noarch -y ###安装额外源[rootdlnginx ~]#yum install nginx -y[rootdlnginx ~]#systemctl start nginx.service[rootdlnginx ~]#systemctl status nginx.service [ro…...
Session会话绑定
1.需求原因 用户的请求,登录的请求,经过负载均衡后落到后面的web服务器上,登录的状态/信息也会记录在web服务器上,就会导致不通的web服务器上,登录状态不统一,造成用户频繁需要登录 2.目标:如何实现会话保持/会话共享 方案一:登录状态写入cookie中.(wor…...
win7、win10、win11 系统能安装的.net framework 版本以
win7、win10、win11 系统能安装的.net framework 版本分别是多少?以及能安装的最高版本是多少? 以下是各Windows系统能够安装和支持的.NET Framework版本及其最高可安装版本的概述: Windows 7: 自带 .NET Framework 3.5.1&#x…...
RediSearch比Es搜索还快的搜索引擎
1、介绍 RediSearch是一个Redis模块,为Redis提供查询、二次索引和全文搜索。要使用RediSearch,首先要在Redis数据上声明索引。然后可以使用重新搜索查询语言来查询该数据。RedSearch使用压缩的反向索引进行快速索引,占用内存少。RedSearch索…...
mybatis-plus 的saveBatch性能分析
Mybatis-Plus 的批量保存saveBatch 性能分析 目录 Mybatis-Plus 的批量保存saveBatch 性能分析背景批量保存的使用方案循环插入使用PreparedStatement 预编译优点:缺点: Mybatis-Plus 的saveBatchMybatis-Plus实现真正的批量插入自定义sql注入器定义通用…...
python异常:pythonIOError异常python打开文件异常
1.python读取不存在的文件时,抛出异常 通过 open()方法以读“r”的方式打开一个 abc.txt 的文件(该文件不存在),执行 open()打开一个不存在的文件时会抛 IOError 异常,通过 Python 所提供的 try...except...语句来接收…...
电话机器人语音识别用哪家更好精准度更高。
语音识别系统的选择取决于你的具体需求,包括但不限于识别精度、速度、易用性、价格等因素。以下是一些在语音识别领域表现较好的公司和产品: 科大讯飞:科大讯飞是中国最大的语音识别技术提供商之一,其语音识别技术被广泛应用于各…...
【Unity动画】Unity如何导入序列帧动画(GIF)
Unity 不支持GIF动画的直接播放,我们需要使用序列帧的方式 01准备好序列帧 02全部拖到Unity 仓库文件夹中 03全选修改成精灵模式Sprite 2D ,根据需要修改尺寸,点击Apply 04 创建一个空物体 拖动序列上去 然后全选所有序列帧,拖到这个空物体…...
uniapp APP 上传文件
/*** 上传文件*/uploadPhoneFile:function(callback,params {}) {let fileType [.pdf,.doc,.xlsx,.docx,.xls]// #ifdef APP-PLUSplus.io.chooseFile({title: 选择文件, filetypes: [doc, docx], // 允许的文件类型 multiple: false, // 是否允许多选 },(e)>{const tem…...
arcgis数据导出到excel
将arcgis属性数据导出到excel: 1) 工具箱\系统工具箱\Conversion Tools.tbx\Excel\Excel 转表 2)用excel打开导出的图层文件中后缀为.dbf的数据(方便快捷,但是中文易乱码)...
吴恩达深度学习环境本地化构建wsl+docker+tensorflow+cuda
Tensorflow2 on wsl using cuda 动机环境选择安装步骤1. WSL安装2. docker安装2.1 配置Docker Desktop2.2 WSL上的docker使用2.3 Docker Destop的登陆2.4 测试一下 3. 在WSL上安装CUDA3.1 Software list needed3.2 [CUDA Support for WSL 2](https://docs.nvidia.com/cuda/wsl-…...
R语言:microeco:一个用于微生物群落生态学数据挖掘的R包:第七:trans_network class
# 网络是研究微生物生态共现模式的常用方法。在这一部分中,我们描述了trans_network类的所有核心内容。 # 网络构建方法可分为基于关联的和非基于关联的两种。有几种方法可以用来计算相关性和显著性。 #我们首先介绍了基于关联的网络。trans_network中的cal_cor参数…...
ubuntu下在vscode中配置matplotlibcpp
ubuntu下在vscode中配置matplotlibcpp 系统:ubuntu IDE:vscode 库:matplotlib-cpp matplotlibcpp.h文件可以此网址下载:https://github.com/lava/matplotlib-cpp 下载的压缩包中有该头文件,以及若干实例程序。 参考…...
Vue面试题,背就完事了
1.vue的生命周期有哪些及每个生命周期做了什么? Vue.js 的生命周期可以分为以下几个核心阶段,每个阶段都伴随着特定的钩子函数(生命周期钩子)来执行相应的操作: 创建阶段: beforeCreate:实例被创建后、数…...
centos创建并运行一个redis容器 并支持数据持久化
步骤 : 创建redis容器命令 docker run --name mr -p 6379:6379 -d redis redis-server --appendonly yes 进入容器 : docker exec -it mr bash 链接redis : redis-cli 查看数据 : keys * 存入一个数据 : set num 666 获取数据 : get num 退出客户端 : exit 再退…...
nvm安装和使用保姆级教程(详细)
一、 nvm是什么 : nvm全英文也叫node.js version management,是一个nodejs的版本管理工具。nvm和npm都是node.js版本管理工具,为了解决node.js各种版本存在不兼容现象可以通过它可以安装和切换不同版本的node.js。 二、卸载之前安装的node: …...
跳绳计数,YOLOV8POSE
跳绳计数,YOLOV8POSE 通过计算腰部跟最初位置的上下波动,计算跳绳的次数...
阿里云ecs服务器配置反向代理上传图片
本文所有软件地址: 链接:https://pan.baidu.com/s/12OSFilS-HNsHeXTOM47iaA 提取码:dqph 为什么要使用阿里云服务器? 项目想让别人通过外网进行访问就需要部署到我们的服务器当中 1.国内知名的服务器介绍 国内比较知名的一些…...
免费阅读篇 | 芒果YOLOv8改进110:注意力机制GAM:用于保留信息以增强渠道空间互动
💡🚀🚀🚀本博客 改进源代码改进 适用于 YOLOv8 按步骤操作运行改进后的代码即可 该专栏完整目录链接: 芒果YOLOv8深度改进教程 该篇博客为免费阅读内容,直接改进即可🚀🚀…...
GetLastError()返回值及含义
https://www.cnblogs.com/ericsun/archive/2012/08/10/2631808.html 〖0〗-操作成功完成。 〖1〗-功能错误。 〖2〗-系统找不到指定的文件。 〖3〗-系统找不到指定的路径。 〖4〗-系统无法打开文件。 〖5〗-拒绝访问。 〖6〗-句柄无效。 〖7〗-存储控制块被损坏。 〖8〗-存储空…...
k8s admin 用户生成token
k8s 版本 1.28 创建一个admin的命名空间 admin-namespce.yaml kind: Namespace apiVersion: v1 metadata: name: admin labels: name: admin 部署进k8s kubectl apply -f admin-namespce.yaml 查看k8s namespace 的列表 kubectl get namespace查看当前生效的…...
【vscode】vscode重命名变量后多了很多空白行
这种情况,一般出现在重新安装 vscode 后出现。 原因大概率是语言服务器没设置好或设置对。 以 Python 为例,到设置里搜索 "python.languageServer",将 Python 的语言服务器设置为 Pylance 即可。...
深度学习实战模拟——softmax回归(图像识别并分类)
目录 1、数据集: 2、完整代码 1、数据集: 1.1 Fashion-MNIST是一个服装分类数据集,由10个类别的图像组成,分别为t-shirt(T恤)、trouser(裤子)、pullover(套衫…...
vue实现element-UI中table表格背景颜色设置
目前在style中设置不了,那么就在前面组件给设置上 :header-cell-style"{ color: #ffffff, fontSize: 14px, backgroundColor: #0E2152 }" :cell-style"{ color: #ffffff, fontSize: 14px, backgroundColor: #0E2152 }"...
RabbitMQ学习总结-消息的可靠性
保证MQ消息的可靠性,主要从三个方面:发送者确认可靠性,MQ确认可靠性,消费者确认可靠性。 1.发送者可靠性:主要依赖于发送者重试机制,发送者确认机制; 发送者重试机制,其实就是配置…...
asp.net做的音乐网站/百度如何添加店铺位置信息
我在我的SQL上收到此错误:错误的MySQL说:文档无法连接:设置无效。 phpMyAdmin尝试连接到MySQL服务器,服务器拒绝连接。 您应该检查配置中的主机,用户名和密码,并确保它们与MySQL服务器管理员提供的信息相对…...
网站各页面/如何推广app赚钱
鉴于河南是oi弱省,所以想来这道题也没什么人会翻出来写吧,而且这还是haoi2009的一道简单题目,所以估计也没几个人会写博客的,那么看在我这么弱的份上,我觉得是应该写一篇出来的。 这道题我是按照贪心写的(毕…...
哈尔滨网站建设咨询/百度热搜榜小说排名
关于DAC的原理...
在线制作电子印章软件/泰州网站排名seo
菜鸟又来求助大虾了!!!关于JAVA中的LOOP初学者目前在学习,刚接触编程这几题自己也琢磨了一下,可是不知道对不对!!希望大家给我个答案我参考一下!!!谢谢&#…...
自己做网站 空间怎么买/跟我学seo
2019独角兽企业重金招聘Python工程师标准>>> 今天使用mosca 写了一下基于MQTT的消息服务端,用于下一个项目的知识储备; 该功能主要是基本 NODEJS 的 mosca 插件完成 1. 安装 mosca npm install mosca --save 2. 创建mqtt服务端,端…...
网站设计一般什么字体/怎么做网络推广
①包装类 1、其中需要注意int对应的是Integer,char对应的Character,其他6个都是基本类型首字母大写即可。 2、字符串转成基本类型:包装类.parseInt(str); 3、基本数值转成字符串有3种方式: (1)、基本类型直…...