博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python爬虫 requests库应用详解
阅读量:3959 次
发布时间:2019-05-24

本文共 4493 字,大约阅读时间需要 14 分钟。

Python爬虫(一)

学习Python爬虫过程中的心得体会以及知识点的整理,方便我自己查找,也希望可以和大家一起交流。

—— requests库应用详解 ——

文章目录

一.安装requests库

可以直接使用pip安装,如果电脑上没安装pip,可以到以下网址教程中安装。

Linux:。
Windows:。
MAC OS:直接在终端输入代码:sudo easy_install pip

安装好pip后,我们就可以安装requests库了。

直接输入代码:pip install requests

二.导入requests库

我们首先在Python中导入requests库:

import requests

对于新手来说,我们需要知道requests库有什么功能方法,我们可以dir一下:

print (dir(requests))

requests库

在这里我们可以看到requests库的各种方法。
接下来我们就使用几种。

import requestsurl="http://www.baidu.com"r=requests.get(url)

这里使用的是requests库的get方法,相当于我们在浏览器里输入“http://www.baidu.com”这个网址所能获得的的信息。

三.requests库的代理功能

requests库支持代理,支持两种协议,http和https。

proxies = {
"http":"http://127.0.0.1:8080", "https":"http://127.0.0.1:8080" , }

我是直接在本地的8080端口进行测试,并且可以利用burpsuite在8080端口进行监听。

若需要输入账户密码,则可以:

proxies = {
"http": "http://user:pass@10.10.1.10:3128/",}

当进行代理的时候,需要修改原本的代码:

import requestsurl="http://www.baidu.com"proxies = {
"http":"http://127.0.0.1:8080", "https":"http://127.0.0.1:8080" , }r=requests.get(url,proxies = proxies,verify = false)

这里我们在get方法中添加了参数,proxies参数和verify参数,如果使用的是https认证而本地证书又没有认证,那么需要将verify参数设置为false。当然,如果不进行修改verify,那么代码指令依然可以运行,但是会报错。

四.requests库的方法和函数

import requestsurl="http://www.baidu.com"r=requests.get(url)print(r)print(r.status_code)print(r.text)print(r.content)print(r.history)print(r.request.headers)print(r.headers)print(r.request.body)
  1. status_code:返回http状态码。具体状态码含义点击查看。
  2. text/content:返回请求网站的源代码和结果,比较推荐使用content,因为text在显示中文的时候,容易显示乱码,而content返回的数据格式其实是二进制格式,然后通过decode()转换为utf-8,这样就解决了乱码的问题.。
  3. history:当请求地网站进行跳转的时候,显示跳转信息,比如跳转次数。若使用content,会显示跳转后的网页的源码或信息。
    如果不想使网页进行跳转,那么可以直接加入参数:
r=requests.get(url,allow_redirects=False)

allow_redirects参数是询问是否自动跳转。

4. sys.setdefaultencoding:由于linux和windows的基础设置有一些不同,所以有时候需要更改一些设置,比如编码,是为了防止乱码。这个过程需要引入sys,更改系统设置。完整代码如下:

import sysreload(sys)sys.setdefaultencoding('utf-8')
  1. encoding:返回当前编码。
    更改编码的代码:
r.encoding = "utf-8"
  1. request.headers:查看请求包的头。
  2. headers:查看响应包的头。
    修改头的代码:
headers = {
'user-agent': 'my-aasdasdaspp/0.0.1', 'asd':'hello world!'}
  1. request.body:查看请求参数。
  2. cookies:查看cookies信息。
    修改cookies信息的代码:
cookies = dict(cookies_are='working')
  1. (参数)timeout:设置超时。
    具体代码:
r = requests.get(url, timeout=5)r = requests.get(url, timeout=None)
  1. (函数)session:使用session。(进行关联请求,自动添加cookies)session的具体原理点击查看。
    具体代码(注意conn):
