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()

python爬虫(三)------bs4库(一)------BeautifulSoup()和Tag对象的各种方法


版权声明:本文为m0_59389084原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>