requests功能

requests功能

使用GET和POST发送请求

(1)使用requests发送get请求将百度搜索的页面源码爬回来,返回的是百度搜索页面的HTML源码。

>>> import requests  
>>> r = requests.get("https://www.baidu.com") #像百度发送请求并返回一个对象
>>> r = r.text #获取文本对象
>>> print(r) #打印结果

(2)用post的方法向httpbin.org这个网站发送请求并获得数据,返回的是json数据。什么是 json数据

>>> r = requests.post("http://httpbin.org/post",data={'key':'value'})
>>> r = r.text
>>> print(r)

通过URL传递参数

 URL不仅是一个网址,在访问URL的时候经常带上一些查询的字符串,这就是请求参数。request允许通过字典或者字符串来传参。
>>> import requests
>>> payload = {'key1' : 'value1' , 'key2' : 'value2'}
>>> r = requests.get('http://httpbin.org/get',params = payload)
>>> print(r.url)
# http://httpbin.org/get?key1=value1&key2=value2
>>> payload = {'key1' : 'value1' , 'key2' : ['value2','value3']}
>>> r = requests.get('http://httpbin.org/get',params = payload)
>>> print(r.url)
# http://httpbin.org/get?key1=value1&key2=value2&key2=value3

设置超时

 在请求的时候设置超时等待时间,可以避免等待太久。在请求的时候给参数timeout一个数值,单位是秒。如果请求超过这个值,就会断开并报错。
r = requests.get('http://baidu.com',timeout=0.001)
# requests.exceptions.ConnectTimeout: HTTPConnectionPool(host='baidu.com', port=80): Max retries exceeded with url: / (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x7fda950fcfd0>, 'Connection to baidu.com timed out. (connect timeout=0.001)'))

查看返回内容

打印response内容

>>> import requests  
>>> r = requests.get("https://www.baidu.com") #像百度发送请求并返回一个对象
>>> r = r.text #获取文本对象
>>> print(r) #打印结果

当发起一个请求的时候,requests会根据HTTP的headers进行编码

>>> r.encoding
# 'ISO-8859-1'
>>> r.encoding = 'utf-8'
>>> r.encoding
# 'utf-8'

设置请求头

  爬虫必须让自己看起来不像爬虫,因此爬虫需要伪装,设置请求头,可以让爬虫爬取的过程看起来是一个用户在使用浏览器浏览。
  HTTP消息头,以明文的字符串格式传送,是以冒号分隔的键/值对。
  HTTP消息头是客户端请求或服务器相应的时候传递的头部信息,内容包含了浏览器信息、请求数据类型等。发送请求的时候消息头称为请求头,服务器返回内容时的消息成为响应头。
>>> headers = {'user-agent':'Opera/9.80(Macintosh;Intel Mac OS X 10.6.8;U;fr)presto/2.0.168 version/11.52'}
>>> r = requests.get('http://baidu.com',headers = headers)
>>> r = r.text

更多复杂的POST请求

>>> payload = {'key1' : 'value1' , 'key2' : ['value2','value3']}
>>> r = requests.post('http://httpbin.org/post',params = payload)
>>> print(r.text)
# 返回的结果
”“”
{
  "args": {
    "key1": "value1", 
    "key2": [
      "value2", 
      "value3"
    ]
  }, 
  "data": "", 
  "files": {}, 
  "form": {}, 
  # 请求头
  "headers": {
    "Accept": "*/*", 
    # 解码方式
    "Accept-Encoding": "gzip, deflate", 
    #内容长度
    "Content-Length": "0", 
    # 主机域名
    "Host": "httpbin.org", 
    #请求UA
    "User-Agent": "python-requests/2.25.1", 
    "X-Amzn-Trace-Id": "Root=1-600c086f-60e8e1057f12c59549a6c263"
  }, 
  "json": null, 
  # 请求者 IP
  "origin": "120.228.161.240", 
  #请求URL
  "url": "http://httpbin.org/post?key1=value1&key2=value2&key2=value3"
}

“”“

返回对象状态码

>>> r = requests.get('http://httpbin.org/get')
>>> r.status_code
200

设置代理IP

如果爬虫是进行长时间的大量爬取,一定要给爬虫配上代理IP。

>>> import requests
>>> proxies = {'http':'http://10.10.1.10:3128','https':'http://10.10.1.10:1080'}
>>> requests.get('http://example.org',proxies=proxies)

如果代理需要用户密码认证

proxies = {'http':'http://user:pass@10.10.1.10:3128/'}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值