conn = requests.session()r = conn.get(url)print r.request.headersr = conn.get(url)print r.request.headers
  1. (库)json:将返回值以json的形式展示。json库的具体介绍点击链接查看。
    具体代码:
import requestsimport json r = requests.get("http://www.baidu.com/get")print(type(r.text))print(r.json())print(json.loads(r.text))print(type(r.json()))
  1. (参数)file:文件操作,文件上传。
    具体文件上传的代码:
files = {
'file': open('cookie.txt', 'rb')}response = requests.post("http://httpbin.org/post", files=files)
  1. 请求函数
  • GET: 请求指定的页面信息,并返回实体主体。GET请求将提交的数据放置在HTTP请求协议头中。
    进行get请求的代码:
url="http://www.baidu.com" r=requests.get(url)
  • HEAD: 只请求页面的首部。
  • POST: 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。POST提交的数据则放在实体数据中。
    发送post请求的代码:
payload = {
'name': 'loop', 'age': '12'} r = requests.post("http://httpbin.org/post", data=payload)
  • PUT: 从客户端向服务器传送的数据取代指定的文档的内容。
  • DELETE: 请求服务器删除指定的页面。

五.完整相关代码:

import requestsurl = 'https://account.tophant.com/login.html?response_type=code&client_id=b611bfe4ef417dbc&state=2e509c092de6ba1bf39a6fff76dd9a76'#requests的请求方法:get、post、put、delete、head、options等r = requests.get(url)r = requests.post(url,data=xxx)r = requests.put(url)r = requests.delete(url)r = requests.head(url)r = requests.options(url)#代理认证:proxies = {
"http": "http://127.0.0.1:8080", "https": "http://127.0.0.1:8080",}proxies = {
"http": "http://user:pass@10.10.1.10:3128/",}#查看响应码print r.status_code#重定向r = requests.get(url, allow_redirects=False)print r.history#查看相应内容print r.textprint r.content#修改系统默认编码格式import sysreload(sys)sys.setdefaultencoding('utf-8')#查看请求头print r.request.headers#查看请求参数print r.request.body#查看响应头print r.headers#保存返回的结果fh = open("abc.png", 'w')fh.write(r.content)fh.close()#查看返回的编码格式print r.encoding#更改返回的编码格式r.encoding = "utf-8"#添加header头headers = {
'user-agent': 'my-aasdasdaspp/0.0.1', 'asd':'hello world!'}#修改cookiecookies = dict(cookies_are='working')#获得响应头中的cookieprint r.cookies['domain']#如何发送post请求payload = {
'name': 'loop', 'age': '12'}r = requests.post("http://httpbin.org/post", data=payload)#设置超时r = requests.get(url, timeout=5)r = requests.get(url, timeout=None)#使用sessionconn = requests.session()r = conn.get(url)print r.request.headersr = conn.get(url)print r.request.headers#请求方法r = requests.post(url, proxies=proxies, headers=headers, cookies=cookies, verify=False, data=payload)

转载地址:http://hfazi.baihongyu.com/

你可能感兴趣的文章
java 过滤器
查看>>
as发送邮件
查看>>
AJAX应用之注册用户即时检测
查看>>
File 类小结
查看>>
java除去字符串空格
查看>>
jsp 2.0标记文件
查看>>
Hibernate中Criteria的完整用法
查看>>
sql jsp
查看>>
Word生成目录
查看>>
JSP彩色验证码源程序编写
查看>>
java操作Excel、PDF文件
查看>>
java 获得系统变量
查看>>
window.event对象用法讲解
查看>>
jive license保护原理
查看>>
java des加密
查看>>
struts&hibernate&spring例子
查看>>
inno使用教程
查看>>
网吧系统母盘制作(系统分区整体考虑优化配置篇)
查看>>
spring beans beanfactory applicationcontext
查看>>
使用ORM工具进行数据访问
查看>>