美文网首页
python爬虫库之Requests

python爬虫库之Requests

作者: SunY7 | 来源:发表于2023-06-20 15:34 被阅读0次

虽然Python的标准库中 urllib2 模块已经包含了平常我们使用的大多数功能,但是它的 API 使用起来让人感觉不太好,而 Requests 自称 “HTTP for Humans”,说明使用更简洁方便。所以今天我们来重点了解下这个库。


QQ图片20230621153040.png

Requests是唯一的一个非转基因的 Python HTTP 库,Requests 继承了urllib2的所有特性。Requests支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动确定响应内容的编码,支持国际化的 URL 和 POST 数据自动编码。

Requests的一些基本使用方式

如果添加 headers 和查询参数,可以利用 params 参数。
import requests

kw = {'wd':'长城'}

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

params 接收一个字典或者字符串的查询参数,字典类型自动转换为url编码,不需要urlencode()

response = requests.get("http://www.baidu.com/s?", params = kw, headers = headers)

查看响应内容,response.text 返回的是Unicode格式的数据

print response.text

查看响应内容,response.content返回的字节流数据

print respones.content

查看完整url地址

print response.url

查看响应头部字符编码

print response.encoding

查看响应码

print response.status_code
所有可以爬取的网站都有请求的临界点,当我们对一个网站发起多次请求时,网站发现请求次数超过了临界点,就会自动屏蔽掉我们的IP,这是目标网站的基础反爬策略,对于这种情况,解决方案也其实很简单:只需在请求时通过设置代理IP的方式,就可以解决。那 Requests库里面是如何设置代理IP并访问网站的呢?
#! -- encoding:utf-8 --

import requests
import random

# 要访问的目标页面
targetUrl = "http://httpbin.org/ip"

# 要访问的目标HTTPS页面
# targetUrl = "https://httpbin.org/ip"

# 代理服务器(产品官网 www.16yun.cn)
proxyHost = "t.16yun.cn"
proxyPort = "31111"

# 代理验证信息
proxyUser = "username"
proxyPass = "password"

proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % {
    "host" : proxyHost,
    "port" : proxyPort,
    "user" : proxyUser,
    "pass" : proxyPass,
}

# 设置 http和https访问都是用HTTP代理
proxies = {
    "http"  : proxyMeta,
    "https" : proxyMeta,
}


#  设置IP切换头
tunnel = random.randint(1,10000)
headers = {"Proxy-Tunnel": str(tunnel)}



resp = requests.get(targetUrl, proxies=proxies, headers=headers)

print resp.status_code
print resp.text

相关文章

网友评论

      本文标题:python爬虫库之Requests

      本文链接:https://www.haomeiwen.com/subject/axgyydtx.html