【Python爬虫】requests库

2023-11-14

1.requests库的介绍

​ requests 是 Python 语言编写,基于 urllib3 ,采用 Apache2 Licensed 开源协议的HTTP库。它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTTP 测试需求。是 Python 实现的简单易用的 HTTP 库。

Requests 中文文档:http://docs.pythonrequests.org/zh_CN/latest/index.html

解决package下载速度慢的问题,用国内的镜像网站:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple package

2.requests库的基本用法

2.1request访问请求

https://python123.io/ws/demo.html是一个给初级爬虫学习者练习的网站,网址的内容如下:

在这里插入图片描述

import requests

url='https://www.baidu.com'
url1='https://python123.io/ws/demo.html'
response=requests.get(url1)  #返回了一个响应对象,包含了网页获取的所有信息
print(type(response.content),type(response.text)) 	# bytes, str
print(response.content.decode('utf-8')) 			# 解码为字符串

在这里插入图片描述

如何知道返回是否成功?-----状态码

response.status_code   # 可以获取这次请求的状态码,200代表着访问成功,否则访问失败
response.raise_for_status()
'''
.raise_for_status()
如果状态码不是200,返回一个false,访问成功,就什么都不返回。
'''

输出结果:
200
None	代表这次访问结果
2.1.2对豆瓣等网址发送请求的问题
url='https://movie.douban.com/top250'
r=requests.get(url)
print(r.status_code)
418		#当前的状态码是418

​ 有些网址的robots.txt文件存在限制指令(限制搜索引擎的抓取),在进行网页抓取的时候请求会被拦截。

2.2robots协议

​ robots协议也叫robots.txt(统一小写)是一种存放于网站根目录下的ASCII编码的文本文件,它通常告诉网络搜索引擎的漫游器(又称网络蜘蛛),此网站中的哪些内容是不应被搜索引擎的漫游器获取的,哪些是可以被漫游器获取的。

作用:网站告知网络爬虫哪些页面可以爬取,哪些不能爬取

形式:在网站根目录下的robots.txt文件

# 注释
* 代表所有
./代表根目录
User-agent: *		# 代表的是那些爬虫
Disallow: /			# 代表不允许爬虫访问的目录

淘宝网站的robots协议

比如我们查看淘宝网站的robots协议:https://www.taobao.com/robots.txt

在这里插入图片描述

Baiduspider和baiduspider【百度爬虫】,禁止百度爬虫访问’/'后面所有的内容。

豆瓣的robots协议

https://www.douban.com/robots.txt
User-agent: *
Disallow: /subject_search
Disallow: /amazon_search
Disallow: /search
Disallow: /group/search
Disallow: /event/search
Disallow: /celebrities/search
Disallow: /location/drama/search
Disallow: /forum/
Disallow: /new_subject
Disallow: /service/iframe
Disallow: /j/
Disallow: /link2/
Disallow: /recommend/
Disallow: /doubanapp/card
Disallow: /update/topic/
Disallow: /share/
Allow: /ads.txt
Sitemap: https://www.douban.com/sitemap_index.xml
Sitemap: https://www.douban.com/sitemap_updated_index.xml
# Crawl-delay: 5

User-agent: Wandoujia Spider
Disallow: /

User-agent: Mediapartners-Google
Disallow: /subject_search
Disallow: /amazon_search
Disallow: /search
Disallow: /group/search
Disallow: /event/search
Disallow: /celebrities/search
Disallow: /location/drama/search
Disallow: /j/
2.3查看和修改爬虫的头部信息

头部信息相当于手里拿的身份证信息。

url='https://movie.douban.com/top250'
r=requests.get(url)
r.request.headers
'''
{'User-Agent': 'python-requests/2.26.0', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive'}
'''

修改头部信息----模仿用户行为

将头部信息的User-Agent修改为浏览器的User-Agent

通过网页信息查看浏览器的的访问信息。

在这里插入图片描述

分为Request Headers和Response Headers

Response Headers

