文章截图均来自中国大学mooc Python网络爬虫与信息提取的教程,以上仅作为我的个人学习笔记。
下面是教程链接:https://www.icourse163.org/learn/BIT-1001870001?tid=1450316449#/learn/content?type=detail&id=1214620493&cid=1218397635&replay=true
2-1首先是Request库
安装方法:
- 注意一点首先安装的时候一定要点 add into path ,要不然需要手动配置系统环境变量
- 只有配置好环境变量之后,才可以通过windows cmd 控制台 管理员身份安装 requests库。
pip install requests //直接键入这行代码,就可以 在线下载安装;
安装截图:
测试是否安装成功:
>>> import requests
>>> r = requests.get("http://www.baidu.com")
>>> r.status_code
200
>>> r.encoding ='utf-8'
>>> r.text
- 首先导入requests库
- 接着用requests.get(url)的方法获取指定的网页界面信息
- status_code表示获取的状态:200表示获取的比较成功,404表示失败
- 使用encoding = 'utf-8' 来修改网页的编码格式
- text是以文本的方式输出网页的源代码
测试结果:
展开介绍requests库的几个主要方法:
最常用方法:r = requests.get(url): r是一个Response对象,它包含从服务器返回的所有的相关资源
完整的参数信息:request.get(url,params=None,**kwargs)
其中:url是目标网页路径,params是url中的额外参数,字典或者字节流格式,**kwargs:12个控制访问的参数,也是可选的。
注意:如果charset里面没有指定编码格式,那么就猜测是'ISO-8859-1' ,这个是不能识别中文的,我们需要分析出之后再使用
爬取网页的通用代码框架:
有时候网络连接可能出现错误,所以这样的的语句的异常处理是必要的,request库支持6中网络连接异常
import requestsdef getHTMLText(url):try:r = requests.get(url,timeout=30)r.raise_for_status() #如果状态不是200,那么会引发HTTPError异常r.encoding = r.apparent_encodingreturn r.textexcept:return "产生异常"if __name__ == "__main__":url = "www.baidu.com" #加上http才是对的print(getHTMLText(url))
http协议和request库的主要方法:(hypertext transfer protocol)超文本传输协议 是基于请求和响应模式的、无状态的协议(两次请求之间没有关联)
使用head方法可以使用很少的网络流量获取网络资源的概要信息。
也可以使用post方法向服务器提交新增数据
>>> r = requests.head('http://httpbin.org/get')
>>> r.headers
{'Date': 'Mon, 25 May 2020 00:59:16 GMT', 'Content-Type': 'application/json', 'Content-Length': '306', 'Connection': 'keep-alive', 'Server': 'gunicorn/19.9.0', 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Credentials': 'true'}
>>> r.text
''
>>> payload = {'key1':'value1','key2':'value2'}
>>> r = requests.post('http://httpbin.org/post',data = payload)
>>> print(r.text)
{"args": {}, "data": "", "files": {}, "form": {"key1": "value1", "key2": "value2"}, "headers": {"Accept": "*/*", "Accept-Encoding": "gzip, deflate", "Content-Length": "23", "Content-Type": "application/x-www-form-urlencoded", "Host": "httpbin.org", "User-Agent": "python-requests/2.23.0", "X-Amzn-Trace-Id": "Root=1-5ecb19bf-623ad90aba074ffa39e290d4"}, "json": null, "origin": "223.68.19.130", "url": "http://httpbin.org/post"
}
向url post一个字典,自动编码为form(表单),post方法会根据用户提交的信息不同,进行相关的整理
request方法是request库的基础方法:
访问控制参数:
1、params:可以将这些键值对加到url之中。
2、data:作为内容部分,可以将数据提交在url对应data位置,向服务器进行提交,可以留由以后使用。
3、json:作为内容部分,可以将数据提交在url对应json位置,向服务器进行提交,可以留由以后使用。
4、headers:修改头里面的指定字段的内容,可以模拟不同版本的浏览器先服务器发起访问,以后会用到。
5、COOKIE:从http协议中解析COOKIE,以后会用到。
6、files:可以向某一个链接提交某一个文件。
7、timeout设置超时时间。
8、proxies:代理服务器(比如此时访问百度的ip地址就是我们代理服务器的ip地址,可以有效的隐藏用户爬取网页的源ip地址,可以有效的防止对爬虫的逆追踪)可以增加用户名和密码的设置。
9、一些高级功能:现阶段暂时不会用到。
回顾13个访问控制参数:
单元小结: