python3网络爬虫学习——使用requests(1)

reuqests库中有很多便捷的方法,比如以GET方式获得网页,在requests库中就是方法get(),上代码

import requests
r = requests.get(‘https://www.baidu.com‘)
print(type(r))
print(r.status_code)
print(type(r.text))
print(r.text)
print(r.cookies)

相当于urlopen的方法,得到一个Response对象,然后分别输出他的类型,状态码,相应体的类型,内容以及Cookies

requests还有许多的方法比如post,put,delete,head,options等分别表示其请求

由于HTTP中最常见的就是GET请求,因此下面用其来构建一个GET请求实例:

  • 基本实例
import requests
data = {
        ‘name‘:‘germey‘,
        ‘age‘:‘22‘
        }
#也可以不用创建data字典,直接把网址后面加上“?name=germey&age=22"但这样明显麻烦很多
r = requests.get(‘http://httpbin.org/get‘,params = data)
print(r.text)
#网页返回的是str类型,JSON格式的,我们可以用json方法将JSON格式的字符串转化为字典print(r.json())

runfile(‘F:/Python/exercise/pygame/untitled0.py‘, wdir=‘F:/Python/exercise/pygame‘)
{
  "args": {
    "age": "22",
    "name": "germey"
  },
  "headers": {
    "Accept": "*/*",
    "Accept-Encoding": "gzip, deflate",
    "Connection": "close",
    "Host": "httpbin.org",
    "User-Agent": "python-requests/2.18.4"
  },
  "origin": "182.108.3.27",
  "url": "http://httpbin.org/get?name=germey&age=22"
}

{‘args‘: {‘age‘: ‘22‘, ‘name‘: ‘germey‘}, ‘headers‘: {‘Accept‘: ‘*/*‘, ‘Accept-Encoding‘: ‘gzip, deflate‘, ‘Connection‘: ‘close‘, ‘Host‘: ‘httpbin.org‘, ‘User-Agent‘: ‘python-requests/2.18.4‘}, ‘origin‘: ‘182.108.3.27‘, ‘url‘: ‘http://httpbin.org/get?name=germey&age=22‘}

但要注意的是如果不是JSON格式便会出现解析错误json.decoder.JSONDecodeError错误

  • 抓取二进制数据

在抓取网页中,我们抓取的是一个页面,也就是一个HTML文件,如果想抓取图片,音频,视频等文件,则需要抓取他们的二进制文件,再将它们解码得到

import requests
r = requests.get("https://github.com/favicon.ico")
print(r.text)
print(r.content)

打开后我们是这样的

可以看出其有两个属性,一个是text属性,其为Unicode类型的文件,也就是符号集类型,其中英文字母其还是为英文,但中文字符就会表示为乱码的形式,一个为content属性,其为二进制形式的类型,开头有一个b表示其文件类型

再添加代码打开文件

with open(‘facicon.ico‘,‘wb‘) as f:
    f.write(r.content)

其中open函数的第一个参数为图片名称,第二个参数为以二进制方式打开,然后就会发现在当前文件夹下存储了一个名为favicon.ico的图标

不过这里我有一点疑惑,为何不是存储为一个包含这些二进制代码的txt文本文件,我猜测是因为,在读写文件的时候,电脑现将这个二进制编码进行转换,转得到的文件类型为ico则存为ico,为字符串则存为txt,那么应该在这个二进制文件里包含了存储为何种类型文件的信息

有的时候,有些网站可能禁止我们访问,这个时候加上User-agent就可以了,只要在requests.get(‘url‘,headers=‘   ‘)就可以了

2.post请求

import requests
data = {‘name‘:‘germy‘,‘age‘:‘22‘}
r = requests.post("https://httpbin.org/post",data=data)
print(r.text)
print(r.content)

{
"args": {},
"data": "",
"files": {},
"form": {
"age": "22",
"name": "germy"
},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Connection": "close",
"Content-Length": "17",
"Content-Type": "application/x-www-form-urlencoded",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.18.4"
},
"json": null,
"origin": "218.64.33.30",
"url": "https://httpbin.org/post"
}

b‘{\n "args": {}, \n "data": "", \n "files": {}, \n "form": {\n "age": "22", \n "name": "germy"\n }, \n "headers": {\n "Accept": "*/*", \n "Accept-Encoding": "gzip, deflate", \n "Connection": "close", \n "Content-Length": "17", \n "Content-Type": "application/x-www-form-urlencoded", \n "Host": "httpbin.org", \n "User-Agent": "python-requests/2.18.4"\n }, \n "json": null, \n "origin": "218.64.33.30", \n "url": "https://httpbin.org/post"\n}\n‘

可以得到返回结果,其中form就是提交的数据,这就证明POST请求提交成功了

可以通过requests.status_code得到状态码,此外还有history,url,cookies,headers等属性

import requests
r = requests.get("http://www.jianshu.com")
exit() if  r.status_code == requests.codes.ok else print("Request Successfully")

显示为Request Successfully

当然requests.codes有ok这个条件码,我们用这个条件码可以得到相应的状态码200,当然我们可不止这一个条件码,还有很多

原文地址:https://www.cnblogs.com/gausstu/p/9508903.html

时间: 2024-10-09 07:24:57

python3网络爬虫学习——使用requests(1)的相关文章

python3网络爬虫学习——基本库的使用(1)

最近入手学习Python3的网络爬虫开发方向,入手的教材是崔庆才的<python3网络爬虫开发实战>,作为温故所学的内容同时也是分享自己操作时的一些经验与困惑,所以开了这个日记,也算是监督自己去学习.在这一系列的日记中我也会随时加上一些书中没有的内容作为对所学知识的一个补充. (1)使用urllib库 在python3中,把python2的urllib和urllib2两个库合并了,同时作为了其内置的HTTP请求库,不需要额外安装,这个库包括四个模块 request:最基本的HTTP请求模块,可

Python3网络爬虫——三、Requests库的基本使用

一.什么是Requests Requests是用Python语言编写,基于urllib,采用Apache2 Licensed开元协议的HTTP库.它比urllib更加的方便,可以节约我们大量的工作完全满足HTTP测试需求.简单来讲,即Python实现的简单易用的HTTP库. 二.Requests库的安装 如果是初学者,建议使用原生Python3进行安装. 1 >> pip3 install requests 如果有一定的Python基础(会基本语法即可),使用anaconda进行安装更加方便,

python3网络爬虫学习——基本库的使用(2)

2.request 首先上实例 import urllib.request request = urllib.request.Request('https://python.org') response = urllib.request.urlopen(request) print(response.read().decode('utf-8')) 与之前一样生成了python官网的内容,但这次我们构造的是一个Request类,我们可以将请求独立成一个对象,也可以配置参数 class.urllib

python3网络爬虫学习——正则表达式

正则表达式是处理字符串的强大工具,有着自己的语法结构. 1.实例引入 可以使用开源中国的 http://tool.oschina.net/regex# 可以看到有许多匹配项,正则表达式匹配就是按照一定规则将特定的文本提取出来.比如电子邮件开头是一段字符串,然后是一个@符号,最后是某个域名,这是由特定的格式组成的.至于匹配的具体规则,可以参见这个博客https://www.jianshu.com/p/773c32dcd254     一些规则的汇总可以看这个博主https://www.cnblog

Python3网络爬虫(十):这个帅哥、肌肉男横行的世界(爬取帅哥图)

"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> Python3网络爬虫(十):这个帅哥.肌肉男横行的世界(爬取帅哥图) - Jack-Cui - 博客频道 - CSDN.NET Jack-Cui 努力-是为了将运气成分降到最低 目录视图 摘要视图 订阅 [活动]2017 CSDN博客专栏评选 &nbsp [5月书讯

Python3网络爬虫(八):爱奇艺等主流视频网站的VIP视频破解(在线观看+视频下载)

转载请注明作者和出处:http://blog.csdn.net/c406495762 运行平台: Windows Python版本: Python3.x IDE: Sublime text3 一.前言 没有会员,想在线观看或下载爱奇艺.PPTV.优酷.网易公开课.腾讯视频.搜狐视频.乐视.土豆.A站.B站等主流视频网站的VIP视频?又不想充会员怎么办?博主本次写的VIP视频破解助手也许可以帮你解决烦恼. 二.软件使用说明 1.软件下载 软件运行平台:Windows 注意:该软件已经打包成exe可

Python3网络爬虫(七):使用Beautiful Soup爬取小说

转载请注明作者和出处:http://blog.csdn.net/c406495762 运行平台: Windows Python版本: Python3.x IDE: Sublime text3 一.Beautiful Soup简介 简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据.官方解释如下: Beautiful Soup提供一些简单的.python式的函数用来处理导航.搜索.修改分析树等功能.它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简

python网络爬虫学习笔记

python网络爬虫学习笔记 By 钟桓 9月 4 2014 更新日期:9月 4 2014 文章目录 1. 介绍: 2. 从简单语句中开始: 3. 传送数据给服务器 4. HTTP头-描述数据的数据 5. 异常 5.0.1. URLError 5.0.2. HTTPError 5.0.3. 处理异常 5.0.4. info和geturl 6. Opener和Handler 7. Basic Authentication 8. 代理 9. Timeout 设置 10. Cookie 11. Deb

《Python3网络爬虫实战案例(崔庆才著)》 中文版PDF下载,附源代码+视频教程

<Python3网络爬虫实战案例(崔庆才著)>中文版PDF下载,附源代码+视频教程,带目录资料下载:https://pan.baidu.com/s/1OzxyHQMLOzWFMzjdQ8kEqQ 原文地址:http://blog.51cto.com/7369682/2330247