在这里插入图片描述

Request Headers

在这里插入图片描述

url='https://movie.douban.com/top250'
r=requests.get(url)
print(r.status_code)

value='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36'
pyuser_agent={
    'User-Agent':value
}
r1=requests.get(url=url,headers=pyuser_agent)
print(r1.status_code)
输出:
418
200
2.2 response响应对象
# 目标url
url = "https://movie.douban.com/top250"
# 向目标url发送get请求
value='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36'
pyuser_agent={
    'User-Agent':value
}
response = requests.get(url,headers=pyuser_agent) #获取网页内容
print(response.status_code)
print(type(response.content),type(response.text))
print(response.text) #打印响应内容,按照str类型解析,用于获取文字或源码
print(response.content) #打印响应内容,按照bytes类型解析,用于获取图片或音视频

print(response.content.decode('utf-8')) # 解码为字符串

在这里插入图片描述

2.3requests的请求类型

1.GET

​ get方法请求指定的页面信息,返回实体主体。该请求是向服务器请求信息,请求参数会跟在url后面,因此,对传参长度有限制的,而且不同浏览器的上限是不同的(2k, 7~8k及其他)。由于get请求直接将参数暴露在url中,因此对于一些带有重要信息的请求可能并不完全合适。

2.POST

​ post请求是向指定资源提交数据进行处理请求,例如提交表单或者上传文件等。数据被包含在请求体中,POST请求可能会导致新的资源的建立和/或已有资源的修改。post方法没有对传递资源的大小进行限制,往往是取决于服务器端的接受能力,而且,该方法传参安全性稍高些

3.PUT

​ PUT方法是从客户端向服务器传送的数据取代指定的文档的内容。PUT方法的本质是idempotent的方法,通过服务是否是idempotent来判断用PUT 还是 POST更合理,通常情况下这两种方法并没有刻意区分,根据语义使用即可

4.DELETE

​ 请求服务器删除指定的页面,DELETE请求一般会返回3种状态码:

  • 200 (OK) - 删除成功,同时返回已经删除的资源
  • 202 (Accepted) - 删除请求已经接受,但没有被立即执行(资源也许已经被转移到了待删除区域)
  • 204 (No Content) - 删除请求已经被执行,但是没有返回资源(也许是请求删除不存在的资源造成的)
import requests
r = requests.get('https://httpbin.org/get') #get请求
# r = requests.post('https://httpbin.org/post') #post请求
# r = requests.put('https://httpbin.org/put') #put请求
# r = requests.delete('https://httpbin.org/delete') #delete请求
# r = requests.patch('https://httpbin.org/patch') #patch请求
print(r.text)

POST和GET的区别

  • POST:向服务器传送数据
  • GET向服务器获取数据
2.3.1请求携带参数

1.一般的GET请求

r = requests.get('https://httpbin.org/get')
print(r.text)

2.带参数的请求

GET请求

  • 路径中包含参数
r = requests.get('https://httpbin.org/get?name=luoluo&age=3')
print(r.text)
  • params关键字参数,可以通过字典定义参数
data = {"name":"luoluo","age":3}
r = requests.get('https://httpbin.org/get',params=data)
print(r.text)
  • 将一个列表作为值传入
data = {"name":"luoluo","food":["meat","bone"]}
r = requests.get('https://httpbin.org/get',params=data)
print(r.text)
# 链接为:https://httpbin.org/get?name=luoluo&food=meat&food=bone
# 【注意】字典里值为 None 的键都不会被添加到 URL 的查询字符串里。
data = {"name":"luoluo","address":None}
r = requests.get('https://httpbin.org/get',params=data)
print(r.text)
# 链接为:https://httpbin.org/get?name=luoluo
  • 添加请求头
import requests
response = requests.get("https://httpbin.org/get")
# 在请求头中带上User-Agent,模拟浏览器发送请求
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}
# response = requests.get("https://httpbin.org/get", headers=headers)
# 打印请求头信息
print(response.request.headers)

