浅学 ------ 爬虫(一)

初始爬虫

爬虫的工作原理

​ 爬虫可以像浏览器一样向服务器发起请求,拿到服务器返回的数据后,可以根据我们设定的规则去提取需要的数据,数据处理完成后再将数据存储起来。

​ 相当于浏览器

爬虫的三个步骤:

1、获取数据

2、处理数据

3、存储数据

第一步:获取数据,爬虫会根据我们提供的网址,向服务器发起请求获取数据;

第二步:处理数据,对获取的数据进行处理,得到我们需要的部分;

第三步:存储数据,将处理后的数据保存起来,便于后续的使用和分析等。

爬虫中最常用的发起请求的第三方库——requests

requests库

PyCharm安装requests

image-20220504090413666

image-20220504090447505

在这里插入图片描述

requests.get() 方法

第一步 获取数据

import requests # 导入 requests 模块

res = requests.get('url')	# 发起请求
print(res)
# 输出:<Response [200]>

​ 使用 requests.get(‘网站地址’) 方法向对应的网站发起了请求,然后我们将返回的结果存到了变量 res 中供后续使用。它的类型是 Response 对象,后面的 200 是状态码

​ 通过 requests.get() 方法获取到了网页的数据,作为 Response 对象存到了变量 res

Response 对象的常用属性:

			属性						含义
		res.status_code			响应的 HTTP 状态码
        res.text				响应内容的字符串形式
        res.content				响应内容的二进制形式
        res.encoding			响应内容的编码

res.status_code

import requests 

res = requests.get('url')
print(res)
输出:<Response [200]>

​ 这里的 200 就是响应的状态码,表示请求成功。当请求失败时会有不同的状态码,不同的状态码有不同的含义

	响应状态码		含义			例子			含义
    1xx			   消息		    100			继续发出请求
    2xx			  请求成功		  200		   请求成功
    3xx			   重定向		   301			永久重定向
    4xx			  客户端错误		  404 		  找不到资源		
    5xx			  服务器错误		  503		  服务不可用

res.text

res.text 返回的是服务器响应内容的字符串形式,也就是文本内容。

import request

res = request.get('url')
print(res.text)

例子:

import requests
# 获取小说数据
res = requests.get('url') #小说的网址
# 以写入的方式打开一个名为小说的 txt 文档
with open('小说.txt','w') as file:
    #将数据的字符串形式写入文件中
    file.write(res.text)

涉及到文件操作。

open() 函数是 Python 中的内置函数,用于打开文件,返回值是一个 file 对象

open() 函数接收的第一个参数为文件名,第二个参数为文件打开模式。打开模式默认为 r,是 read 的缩写,表示只读模式。即只能读取内容,不能修改内容。

​ 常用的打开模式有 w(write,只写模式)、b(binary,二进制模式)和 a(append,追加模式,表示在文件末尾写入内容,不会从头开始覆盖原文件)。

Tips:在 wa 模式下,如果你打开的文件不存在,那么 open() 函数会自动帮你创建一个。

​ 这些打开模式还能两两组合,比如:rb 表示以二进制格式打开文件用于读取,wb 表示以二进制格式打开文件用于写入,ab 表示以二进制格式打开文件用于追加写入。

注意:使用 open() 函数打开文件,操作完毕后,最后一定要调用 file 对象的 close() 方法关闭该文件。

#读取文件
file = open('文本.txt')	# 打开模式默认为 r,可省略
print(file.read())	# 调用 read() 方法读取文件内容
file.close()	# 关闭文件

#写入文件
file = open('文本.txt','w')	# 写入模式
file.write('hello world!')	#调用 write() 方法写入内容
file.close() # 关闭文件

​ 为了避免忘记调用 close() 方法关闭文件,导致资源占用、文件内容丢失等问题,推荐使用 with … as … 语法,它在最后会自动帮你关闭文件。

import requests
# 获取小说数据
res = requests.get('url') #小说网址
# 以写入的方式打开一个名为小说的 txt 文档
with open('小说.txt', 'w') as file:
  # 将数据的字符串形式写入文件中
  file.write(res.text)

​ 获取到网页的响应后,以写入模式打开一个名为 小说.txt 的文件,然后调用 write() 方法将响应内容的字符串形式写入到文件中,实现了小说的下载。同理,所有文本内容都可以通过这种方式进行下载,只需将 res.text 写入到文件当中保存即可。

res.content

​ 除了文本内容的下载,爬虫还能下载图片、音频、视频等。

import requests
#获取图片数据
res = requests.get('url') #图片网页
#以二进制写入的方式打开一个名为 photo.jpg 的文件
with open('photo.jpg','wb') as file:
    file.write(res.content)

​ 和下载小说的步骤几乎一样。区别在于图片是用二进制写入的方式,将数据的二进制形式写入文件当中,而不是字符串形式。

res.textres.content 的区别是:res.text 用于文本内容的获取、下载,res.content 用于图片、音频、视频等二进制内容的获取、下载。

res.encoding

res.encoding 就是爬虫获取到数据的编码格式,requests库会根据内容推测编码格式是什么,然后将res.encoding设成推测的格式,在访问res.text时使用该格式解码。

通过手动设置编码格式的方式解码乱码的问题。

import requests
res = requests.get('url')
res.encoding = 'utf-8'
print(res.text)
Cross-Attention指的是Transformer架构中的一种注意力机制,它用于混合两个不同嵌入序列的注意力。这两个序列必须具有相同的维度,并且可以是不同的模式形态,比如文本、声音、图像等。在Cross-Attention中,一个序列作为输入的Q,定义了输出的序列长度,而另一个序列提供输入的K和V。 Cross-Attention与Self-Attention不同之处在于,Cross-Attention的输入来自不同的序列,而Self-Attention的输入来自同一个序列。但除此之外,它们的基本原理是一致的。在Transformer中,Cross-Attention通常是指编码器和解码器之间的交叉注意力层。在这一层中,解码器会对编码器的输出进行注意力调整,以获得与当前解码位置相关的编码器信息。具体的计算过程包括:编码器输入(通常是来自编码器的输出)和解码器输入(已生成的部分序列)被分别表示为enc_inputs和dec_inputs。解码器的每个位置会生成一个查询向量(query),用来在编码器的所有位置进行注意力权重计算。编码器的所有位置会生成一组键向量(keys)和值向量(values)。通过对查询向量和键向量进行点积操作,并通过softmax函数获得注意力权重。注意力权重与值向量相乘,并对结果进行求和,得到编码器调整的输出。这样,Cross-Attention机制帮助解码器能够有效地建模当前生成位置的上下文信息。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [【科研】浅学Cross-attention?](https://blog.csdn.net/MengYa_Dream/article/details/126688503)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [交叉注意力机制CrossAttention](https://blog.csdn.net/m0_63097763/article/details/132293568)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值