龟速学爬虫笔记①

搞爬虫感觉好吃基础QAQ,学得有点小吃力。这里只是介绍爬虫的代码,后续会总结一下爬虫的原理

准备工作 requests模块

安装requests库

python爬虫需要一个叫做requests的模块,那么第一个问题就是怎么安装requests库呢?

我是在cmd里面用pip install requests安装的,安好了之后保证venv里面有需要的工具就好了,这一步挺顺畅的。

然后import requests就好啦

requests库的一些介绍

使用requests库,第一步是指定url,然后基于requests模块发送请求,获取响应对象的数据值,最后保存数据。

关于requests库的请求方法,最常用的是requests.get()和requests.post(),其次requests库还有其他的请求方法:

requests.put ()

requests.delete()

requests.head()

requests.options()

在指定方法发送请求的时候,有时候还需要在请求方法括号中requests.get(url=url, xx = xx)指定一些参数:

HTTP头部:headers

GET参数:params

POST参数:data

文件:files

Cookies:cookies

重定向处理:allow_ redirects = False/True

超时:timeout

证书验证:verify = False/True

工作流(延迟下载):stream=False/ True

事件挂钩:hooks=dict(response=)

身份验证:auth=

代理:proxies=

我们往往会想要获得更具体的数据,例如response = requests.get(url=url)返回的是一个响应对象,而如果我们想要获取其他数据,比如状态码,就需要通过指定响应对象的属性进行获取。

获取请求url:response. url

状态码:response. status_code

响应数据(字符串形式):response . text

返回的是一个原生字符串(bytes类型): response. content

查看服务器响应头:response. headers

查看cookie:response.cookies

试一试简单的爬虫

有了关于requests的一些使用理论,就可以进行一下实践了(致敬一下4399):

import requests#爬虫的库
response = requests.get("https://www.4399.com")
response.encoding = response.apparent_encoding#防止乱码
print("状态码:"+ str( response.status_code ) )#打印状态码;
print(response.text)
#保存爬到的数据
with open('D:\\PythonStudy\\htmls\\4399.html','w') as f:
    f.write(response.text)

get和post的区别

requests.get()和requests.post()是最常用的两种方法,那么get和post的区别是什么呢?

  1. url是否可见:get可见,post不可见

  1. 数据传输的方式:get:url拼接;post:body体

  1. 是否可以缓存:get可以,post不可以

  1. 后退页面是否重新提交请求:get不会,post会

  1. 传输数据受限方式:get传输数据大小取决于浏览器,post则是根据配置文件的设定而来

  1. 安全性:原则上认为post更安全

  1. 产生数据包不同:GET产生一个TCP数据包;POST产生两个TCP数据包。对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200(返回数据)。在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。

你可能感兴趣的:(网络安全,爬虫,网络安全,网络,运维,python)