code学习

利用python爬虫(part4)--requests模块之requests.get方法

学习笔记

文章目录

  • ​​requests模块​​
  • ​​requests常用方法​​
  • ​​requests.get()​​

requests模块

  • 关于requests模块的安装

进入cmd,输入以下代码,即可安装:

pip install requests      

requests常用方法

requests.get()

  • 作用

向网站发起请求,并获取响应对象。

  • 语法
res = requests.get(url,headers=headers)
#url :需要抓取的URL地址
#headers : 请求头
#timeout : 超时时间,超过时间会抛出异常      
  • 响应对象(res)属性
# 响应字符编码
res.encoding
#res.encoding = 'utf-8'

# 字符串
res.text

#字节流
res.content 

#HTTP响应码
res.status_code 

#实际数据的URL地址
res.url      
  • 举个例子1

我们访问测试网站(http://httpbin.org/get).当我们访问这个网站时,网站会返回我们的请求头。

代码:

import requests
import random
from my_user_agent_list import user_agent

url = 'http://httpbin.org/get'

headers = {'User-Agent':random.choice(user_agent)}

#创建请求对象
res = requests.get(url, headers = headers)
#得到html字符串
html = res.text
print(html)      

备注:my_user_agent_list模块,是我自定义的模块。模块里放着一个列表user-agent, 列表里包含了各种User-Agent字符串。

控制台输出结果:

{
  "args": {}, 
  "headers": {
    "Accept": "*/*", 
    "Accept-Encoding": "gzip, deflate", 
    "Host": "httpbin.org", 
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1", 
    "X-Amzn-Trace-Id": "Root=1-5e867a3e-79e73bc2a78fb809260d2b4e"
  }, 
  "origin": "183.164.105.16", 
  "url": "http://httpbin.org/get"
}      

我们看到,测试网站返回给我们一个json格式的字符串。在这些字符串中我们可以观察到我们发送请求的请求头。

  • 举个例子2(指定响应编码)

在我们向一个网站发起请求时,如果不指定编码形式, 则requests会根据网站的响应,猜测网站的编码。

①不指定编码

代码:

import requests
import random
from my_user_agent_list import user_agent

url = 'http://www.baidu.com/'

headers = {'User-Agent':random.choice(user_agent)}

res = requests.get(url, headers = headers)
print('响应编码:', res.encoding)      

控制台输出结果:

响应编码: utf-8      

②指定编码

代码:

import requests
import random
from my_user_agent_list import user_agent

url = 'http://www.baidu.com/'

headers = {'User-Agent':random.choice(user_agent)}

res = requests.get(url, headers = headers)
res.encoding = 'gbk'
print('响应编码:', res.encoding)      

控制台输出结果:

响应编码: gbk      
  • 举个例子3(抓取北极兔图片)

对于非结构化数据(比如:音频,视频,图片),采用二进制的形式抓取。

我们在百度图片里搜索到要抓取的北极兔图片,并检查元素,获取图片地址:

利用python爬虫(part4)--requests模块之requests.get方法

代码:

import requests
import random
from my_user_agent_list import user_agent

url = 'http://b-ssl.duitang.com/uploads/item/201301/15/20130115235815_LQQVU.jpeg'
headers = {'User-Agent':random.choice(user_agent)}

html = requests.get(url, headers = headers).content

#将图片保存到本地
with open('test/北极兔.jpg', 'wb') as f:
    f.write(html)      

查看爬取到的图片:

利用python爬虫(part4)--requests模块之requests.get方法

OK!

  • 举个例子4(查看HTTP响应码和实际数据URL地址)

代码:

import requests
import random
from my_user_agent_list import user_agent

url = 'http://www.baidu.com/'
headers = {'User-Agent':random.choice(user_agent)}

res = requests.get(url, headers = headers)

print('HTTP响应码:', res.status_code)
print('URL地址:', res.url)      
HTTP响应码: 200
URL地址: https://www.baidu.com/