前言
在网络高度发达的今日,爬虫在社会各行各业的应用及其广泛,网络爬虫的核心思想是模拟人类使用浏览器访问网页的过程,通过发送HTTP请求获取网页内容,并从中提取有用的信息。网络爬虫通常需要借助于一些第三方库来实现,比如Python中的requests库和BeautifulSoup库等。
网络爬虫应用非常广泛,比如搜索引擎、电商价格监控、舆情分析等领域都有着重要作用。但是,网络爬虫的使用也存在一些问题,比如隐私泄露、版权侵犯等问题。因此,在使用网络爬虫时一定要遵守法律法规,尊重他人合法权益。本文将详细介绍Python爬虫的知识。供各位学习
Fight!!(o-)~'‘☆ミ☆ミ
Fight!!(o-)~’'☆ミ☆ミ
一、爬虫的定义
爬虫的全名叫网络爬虫,简称爬虫。别名网络机器人,网络蜘蛛等等称呼。爬虫就好像一个探测机器,它的基本操作就是模拟人的行为去各个网站进行浏览,将控制人需要的数据从网站运输到终端.
二、学习步骤
1.爬虫的合法性
爬虫本身不违法,但是要注意以下三点
①.在使用时要遵守君子协议(robots协议)
②.不能造成对方服务器瘫痪
③.不能非法获利(违反著作权法的行为)
2.爬虫的HTTP协议
定义:超文本传输协议 (HTTP)
超级文本(超越文本限制或者超链接[不属于文本之内的,例如href=“超链接”])
。图片、音乐、视频等
。可以传递任意格式的数据
。传输HTTP协议数据基于TCP传输协议。发送数据需要先建立连接
作用:规定了浏览器和web服务器通信数据的格式,也就是访问web服务器需要http协议
以下是代码实例:
import requests
url = 'https://www.example.com/'
response = requests.get(url)
print(response.text)
#在这个示例中,我们定义了一个名为“url”的变量,该变量存储待爬取网站的URL。然后使用requests库发送一个GET请求并将响应存储在“response”变量中。最后,我们以文本格式打印响应内容(即网页源代码)。
3.爬虫常返回的状态码
1xx 信息响应代码:
100:继续
101:协议切换
2xx 成功响应代码:
200:成功
201:已创建
202:已接受
204:无内容
3xx 重定向响应代码:
300:多种选择
301:永久移动
302:临时移动
303:查看其他位置
304:未修改
307:临时重定向
4xx 客户端错误响应代码:
400:错误的请求
401:未授权
403:禁止访问
404:未找到
405:请求方法不允许
408:请求超时
409:冲突
410:永久删除
415:不支持的媒体类型
5xx 服务器错误响应代码:
500:内部服务器错误
502:错误网关
503:服务不可用
504:网关超时
4.cookie与session id
定义:Cookie和Session ID都是Web开发中用来存储和跟踪用户信息的重要工具。Cookie是由服务器发送到浏览器并存储在本地计算机上的小文件,以便下次用户访问该网站时能够读取该信息。而Session ID则是一种服务端生成的唯一标识符,用于跟踪用户在网站上的活动。
Cookie常常用于记录有关页面布局、颜色方案、语言首选项等用户个性化设置,而Session ID通常用于存储与用户相关的数据,比如购物车中商品信息、用户登录状态等。
以下是代码实例:
①、使用Cookie
from flask import Flask, request, make_response
app = Flask(__name__)
@app.route('/')
def index():
# 从Cookie中读取用户ID
user_id = request.cookies.get('user_id')
if not user_id:
# 如果没有用户ID,则使用随机数生成一个
user_id = str(random.randint(1, 1000000))
# 在响应中设置Cookie
resp = make_response(f'Hello, {user_id}!')
resp.set_cookie('user_id', user_id)
return resp
if __name__ == '__main__':
app.run()
②、使用Session ID
from flask import Flask, request, session
app = Flask(__name__)
# 设置Session密钥
app.secret_key = 'my_secret_key'
@app.route('/')
def index():
# 从Session中读取用户ID
user_id = session.get('user_id')
if not user_id:
# 如果没有用户ID,则使用随机数生成一个
user_id = str(random.randint(1, 1000000))
# 在Session中存储用户ID
session['user_id'] = user_id
return f'Hello, {user_id}!'
if __name__ == '__main__':
app.run()