您的位置:首页 > 编程语言 > Python开发

Python爬虫学习之路(3) --requests库

2019-04-02 20:32 232 查看

本来一开始是学习的urllib这个库,但后来学requests后发现后者不仅更加简单,功能也更加强大,所以这里只做requests的笔记。

Requests 库

准备工作:

在pycharm中安装requests库。使用pycharm后发现添加库异常简单。只需要以下几个步骤:File—Settings—Project:(你创建文件的名字)—Project Interpreter–点击右侧的+号就能搜索添加了。
这里记录当时自己遇到的几个问题:(1)建立的项目名和文件名不能与库名重复,否则会报错。(2)注意选择Project Interpreter中上方的Projict Interpreter中的选项。因为我每次新建立一个项目都会出现一个新的Interpreter,并且太多也会报错,要及时把没用的删除。

基本用法

  1. get方式请求
import requests
r = requests.get(' https://baidu.com/')  #输入要请求的网址
print(type(r))   #r的类型<class 'str'>
print(r.status_code)   #状态码
print(r.text)   #网页的文本
print(r.cookie) #cookie

这里推荐一个可以练习爬虫的好网站`:http://httpbin.org

下面写出get较为综合的代码,具体功能见注释:

import requests
#请求头的‘User-Agent’,功能在上节有记录,随便打开一个网页的Request Headers
中都有,每台电脑应该不一样,这个在爬取的时候很重要,很重要,很重要.
当然,这里也可以以字典的形式加入Cookie,Host等原有请求头内容。

headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/527.36 (KHTML, like Gecko) /71.0.3568.98 Safari/537.36'
}

#数据,以字典形式存放,如果换成url的话,是等价于这样的:
http://httpbin.org/get?name=gulaiyue&age=22'

data ={
'name' :'gulaiyue',
'age':'22
}

#代理设置
proxies={
"http":"http://XXXXXXX",
"https":"http://XXXXXXX"
}

#超时设置
timeout = 1  #秒
r=requests.get('http://httpbin.org/get",params=data,headers=headers,proxies=proxies,timeout = timeout)
print(r.text) #这里注意如果type(r.text)为str类型的话,需要print(r.json()),
这样会返回一个字典类型。

这里推荐一个搜代理的网站西刺免费代理IP,有的不管用,可以多试几个。

r.text 如果输出是乱码的话,可以试一下r.content.decode(‘utf-8’).

2.Post 方式请求
这个比较简单(我目前觉得),直接上代码。

import requests
data = {'name' : 'germay' ,'age': '22'}
r= requests.post("http://httpbin.org/post",data=data)
print(r.text)

自己试一下,结果会出现在"form"中。

进阶使用

1.Session 会话维持
大体意思就是如果你登陆了一个界面,下一次登陆时浏览器可能会保留你的Cookie值,而想用爬虫做到这一点,用get()是不行的。所以改用Session.

import requests
s=requests.Session()
s.get('http://httpbin.org/cookies/set/number/12345')
r = s.get('http://httpbin.org/cookies')
print(r.text)
#会发现原有的cookie保留了下来
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: