数据采集
数据采集,就是可以快速的收集数据,自动的,不用人一页一页复制。
这是非常重要的。
下面,我来介绍一下,在python中,如何做到这一点。
urllib
在python中,想要数据采集,就需要使用urllib,这是非常好的。
发送get请求
import urllib.request
# 定义要访问的网址
url = 'http://example.com/'
# 打开网址
response = urllib.request.urlopen(url)
# 读取内容
html = response.read()
# 打印获取的数据
print(html)
发送post请求
import urllib.parse
import urllib.request
# 定义要访问的网址和数据
url = 'http://example.com/login'
values = {'username': 'user', 'password': 'pass'}
# 编码数据
data = urllib.parse.urlencode(values)
data = data.encode('ascii') # 数据需要编码为 bytes
# 发送请求
request = urllib.request.Request(url, data)
response = urllib.request.urlopen(request)
# 读取响应
html = response.read()
# 打印结果
print(html)
什么是get/post请求
可能有一些萌新,对于get/post请求缺乏认识,下面我来介绍一下,什么是get/post请求。
get请求
GET 请求主要用于从服务器获取数据。它通常用于请求页面、图片、视频等资源,或者根据查询参数检索信息。GET 请求的特点包括:
- 数据可见性:GET 请求的数据会附加在 URL 上,形式为查询字符串(即 URL 中的 ?key=value 部分),因此数据在浏览器的历史记录、服务器的日志文件中都是可见的。
- 限制数据长度:由于数据附在 URL 上,大多数浏览器和服务器对 URL 长度有限制,这可能导致数据量大的请求无法通过 GET 发送。
- 可缓存:GET 请求结果可以被浏览器或代理服务器缓存,以加快相同资源的后续访问速度。
- 幂等性:理论上,GET 请求是幂等的,意味着多次执行相同的 GET 请求,服务器上的数据不会改变(但是实际上并不总是如此)。
post请求
POST 请求主要用于向服务器提交数据,通常用于表单提交,如用户注册、上传文件等。POST 请求的特点包括:
- 数据不可见性:POST 请求的数据包含在请求体内,不会显示在 URL 中,这比 GET 更安全。
- 无限制数据长度:POST 方法将数据放在请求体中,没有数据长度的限制。
- 不可缓存:POST 请求的响应通常不被缓存,因为它们可以随时修改服务器上的数据。
- 非幂等性:POST 请求可能不是幂等的,即多次提交同一 POST 请求可能会在服务器上多次创建或修改数据。
如何区分get/post请求
一个网站可能使用get,也可能使用post,需要自己去“抓包“查看。
通常情况下,需要打开浏览器的网络标签,然后看请求究竟是get,还是post的
总结
今天,我们介绍了urllib的使用,这对于数据采集入门的第一步是非常重要的。也需要理解get/post请求的不同。