python爬虫(二)——requests模块及其常用方法-get()、post()
python爬虫(一)------urllib模块及其常用方法
requests库
- 安装
pip intstall requests
- 可选参数(**kwargs)
参数名 | 解释 |
---|---|
data | 字典、元组列表、字节或文件类对象 |
json | 一个 JSON 可序列化 Python 对象 |
headers | 请求头 |
cookies | cookies信息 |
timeout | 定义请求超时的时间 |
proxies | 代理 URL 的字典映射协议 |
verify | 布尔值,是否验证服务器的 TLS 证书,默认为True |
allow_redirects | 是否允许重定向,默认为True |
auth | 用于启用基本/摘要/自定义 HTTP 身份验证的身份验证元组 |
files | 字典,用于多部分编码上传 |
stream | 如果是False,则将立即下载响应内容 |
cert | 如果是字符串,则为 ssl 客户端证书文件 (.pem) 的路径。如果是元组,则 (‘cert’, ‘key’) |
- 响应对象Response
参数名 | 解释 |
---|---|
encoding | 显示下面text属性时候采用的编码,常用的是utf-8 |
status_code | 响应的状态码,200表示成功 |
text | 响应的文本信息 |
content | 获取响应的二进制数据,常用在图片、视频 |
json() | 获取服务器返回的JSON编码的内容 |
url | 响应的最终url |
headers | 获取服务器返回的请求头信息 |
close() | 关闭链接 |
request | 响应的对象 |
cookies | 获取服务器返回的cookies信息 |
history | 请求历史记录中的对象列表 |
elapsed | 发送请求和响应到达之间经过的时间,专门测量从发送请求的第一个字节到完成对标头的解析所用的时间 |
is_permanent_redirect | 如果此响应是重定向的永久版本之一,则为真 |
is_redirect | 如果此响应是可以自动处理的格式正确的 HTTP 重定向,则为真 |
- get(url, params=None, **kwargs)
import requests
>>> import requests
>>> resp = requests.get('http://www.baidu.com')
>>> resp.status_code
200
>>> resp.encoding = 'utf-8'
>>> resp.text
'<!DOCTYPE html>\r\n<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=http://s1.bdstatic.com/r/www/cache/bdorz/baidu.min.css><title>百度一下,你就知道</title>......'
>>> resp.url
'http://www.baidu.com/'
>>> resp.headers
{'Cache-Control': 'private, no-cache, no-store, proxy-revalidate, no-transform', 'Connection': 'keep-alive', 'Content-Encoding': 'gzip', 'Content-Type': 'text/html', 'Date': 'Thu, 04 Aug 2022 01:36:15 GMT', 'Last-Modified': 'Mon, 23 Jan 2017 13:27:36 GMT', 'Pragma': 'no-cache', 'Server': 'bfe/1.0.8.18', 'Set-Cookie': 'BDORZ=27315; max-age=86400; domain=.baidu.com; path=/', 'Transfer-Encoding': 'chunked'}
>>> resp.request
<PreparedRequest [GET]>
>>> resp.cookies
<RequestsCookieJar[Cookie(version=0, name='BDORZ', value='27315', port=None, port_specified=False, domain='.baidu.com', domain_specified=True, domain_initial_dot=True, path='/', path_specified=True, secure=False, expires=1659663375, discard=False, comment=None, comment_url=None, rest={}, rfc2109=False)]>
#用户输入内容
query = input("请输入搜索的内容:")
#f:表示拼接字符串,把输入的内容拼接到{query}
url = f"https://www.sogou.com/web?query={query}"
headers = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.84 Safari/537.36"
}
#当参数比较长的时候
params = {
"type": "24",
"interval_id": "100:90",
"action": "",
"start": 0,
"limit": 20
}
#resp = requests.get(url,params=params,headers=headers)
#一般不需要加headers,参数verify = False:取消安全验证,在爬取某些网站时候时候可能会用到
resp = requests.get(url,headers=headers)
#设置响应的字符集
resp.encoding = 'utf-8/gbk...'
#输入相应内容,resp.json():JSON字符串,resp.content:二进制内容
print(resp.text)
#关闭请求
resp.close()
>>> cookies = dict(cookies_are='lk')
>>> resp = requests.get('http://httpbin.org/cookies', cookies=cookies)
>>> resp.text
'{"cookies": {"cookies_are": "lk"}}'
- post(url, data=None, json=None, **kwargs)
url = "https://fanyi.baidu.com/sug"
i = input("请输入搜索的内容:")
#配置传递的参数,发送的数据必须在data中
data = {
"kw": i
}
resp = requests.post(url, data=data, timeout = 30)
#直接输出JSON字符串
print(resp.json())
#关闭请求
resp.close()
版权声明:本文为m0_59389084原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。