2021SC@SDUSC
目录
一、摘要
本篇博客是项目代码分析的第一篇,由于整个项目都是基于python的爬虫项目,所以我需要先学习python爬虫的相关技术,掌握这方面的知识,然后再分析项目代码。
本篇主要介绍的是我学习Python的requests库的过程。
二、HTTP协议
1.简介
HTTP,超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法,HTTP是一种基于"请求与响应"模式的、无状态的应用层协议。HTTP协议采用URL作为定位网络资源的的标识符。
2.HTTP协议的GET请求与POST请求
GET:从指定的资源请求数据。
POST:向指定的资源提交要被处理的数据。
三、Requests库的简介与安装
1.简介
Requests是用python语言基于urllib编写的,采用的是Apache2 Licensed开源协议的HTTP库,Requests它会比urllib更加方便,可以节约我们大量的工作,完全满足 HTTP 测试需求。
2.安装
pip install requests
四、Requests的相关知识
1.requests主要方法概览
requests的get()方法:
resp = requests.get(url)
resp是一个response对象,包含服务器资源和爬虫返回的内容。
.get(url)是一个request对象,构造一个向服务器请求资源的Request。
requests的post()方法:
resp = requests.post('http://httpbin.org/post',data={'key':'value'})
2.Headers
HTTP Headers是HTTP请求和相应的核心,它承载了关于客户端浏览器,请求页面,服务器等相关的信息。
某网页的headers如图:
headers有很多属性,如host,referer,User-Agent等,爬虫也可以自定义headers用于一些类似于处理简单的反爬操作,即自定义User-Agent处理反爬。
3.响应请求
通过Requests发起请求获取到的,是一个requests.models.Response对象。通过这个对象可以很方便的获取响应的内容。
resp = requests.get(url)
resp.text:HTTP响应的字符串形式,即url对应的页面内容
resp.encoding:从HTTP header中猜测的响应内容的编码方式
resp.content:HTTP响应内容的二进制形式
resp.json:若数据是JSON格式的则直接获取转换成字典格式的数据
resp.status_code:获得响应的状态码(如404,200等)
五、request的实践
爬取豆瓣电影分类排行榜(剧情)
import requests
url="https://movie.douban.com/j/chart/top_list"
param={
"type": "11",
"interval_id": "100:90",
"action": "",
"start": 0,
"limit": 20
}
headers={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3870.400 QQBrowser/10.8.4405.400"
}
resp = requests.get(url,params=param,headers=headers)
print(resp.json())
resp.close()
代码注解:
param:传递URL参数,即构造一个字典,并在请求时将其传递给params参数
headers:自定义headers,构造一个字典并传给headers参数,这里定义了User-Agent是用来处理反爬,即让服务器觉得是人在浏览器上浏览而不是自动化程序访问
resp.json():将响应结果转换成字典格式数据
爬取结果:
六、总结
通过对requests库的初步了解,也算是爬虫入门的开始,知道了爬虫的基本原理和简单方法,了解了requests库的相关知识与应用,通过自己动手写第一个简单的爬虫程序,感受到爬虫的魅力与乐趣。