爬虫|requests

初级打开

import requests

response = requests.get("http://www.baidu.com/")
print(response.status_code)         # 返回的状态码
print(response.text)                # 返回的网页
print(response.content)             # 返回的二进制,图片,视频使用
print(response.json())              # 返回的json格式
print(response.cookies)             # 返回的cookies
print(response.headers)             # 返回响应的头信息
print(response.history)             # 可以看出是否重定向
print(response.url)                 # 请求的url
print(response.apparent_encoding)   # 网页的编码格式
print(response.encoding)            # 根据HTTP猜测网页的编码格式

乱码问题

不同网页有自己的编码格式如utf-8,gbk,gb2312,所以有时候我们得到的网页是乱码,下面我们将解决一下乱码问题

# 设置文本编码防止出现乱码,3种方式

response.encoding = 'UTF-8'                      # 这种我们需要知道网页的编码才可以设置
response.encoding = response.apparent_encoding   # 自动根据网页的编码设置

# 最后一种办法,使用chardet探测编码,完了进行赋值,
# detect返回字典,encoding编码形式,confidence是检查精度
import chardet
print(chardet.detect(response.content))
response.encoding = chardet.detect(response.content)['encoding']

响应码的判断是否成功

# 响应码code,如果正常执行,否则抛出响应码异常
if response.status_code == requests.codes.ok:
    print(response.text)
else:
    response.raise_for_status()

get请求

import requests

"""
get方式
params 传递的参数会在url的后面,跟在问号后面,以百度为例,以字典的方式传入,会对其进行编码,如下
params = {
    'ie': 'UTF-8',
    'wd': '百度'
}
https://www.baidu.com/s?ie=UTF-8&wd=%E7%99%BE%E5%BA%A6

headers 添加请求信息如User-Agent等信息,格式如下
headers ={
    'User-Agent':“ ”
}

timeout 超时抛出异常

cookies 因为HTTP是无状态访问,为了让服务器认识我们,需要添加cookies,以字典的方式传参

allow_redirects = True   允许重定向,设置False 禁止重定向,默认允许

# proxies 是ip
proxies = {
    'https': 'https://ip+端口',
    'http':'http://ip+端口'
}
"""
response = requests.get(url='https://www.baidu.com/', params=params,headers='',
                        cookies='',allow_redirects=True,proxies)
print(response.url)  # https://www.baidu.com/?ie=UTF-8&wd=%E7%99%BE%E5%BA%A6

post请求

"""post 是向服务器提交数据的请求"""
# data是提交的数据,其他的参数和get一样
# files 上穿文件
files = {'字段名称': open('地址' 'rb')}
data ={}
response= requests.post(url='',headers='',data='',proxies=proxies)

cookie


from requests.cookies import RequestsCookieJar
jar = RequestsCookieJar()
cookies = cookies.items()
for key, values in cookies:
    jar.set(key, values)
response = requests.get(url, cookies=jar)

会话session

session会自己处理cookie,不需要我们管


import requests
requests = requests.Session()

response = requests.get()
html = response.text

异常

requests.exceptions里面包含许多异常模块

"""
 HTTPError  		  # 返回的状态吗不是成功的引起异常

 ConnectionError      # 网络连接错误,如没有网,拒绝链接

 URLRequired   		  # url缺失
 
 TooManyRedirects     # 超过了最大重定向次数

 ConnectTimeout       # 连接服务器超时异常
 使用方法如下:
"""
from requests.exceptions import HTTPError
try:
    response = requests.get()
except HTTPError as e:
    print(e.code)
    print(e.reason)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值