POST请求

提交表单,使用data属性携带字典对象

data ={'name':'luoluo','age ':'3'}
r = requests.post("http://httpbin.org/post",data=data)
print(r.text)

在这里插入图片描述

3.requests库的高级用法

3.1文件上传

发送post请求

upload = {'avatar': open('img.jpeg', 'rb')}
r = requests.post('https://httpbin.org/post', files=upload)
print(r.text)
3.2Cookie和Session

什么是会话?
用户打开一个浏览器, 点击多个超链接, 访问服务器多个web资源, 然后关闭浏览器, 整个过程称之为一个会话。

​ HTTP协议是一种"无状态"协议,客户浏览器与服务器建立连接,发出请求,得到相应,然后关闭连接,这意味着每次客户端检索网页时,客户端打开一个单独的连接到 Web 服务器,服务器会自动不保留之前客户端请求的任何记录。

​ 所以容器不能辨认下一个请求和之前的请求是不是同一个请求,对于容器而言,每个请求都是新的。

3.2.1 保存会话数据的两种技术:

Cookie是客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的**浏览器。**当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据了。

Session是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的session对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据【Cookie数据】放在各自的session中,当用户再去访问服务器中的其它web资源时,其它web资源再从用户各自的session中取出数据为用户服务。

Cookie和Sesson的区别

  • Cookie:给用户发号牌,下次来的时候带着
  • Session:根据用户特征登记,下次来的时候识别

在这里插入图片描述

3.3获取Cookie
#获取方法一
url='https://movie.douban.com/top250'
value='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36'
user_agent={
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36'
}
r = requests.get(url=url,headers=user_agent)

print(r.cookies)
for key, value in r.cookies.items():
    print(key + '=' + value)


#获取方法二
# cookieJar对象转换为cookies字典的方法
cookies_dict = requests.utils.dict_from_cookiejar(r.cookies)
print(type(cookies_dict),cookies_dict)
<RequestsCookieJar[<Cookie bid=Ty9y_Daz_rw for .douban.com/>]>
bid=Ty9y_Daz_rw
<class 'dict'> {'bid': 'Ty9y_Daz_rw'}

在这里插入图片描述

3.4设置Cookie
r=requests.get('http://httpbin.org/cookies/set/number/123456789')

print(r.text)
# 获取登陆后的cookie,在下次请求时返回给服务器
cookies="H_PS_PSSID=35105_31254_34584_35490_35246_35318_26350_22157;domain=.baidu.com"

jar = requests.cookies.RequestsCookieJar()

for cookie in cookies.split(";"):
	key,value = cookie.split("=",1)
	jar.set(key,value)
    
r = requests.get('http://httpbin.org/cookies',cookies=jar)
print(r.text)
输出:
{
  "cookies": {
    "number": "123456789"
  }
}

#两次算作不同的会话

{
  "cookies": {
    "H_PS_PSSID": "35105_31254_34584_35490_35246_35318_26350_22157", 
    "domain": ".baidu.com"
  }
}
3.5Session维持

​ 下面的代码,对于服务器来说,相当于打开了两个不同的会话,所以无法获取设置的cookie

import requests
requests.get('https://httpbin.org/cookies/set/number/123456789')
r = requests.get('https://httpbin.org/cookies')
print(r.text)

输出:
{
  "cookies": {}
}
可以看到第一次的请求并没有成功设置Cookie

​ 开启会话后,在浏览器关闭前,发出多次请求或打开多个标签页,都属于同一个

s = requests.Session()
s.get('https://httpbin.org/cookies/set/number/123456789')
r = s.get('https://httpbin.org/cookies')
print(r.text)

输出:
{
  "cookies": {
    "number": "123456789"
  }
}

在这里插入图片描述

4.代理设置

​ 对于某些网站,在测试的时候请求几次,能正常获取内容。但是一旦开始大规模爬取,对于大规模且频繁的请求,网站可能会弹出验码,或者跳转到登录认证页面,更甚者可能会直接封禁客户端的IP,导致一定时间段内无法访问。 【比如贴吧,微博等】

