Python爬虫之二 学习Request

概述

这篇文章是接上篇:https://blog.youkuaiyun.com/GoSaint/article/details/100902655 。主要介绍另外一种请求方式。Request。由于urlopen()方法参数有限,并不能满足我们所有的需求,因此,Request就应用而生啦。

Request

import urllib.request


request=urllib.request.Request('https://python.org')
response=urllib.request.urlopen(request)
print(response.read().decode('UTF-8'))

上述代码使用了urlopen()方法,但是传递的参数不是url地址,而是request对象。请看class Request

"""
class Request:(url, data=None, headers={},
               origin_req_host=None, unverifiable=False,method=None):
"""
url请求的URL
databyte类型,一般需要解析,使用parse.urlencode编码
headers请求头,字典类型
origin_req_host
请求的host名称或者IP地址
unverifiable表示这个请求是否是无法验证的,默认是 False ,意思就是说用户没
有足够权限来选择接收这个请求的结果 例如,我们请求 HTML 文档中的图片,但是我
们没有向动抓取图像的权限,这时 unverifiable 的值就是 True
method请求类型POST GET PUT

请求示例程序:

import urllib.request
import urllib.parse

url='http://httpbin.org/post'
dict={'name':'Germy'}
headers={
    'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36',
    'Host':'httpbin.org'
}
data=bytes(urllib.parse.urlencode(dict),'UTF-8')
req=urllib.request.Request(url=url,data=data,headers=headers,method='POST')
response=urllib.request.urlopen(req)
print(response.read().decode('UTF-8'))

返回结果:

{
  "args": {}, 
  "data": "", 
  "files": {}, 
  "form": {
    "name": "Germy"
  }, 
  "headers": {
    "Accept-Encoding": "identity", 
    "Content-Length": "10", 
    "Content-Type": "application/x-www-form-urlencoded", 
    "Host": "httpbin.org", 
    "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"
  }, 
  "json": null, 
  "origin": "117.176.186.251, 117.176.186.251", 
  "url": "https://httpbin.org/post"
}
req=urllib.request.Request(url=url,data=data,method='POST')
req.add_header('User-Agent','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36')

也可以使用add_header来添加请求头。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值