网络爬虫(又被称为网页蜘蛛(Web Spider),网络机器人,好听点的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网(www)信息的程序或者脚本。
在浏览器中输入地址(网站地址URL:https://www.baidu.com/)后,向服务器发送一个请求,服务器经过解析后发送给用户浏览器结果。
爬虫就是通过分析和过滤html代码,从中获取我们想要的资源(文本、图片、音频、视频等)。
(1)服务器每次收到请求时,都会为这个请求开辟一个新的线程。
(2)服务器会把客户端的请求数据封装到request对象中,request就是请求数据的载体!
(3)服务器还会创建response对象,这个对象与客户端连接在一起,它可以用来向客户端发送响应。
request的功能可以分为以下几种:
(1)封装了请求头数据;
(2)封装了请求正文数据,如果是GET请求,那么就没有正文;
(3)request是一个域对象,可以把它当成Map来添加获取数据;
(4)request提供了请求转发和请求包含功能。
请求参数会在浏览器的地址栏中显示,所以不安全;
请求参数长度限制长度在1K之内;#面试考点,我经常问面试者这个问题
GET请求没有请求体,无法通过request.setCharacterEncoding()来设置参数的编码;
请求参数不会显示浏览器的地址栏,相对安全;#大厂一般请求都会是Post,包括很多read操作。
请求参数长度没有限制;
Python django中我们经常用的response有django中的 JsonResponse, HttpResponse,还有DRF中的Response
在使用的时候,经常会不知道如何什么时候选择用哪个response
下面简单记录下这三个response的区别
它的返回格式为:HttpResponse(content=响应体, content_type=响应体数据类型, status=状态码)
HttpResponse("哈哈哈哈")
res = HttpResponse("哈哈哈哈")
res.write("恩,我们是一个测试段落")
img = open(filepath,"rb")
data = img.read()
return HttpResponse(data, content_type="image/png")
它继承自HttpResponse,它主要用于返回json格式的数据
JsonResponse(jsonData,content_type="application/json")
它的返回格式为:
Response(data, status=None,template_name=None, header=None, content_type=None)
data:为python內建数据类型,DRF会使用render渲染器处理data
http://pypi.douban.com/simple/ 豆瓣
http://mirrors.aliyun.com/pypi/simple/ 阿里
http://pypi.hustunique.com/simple/ 华中理工大学
http://pypi.sdutlinux.org/simple/ 山东理工大学
http://pypi.mirrors.ustc.edu.cn/simple/ 中国科学技术大学
https://pypi.tuna.tsinghua.edu.cn/simple 清华
pip install --index https://pypi.mirrors.ustc.edu.cn/simple/ pandas
import requests
#获取请求的响应结果【response】
response=requests.get("http://www.baidu.com")
#类型
print(type(response))
#响应状态【200为成功】
print(response.status_code)
#响应文本类型-一般都是str字符串
print(type(response.text))
#响应文本内容
print(response.text)
# ]>
print(response.cookies)
#响应内容
print(response.content)
#修改响应的编码格式
print(response.content.decode("utf-8"))
response.text
返回的类型是str
response.content
返回的类型是bytes
,可以通过decode()
方法将bytes
类型转为str
类型
推荐使用:response.content.decode()
的方式获取相应的html页面
response.text
解码类型:根据HTTP头部对响应的编码做出有根据的推测,推测的文本编码
如何修改编码方式:response.encoding = 'gbk'
response.content
解码类型:没有指定
如何修改编码方式:response.content.decode('utf8')
import requests
#获取请求的响应结果【response】
tel=int(input("请输入手机号码:\n"))
url="https://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel={0}".format(tel)
print(url)
response=requests.get(url)
print(response.text)
print(response.content.decode("gbk"))
import requests
data = {
"name":"小龙女",
"age":16
}
response = requests.post("http://httpbin.org/post",data=data)
print(response.text)
通常而言,在我们使用python爬虫时,更建议用requests库,因为requests比urllib更为便捷,requests可以直接构造get,post请求并发起,而urllib.request只能先构造get,post请求,再发起。
a)、本章节主要为让大家了解网络请求的方式,这里主要是【get】与【post】请求,使用的是【requests】模块。
b)、后续所有的访问返回都会使用【requests】请大家好好练习一下这块。
欢迎【点赞】、【评论】、【关注】、【收藏】、【打赏】,为推广知识贡献力量。