什么是代理设置

proxy代理参数通过指定代理ip,让代理ip对应的正向代理服务器转发我们发送的请求。

在这里插入图片描述

  • 代理ip是一个ip,指向的是一个代理服务器
  • 代理服务器能够帮我们向目标服务器转发请求
4.1代理服务器的分类

根据代理ip的匿名程度,代理IP可以分为下面三类:

**透明代理(Transparent Proxy):**透明代理虽然可以直接“隐藏”你的IP地址,但是还是可以查到你是谁。目标服务器接收到的请求头如下:

REMOTE_ADDR = Proxy IP
HTTP_VIA = Proxy IP
HTTP_X_FORWARDED_FOR = Your IP

**匿名代理(Anonymous Proxy):**使用匿名代理,别人只能知道你用了代理,无法知道你是谁。目标服务器接收到的请求头如下:

REMOTE_ADDR = proxy IP
HTTP_VIA = proxy IP
HTTP_X_FORWARDED_FOR = proxy IP

**高匿代理(Elite proxy或High Anonymity Proxy):**高匿代理让别人根本无法发现你是在用代理,所以是最好的选择。毫无疑问使用高匿代理效果最好。目标服务器接收到的请求头如下:

REMOTE_ADDR = Proxy IP
HTTP_VIA = not determined
HTTP_X_FORWARDED_FOR = not determined
4.2代理的请求协议

根据网站所使用的协议不同,需要使用相应协议的代理服务。从代理服务请求使用的协议可以分为:

  • http代理:目标url为http协议
  • https代理:目标url为https协议
  • socks隧道代理(例如socks5代理)等:
    1. socks 代理只是简单地传递数据包,不关心是何种应用协议(FTP、HTTP和HTTPS等)。
    2. socks 代理比http、https代理耗时少。
    3. socks 代理可以转发http和https的请求
4.3代理参数的设置

​ 为了让服务器以为不是同一个客户端在请求;为了防止频繁向一个域名发送请求被封ip,所以我们需要使用代理ip 。

response = requests.get(url, proxies=proxies)
# proxies的形式:字典,例如:
proxies = {
"http": "http://36.62.194.186:4289",
"https": "https://36.62.194.186:4289",
} 
requests.get("http://www.taobao.com",proxies = proxies)

运行这个实例可能不行,因为这个代理可能是无效的,请换成自己的有效代理试一下。

5.超时设置

​ 在爬虫中,一个请求很久没有结果,就会让整个项目的效率变得非常低,这时就需要对请求进行强制要求,让它必须在特定的时间内返回结果,否则就报错。

  • 超时参数timeout的使用方法:
  • response = requests.get(url, timeout=1)
  • timeout=1表示:发送请求后,1秒钟内返回响应,否则就抛出异常
import requests
url = 'https://ssr4.scrape.center/' # 这个页面默认延迟5秒加载
response = requests.get(url, timeout=1) # 设置超时时间


#运行结果
requests.exceptions.ReadTimeout:HTTPSConnectionPool(host='ssr4.scrape.center',port=443): Read timed out. (read timeout=1)

​ 实际上,请求分为两个阶段,即连接(connect)和读取(read),上面设置的 timeout 将用作连接和读取这两者的 timeout 总和

你也可以分别指定,传入一个元组,设置(连接次数,超时时间)

r = requests.get("https://ssr4.scrape.center/",timeout = (5,30))

如果想永久等待,可以直接将 timeout 设置为 None ,或者不设置直接留 ,因为默认是 None

r = requests.get("https://ssr4.scrape.center/",timeout = none)

6.登录验证

登录网站:https://static3.scrape.center/ 需要进行身份验证

在这里插入图片描述

import requests
from requests.auth import HTTPBasicAuth
r = requests.get('https://static3.scrape.center/', auth=HTTPBasicAuth('admin','admin'))
print(r.status_code)
# 认证失败,返回401;认真成功返回200


