在这篇关于请求的文章教程中,我将向您解释请求模块的所有基础知识以及如何使用Python发送HTTP/1.1请求。在本博客结束时,您将能够使用Python执行web抓取。我将在本文中讨论以下主题:什么是
在这篇关于请求的文章教程中,我将向您解释请求模块的所有基础知识以及如何使用Python发送HTTP/1.1请求。在本博客结束时,您将能够使用Python执行web抓取。我将在本文中讨论以下主题:
什么是请求模块?安装请求模块生成GET请求下载图像,请求发送POST请求发送Cookies和Headers会话对象结论
让我们首先检查请求模块实际是什么。
什么是请求模块来开始这个“请求教程”博客
“请求是一个Python模块,可以用来发送各种HTTP请求。它是一个易于使用的库,具有许多特性,从在url中传递参数到发送自定义头和SSL验证。在本教程中,您将学习如何使用此库在Python中发送简单的HTTP请求。
请求允许您发送HTTP/1.1请求。您可以使用简单的Python字典添加头、表单数据、多部分文件和参数,并以相同的方式访问响应数据。
安装请求模块
以安装请求,只需:
$pip install Requests
或,如果必须这样做:
$easy_install requests Making a GET Request
,则使用请求发送HTTP请求相当简单。首先导入模块,然后发出请求。查看示例:
导入请求所以,所有的信息都存储在某个地方,对吗?是的,它存储在一个称为req的响应对象中。比方说,你想要一个网页的编码,这样你就可以验证它或者在其他地方使用它。这可以使用req.encoding属性来完成。另外一个好处是,您还可以提取许多特性,例如(请求的)状态代码。这可以使用req.status_code属性来完成。需求编码#返回“utf-8”需求状态代码返回200导入请求req.encoding返回“utf-8”req.elapsed#返回datetime.timedelta(0,1,666890)req.url返回“https://edureka.co/”需求历史记录#返回[;,;]请求头['Content-Type']#返回“text/html;charset=utf-8”导入请求请求提升状态()以open('Forest.jpg','wb')作为fd:对于chunk in需求内容(块大小=50000):fd.write(块)
注意'path/to/forest.jpg'是实际的图像URL。你可以把任何其他图片的网址放在这里下载其他东西。这只是一个示例,给定的图像文件大小约为185kb,您已将chunk_size设置为50000字节。
这意味着“接收到一个chunk”消息应在终端中打印四次。最后一个块的大小将仅为39350字节,因为在前三次迭代后仍要接收的文件部分是39350字节。
请求还允许您在URL中传递参数。当您在网页中搜索某些结果(如教程或特定图像)时,这尤其有用。可以使用GET请求中的params关键字将这些查询字符串作为字符串字典提供。看看这个简单的例子:
导入请求query={'q':'Forest','order':'popular','min戋width':'800','min戋height':'600'}需求=请求.get('https://pixabay.com/en/photos/照片/,params=查询)请求url#返回“https://pixabay.com/en/photos/?订单=流行的最小高度=600&q=森林最小宽度=800'
接下来在这个“请求教程”博客中,让我们看看如何才能发出POST请求
“发出POST请求”
“发出POST请求”和发出GET请求一样简单。只需使用post()函数而不是get()。
这在自动提交表单时非常有用。例如,下面的代码将下载整个关于纳米技术的维基百科页面,并将其保存在您的PC上。
req=requests.post('https://en.wikipedia.org/w/index.php',data={'search':'Nanotechnology'})以open('Nanotechnology.html','wb')作为fd:对于req.iter_content中的chunk(chunk_size=50000):fd.write(块)导入请求url='http://some-domain.com/set/cookies/headers'headers={'user-agent':'您自己的用户代理/0.0.1分'}cookies={'访问月':'二月'}需求=请求.get(url,headers=headers,cookies=cookies)
Cookies也可以在Cookie Jar中传递。它们提供了一个更完整的接口,允许您在多个路径上使用这些cookie。
请查看下面的示例:
罐子=requests.cookies.RequestsCookieJar请求()jar.set('second_cookie','second',domain='httpbin.org',path='/extra')jar.set('third_cookie','third',domain='httpbin.org',path='/cookies')url='http://httpbin.org/cookies'req=requests.get(url,cookies=jar)需求文本#返回{“cookies”:{“first_cookie”:“first”,“third_cookie”:“third”}”导入请求ssn=requests.Session()要求=ssn.获取('http://httpbin.org/cookies')打印(要求文本)reqTwo=ssn.get('http://httpbin.org/cookies',cookies={'visit-year':'2017'})#打印有关“访问月”和“访问年”cookie的信息reqThree=ssn.get('http://httpbin.org/cookies')打印(要求文本)#打印有关“访问月”cookie的信息