# 简化写法,使用元组包裹(用户名,密码)
r = requests.get('https://static3.scrape.center/', auth=('admin', 'admin'))
print(r.status_code)

输出:
200
200

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Python爬虫】requests库 的相关文章

  • 在 Django 1.6 中结合 DetailView 和 CreateView

    我有 2 个独立的模型 帖子和评论 我使用 DetailView 来显示帖子内容 并且我想使用 CreateView 在同一页面上显示评论创建表单 最干净的方法是什么 唯一想到的是使用自定义视图 它既获取对象又处理评论表单 但这看起来太脏了
  • Python dict 到 DataFrame Pandas - 级别

    几个月前 Romain X 在这个问题上帮了我很多忙 Python 字典到 DataFrame Pandas https stackoverflow com questions 32770359 python dict to datafra
  • 如何在 django 中获取复选框值?

    tr td td tr
  • 在python中合并3个dict()

    如果多个字典之间有公共字符串 是否有逻辑合并多个字典的方法 即使这些公共字符串在一个 dict 的值与另一个 dict 的键之间匹配 我在 SO 上看到了很多类似的问题 但似乎没有一个问题能解决我将 较低级别文件 中的多个键与较高键 值中的
  • 检查时间戳列是否在另一个数据帧的日期范围内

    我有一个数据框 df A 有两列 amin 和 amax 这是一组时间范围 我的目标是查找 df B 中的列是否位于 df A amin 和 amax 列中范围的任何行之间 df A amin amax amin amax 0 2016 0
  • Python矩阵问题[重复]

    这个问题在这里已经有答案了 这是从这个线程继续的 Python矩阵 有什么解决方案吗 https stackoverflow com questions 5835583 python matrix any solution Input fr
  • 忽略覆盖率报告中的空文件

    覆盖率 py https github com nedbat coveragepy会包括 init py在其报告中并将其显示为 0 行 但覆盖率为 100 我想从覆盖率报告中排除所有空白文件 我不能只添加 init py to omit作为
  • Netmiko OSError:在 send_command 中从未检测到搜索模式:

    我被这个错误困住了 任何人都可以帮助摆脱这个错误 import netmiko Device host xxxxxxxxxx device type cisco nxos username admin password xxxxxxxx c
  • 令人困惑的问题>> FileNotFoundError:[Errno 2]没有这样的文件或目录:

    这个问题让我很困惑 也许问题出在代码上 希望你看一下 with open training images labels path r as file lines file readlines 他说该文件不存在 FileNotFoundErr
  • 使用存储的密钥作为环境变量

    我有一个秘密密钥存储在 GCP 的秘密管理器中 我们的想法是使用该密钥通过云功能获取预算列表 现在 我可以从代码中访问该密钥 但我面临的问题是我需要使用该密钥设置一个环境变量 这是我添加密钥的方式 如果您的本地目录中有该文件 但是还有其他方
  • Python 特征向量:numpy.linalg、scipy.linalg 和 scipy.sparse.linalg 之间的差异

    Scipy 和 Numpy 具有三个不同的函数来查找给定方阵的特征向量 它们是 numpy linalg eig a http docs scipy org doc numpy reference generated numpy linal
  • iter(fp.readline, '') 中的行而不是 fp 中的行:

    我读了内置函数iter的例子在内置函数 Python 3 7 0 文档 https docs python org 3 library functions html iter with open mydata txt as fp for l
  • matplotlib 中矩形面片之间存在不需要的空间

    以下代码绘制两个红色矩形 红色矩形应该彼此相邻 之间没有空间 在 python 图中 这是可以的 在导出的 pdf 中 矩形之间有一个细长但明显的空白 有什么方法可以解决这个问题吗 import matplotlib pyplot as p
  • NLTK 无法找到 stanford-postagger.jar!设置CLASSPATH环境变量

    我正在开发一个项目 需要我使用 nltk 和 python 来标记令牌 所以我想用这个 但遇到了一些问题 我浏览了很多其他已经提出的问题和其他论坛 但我仍然无法解决这个问题 问题是当我尝试执行以下命令时 from nltk tag impo
  • Pandas 对 HDFStore 中的大数据进行“分组”查询?

    我有大约 700 万行HDFStore有60多个柱子 数据超出了我的记忆能力 我希望根据 A 列的值将数据聚合到组中 pandas 的文档分割 聚合 组合 http pandas pydata org pandas docs stable
  • Python、Oracle DB、列中的 XML 数据,获取 cx_Oracle.Object

    我正在使用 python 从 Oracle DB 获取数据 所有行都有一个包含 XML 数据的列 当我使用 python 打印从 Oracle DB 获取的数据时 包含 XML 数据的列将打印为 0x7fffe373b960 处的 cx O
  • 无法从 celery 信号连接到 celery 任务?

    我正在尝试连接task2 from task success signal from celery signals import task success from celery import Celery app Celery app t
  • 计算列表中的子列表

    L 2 4 5 6 2 1 6 6 3 2 4 5 3 4 5 我想知道任意子序列出现了多少次 s 2 4 5 例如会返回2次 I tried L count s 但它不起作用 因为我认为它期望寻找类似的东西 random numbers
  • 在 kivy 中嵌套小部件

    我正在尝试在 kivy 中制作一个界面 我认为即使在完成教程之后 我仍然不了解自定义小部件以及如何对它们进行层次结构的一些基本知识 我认为我有更多的盒模型 html 思维方式 因此小部件嵌套在本机 GUI 中的方式对我来说仍然有点陌生 一些
  • 关闭 IPython Notebook 中的自动保存

    我正在寻找一种方法来关闭 iPython 笔记本中的自动保存 我已经通过 Google Stack Overflow 搜索看到了有关如何打开自动保存的参考资料 但我想要相反的内容 关闭自动保存 如果这是可以永久设置的东西而不是在每个笔记本的

随机推荐

  • 深度学习-环境搭建(安装Pytorch)

    文章目录 前言 一 安装Anaconda 二 查看电脑显卡支持的CUDA版本 三 更新CUDA版本 四 创建并激活Anaconda虚拟环境 需要创建虚拟环境而最好不在base下载的原因 五 安装pytorch PS 注意事项 六 下载其他库
  • Vue Router 跳转404,路由守卫及配置(登录篇)

    在这个前端技术迭代迅速的时代 单页面应用开发中 路由守卫已经是非常常见也是必备的需求 为了控制使用者在各种状态下的路由页面跳转 例如 是否登录 是否有路由权限等等 今天就记录一下在各种登录状态下路由配置和路由守卫 Vue Router官方文
  • GitBash基本操作

    git的一些基本命令用法可以用git help命令获取 MINGW64 d GitProject Git1 master git config global user name userName 登陆全局用户名 注意可以在官网下载windo
  • Linux 下 grep 常用过滤命令讲解

    导读 这篇文章主要介绍了Linux 使用grep筛选多个条件及grep常用过滤命令 需要的朋友可以参考下 使用grep筛选多个条件 cat log txt grep 条件 cat log txt grep 条件一 grep 条件二 cat
  • 冒险游戏:假期冒险公园巡游者 15 parkRanger15 CE mac中文

    Vacation Adventures Park Ranger 15 Collector s Edition 假期冒险 公园巡游者 mac是一款冒险游戏 让玩家扮演公园管理员 开展刺激的公园管护冒险 作为游戏中的公园管理员 你将被派往各种美
  • HTML CSS属性overflow、white-space、text-overflow

    li width 20 float left 文本或图像会移至父元素中的左侧 overflow hidden 不显示超过对象尺寸的内容 white space nowrap 默认处理方式 文本自动处理换行 假如抵达容器边界内容会转到下一行
  • 数组排序sort()方法详解

    sort 方法用原地算法对数组的元素进行排序 并返回数组 默认排序顺序是在将元素转换为字符串 然后比较它们的UTF 16代码单元值序列时构建的 一 sort 方法基本介绍 1 语法 arr sort compareFunction 2 参数
  • [机缘参悟-84]:读《心若菩提 - 曹德旺》有感

    目录 第1章 心若菩提 简介 1 1 心若菩提 的主要内容 1 2 作者简介 第2章 心若菩提 有感 2 1 首要因素 创业意识 长远目标 正确的方向 2 2 顺势而为的创新 2 3 愿景与专注 2 4 人脉 2 5 政 府关系 2 6 大
  • linux-shell-批量查看多个目录下多个csv文件的行数

    批量查看多个文件的行数 文件目录如下 2020 2020 202008 csv 2020 202009 csv 2020 202002 csv 2020 202011 csv 2020 202005 csv 2020 202001 csv
  • 内核态编程规范

    内核态的编程规范包括以下几点 安全性 内核态的编程需要确保代码的安全性 避免出现缓冲区溢出 越权操作等安全漏洞 可靠性 内核态的代码需要保证高可靠性 避免因为程序的不可预期的异常中断导致系统崩溃或者损坏 性能 内核态的代码需要具有很高的性能
  • 常见异常报错

    一 401错误 Unauthorized 客户试图未经授权访问受密码保护的页面 应答中会包含一个WWW Authenticate头 浏览器据此显 示用户名字 密码对话框 然后在填写合适的Authorization头后再次发出请求 二 403
  • Day 36: 关系型数据库和MySQL概述

    关系型数据库和MySQL概述 关系型数据库概述 数据持久化 将数据保存到能够长久保存数据的存储介质中 在掉电的情况下数据也不会丢失 数据库发展史 网状数据库 层次数据库 关系数据库 NoSQL 数据库 NewSQL 数据库 1970年 IB
  • 预测变量的不确定性

    https www toutiao com a6646320437884092936 2019 01 14 19 57 45 在本文中 我们考虑的情况是预测变量的值不可信 而不是目标变量的值可信 为了简单起见 我们考虑一个带有一个数值预测器
  • 弃用Dubbo!这个新一代框架阿里都用疯了!

    哪个Java框架火 要说几年前 那你大可能会说是Spring Cloud Dubbo 但是现在 你还会说是它们吗 微服务当道 阿里巴巴开源一个Spring Cloud的子项目Spring Cloud Alibaba 它用两年的时间在众多架构
  • pointnet C++推理部署--onnxruntime框架

    classification 以分10类 gpu版本为例 先将pytorch训练出的pth权重文件转为onnx文件 import torch import pointnet cls point num 1024 class num 10 n
  • 沸腾过程气泡成核OVITO渲染

    关注 M r m a t e r
  • 保留两位小数,不要四舍五入,截取前两位

    我的主要思路是把我的数据变成字符串数组 整数部分和小数部分分开 然后对小数部分判断有没有小数 没有直接添加两个0 有一位往后边添加一个0 如果有多位小数直接截取前两位即可 实现过程 const baoliuNumber num gt 封装了
  • Android studio卡顿问题

    使用Android studio版本是2 3 3 最近在使用Android studio时候遇到一件事情 项目开始到中期Android studio好好的 流畅得一批 但是某天快要收尾了 使用Android studio打开项目后 鼠标开始
  • VMware卡在命令行/dev/sda1 clean... 界面不动

    网上说进入 alt ctl F2 进入tty不一定能进得去 此时 可以先进入虚拟机设置 对磁盘进行扩容 比如我就从 20GB 扩充到了 60GB 但此时 扩充的40GB属于未格式化的区域 无法被利用 需要格式化 此时 可以用ubuntu的安
  • 【Python爬虫】requests库

    文章目录 1 requests库的介绍 2 requests库的基本用法 2 1request访问请求 2 1 2对豆瓣等网址发送请求的问题 2 2robots协议 2 3查看和修改爬虫的头部信息 2 2 response响应对象 2 3r