【Python爬虫】requests库get和post方法使用

这篇具有很好参考价值的文章主要介绍了【Python爬虫】requests库get和post方法使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

requests库是一个常用于http请求的模块,性质是和urllib,urllib2是一样的,作用就是向指定目标网站的后台服务器发起请求,并接收服务器返回的响应内容。

1. 安装requests库

  • 使用pip install requests安装
    如果再使用pip安装python模块出现timeout超时异常,可使用国内豆瓣源进行安装。
pip install  requests -i https://pypi.douban.com/simple
  • 手动下载安装包安装
    同样的,某些库安装出现异常便可采取这种逛淘宝的操作方式。不过,当你在选择的时候一定要注意实际项目所需求的python库的版本,以免后期出现问题。
    网站:https://pypi.org

2.requests.get()方法使用

所谓的get方法,便是利用程序使用HTTP协议中的GET请求方式对目标网站发起请求,同样的还有POST,PUT等请求方式,其中GET是我们最常用的,通过这个方法我们可以了解到一个请求发起到接收响应的过程。(HTTP常见请求方式:http://www.runoob.com/http/http-methods.html)
实现方式:

import requests

start_url = 'https://www.baidu.com'
response = requests.get(url=start_url)
print(response)    # 返回值:<Response [200]>

这是一个最简单实现请求的方式,最后返回一个响应对象,响应对象中携带的数值便是HTTP状态码,你可以根据这些状态码的值来判定请求的成功以及推测失败的原因。(HTTP状态码:http://www.runoob.com/http/http-status-codes.html)
这并不是一个完整的请求,因为服务器在接收到你的程序的请求信息时,它可以明确的从Request headers中看到你是在用程序发起请求接收响应,为了完善我们的请求,可以自定义请求头信息,利用get()方法的headers参数。
我们可以从浏览器的F12开发者工具中Network下找到请求网址的headers信息,保存下来作为我们自定义参数。如:

import requests
# 目标url
start_url = 'https://www.baidu.com'
# 自定义headers
headers = {"Host": "www.baidu.com",
           "Referer": "https://www.baidu.com",
           "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36",
           "X-Requested-With": "XMLHttpRequest"
           }

response = requests.get(url=start_url, headers=headers)
print(response)    # 返回值:<Response [200]>

不同的网站对于请求头中的字段信息有着不同的要求,某些关键字段需要在html源码中去寻找,然后自己组织定义到headers中完成请求。
对于一些特定的网站会对某一时间段内你所在ip的请求次数坐监测,从而判断此请求是否为非人类发出的,get()方法同样为我们提供了在请求时更换ip的操作方式,只需要像自定义headers一样定义我们的可用ip即可,如下:

import requests

start_url = 'https://www.baidu.com'

headers = {"Host": "www.baidu.com",
           "Referer": "https://www.baidu.com",
           "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36",
           "X-Requested-With": "XMLHttpRequest"
           }
# 自定义代理ip,此处的ip需要自行更换,只需要将ip和port按格式拼接即可,可以去网上免费代理中寻找:http://www.xicidaili.com/nn
proxies = {"https": "https://127.0.0.1:1080", "http": "http://127.0.0.1:1080"}

response = requests.get(url=start_url, headers=headers, proxies=proxies)

print(response)   # 返回值:<Response [200]>

除此之外get还有很多请求参数,如timeout你可以设置请求时间,如果超过这个时间变自行结束请求,可以利用此判断请求代理的相应效率,避免在某些错误请求上浪费过多的时间。

3.requests.post()方法使用—构造formdata表单

post请求方式的使用和get方式并没有很大的区别,本质的区别在于它传递参数的方式并不像get方式一样,通过在url中拼接字段来发送给服务器,他采取了一种相较之下更为安全的操作方式,通过form表单的方式来向服务器传递查询条件。我们同样可以通过浏览器的F12开发者工具或者fiddler抓包工具来看到formdata这个字段,从中获取form表单中的字段信息,很多登录操作就是基于此。操作方式如下:

import requests

url = 'https://en.artprecium.com/catalogue/vente_309_more-than-unique-multiples-estampes/resultat'

headers = {
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
    "Accept-Language": "zh",
    "Cache-Control": "max-age=0",
    "Connection": "keep-alive",
    "Cookie": "PHPSESSID=m2hbrvp548cg6v4ssp0l35kcj7; _ga=GA1.2.2052701472.1532920469; _gid=GA1.2.1351314954.1532920469; __atuvc=3%7C31; __atuvs=5b5e9a0418f6420c001",
    "Host": "en.artprecium.com",
    "Upgrade-Insecure-Requests": "1",
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36",
}
# 构造form表单
data = {"IdEpoque": "",
        "MotCle": "",
        "Order": "",
        "LotParPage": "All",
        "IdTypologie": ""}

response = requests.post(url=url, data=data, headers=headers, timeout=10)

print(response)   # 返回值:<Response [200]>

上面是一个电商网站的post请求查询的案例,当我们对页面显示商品数量进行更改时发现我们的url并没有发生改变,此时,我们便可以分析此动作是由ajax异步加载或者是通过post的请求方式来更改,我们可以通过开发者工具来获取我们想要的信息。

目标网址测试

图片描述

我们可以很容易的看到请求头信息和form表单信息,通过修改LotParPage字段信息可以获得不同数量商品的响应,在实际操作过程中要通过自己的测试确定headers中所必需的字段和自定义我们的form表单从而完成请求,对于post的其他参数和get大致相同,基本通用,有兴趣的话可以去官方查看requests的api文档。

4.requests.post()方法使用—发送json数据

post除了构造表单以外还可以像通过像服务器发送json信息的方式获取正确的请求,利用的便是中post(json={“key”:“value”})的方式,操作流程大致与post发送form表单相似,案例是一个国外网站的demo,虽然全是一些看不懂的文字,但是无伤大雅,看个流程就好,目标网址:http://anticvarium.ru/auction/archive
从这个页面中我们可以得到一个专场列表页,每个专场中有许多商品,当我们直接去请求每个专场的URL时不会得到任何结果,我们可以从开发者工具中找到他的真实接口,如下图所示
图片描述
我们在看它像服务器传递的信息:
图片描述
通过以上的分析,我们可以文章来源地址https://www.toymoban.com/news/detail-836696.html

url = 'http://anticvarium.ru/angular'

headers = {
    "Host": "anticvarium.ru",
    "Connection": "keep-alive",
    "Content-Length": "14",
    "Origin": "http://anticvarium.ru",
    "X-CSRF-TOKEN": "u1InfvhE23slcmReIJlgvI7IGzb3xQEvXHQbP3Bc",
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36",
    "Content-Type": "application/json;charset=UTF-8",
    "Accept": "application/json, text/plain, */*",
    "X-Requested-With": "XMLHttpRequest",
    "Referer": "http://anticvarium.ru/auction/show/66",
    "Accept-Language": "zh",
    "Cookie": "_ga=GA1.2.819821684.1533003173; _gid=GA1.2.258681840.1533003173; _ym_uid=1533003182951117996; _ym_d=1533003182; _ym_isad=2; _ym_visorc_35976415=w; tmr_detect=0%7C1533004777867; laravel_session=eyJpdiI6InZNSTlWSlYyUW1BaitUWTNBSjJKckE9PSIsInZhbHVlIjoibWprTDFxeTZZc0lOS2VTcmxIdzZJSkwwTVFXOHphN2FwTysxbXNHSDkybXE0VUZYakpTUlZ5Ykh6U2pFTTVJTWdWUHBUaVJwVGl1Q3RlTjdRQUhKNEE9PSIsIm1hYyI6IjQ5NmIwMGYxNDllZDFiNTY2ZmFjYWY5NjEyOTQ4MTZjYzQzNmFiY2EyMzFiOTY1Mzg3ODUyZTllN2U0MTQwYTEifQ%3D%3D",
}

response = requests.post(url, headers=headers, json={"auction": 66})
print(response)    # 返回值:<Response [200]>

到了这里,关于【Python爬虫】requests库get和post方法使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 爬虫(Requests库get和post应用)

    Requests是Python中用于进行 HTTPS 请求的库。它提供了一种简单直观的API,用于发送 HTTP,HTTPS 请求和处理响应。 参数 url,一般放置需要请求的URL headers,一般用于User-agent(UA)伪装,避免服务器识别出机器请求,headers的获取方法可以为浏览器单击右键选择 检查 ,随后点击 网络

    2024年02月10日
    浏览(35)
  • Python 爬虫的学习 day01 ,爬虫的基本知识, requests 和 charde模块, get函数的使用

    1.1什么是网络爬虫 网络爬虫,又称为网页蜘蛛,网络机器人,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本,另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。 1.2  网络爬虫的特点 网络爬虫是一个自动提取网页的程序,它为搜索引擎从万

    2024年02月15日
    浏览(23)
  • 使用Flask.Request的方法和属性,获取get和post请求参数(二)

    在Python发送Post、Get等请求时,我们使用到requests库。Flask中有一个request库,有其特有的一些方法和属性,注意跟requests不是同一个。 用于服务端获取客户端请求数据。注意:是未经任何处理的原始数据而不管内容类型,如果数据时json的,则取得是json字符串,排序和请求参数

    2024年02月13日
    浏览(34)
  • Python爬虫——requests_get请求

    总结: 参数使用params传递 参数无需重新编码 不需要请求对象定制 请求资源路径中的?可加也可不加

    2024年02月13日
    浏览(35)
  • Python | 爬虫的request.post如何传递json参数

    例如: 这里通过json参数传递了一个字典类型的data数据,在请求头中设置Content-Type为application/json。requests会自动将json参数转化为合法的JSON格式,并且将其作为请求体提交给服务器。注意,这里的json参数是requests库中的内置参数之一,表示将请求体数据序列化为JSON格式。 在服

    2024年02月11日
    浏览(31)
  • Python使用POST方法发送HTTP请求的15个示例(基于requests)

    以下是使用 requests 库调用HTTP接口进行POST请求的15个示例: 发送简单的POST请求: 发送JSON格式的POST请求: 发送XML格式的POST请求: 发送文件的POST请求:

    2024年02月10日
    浏览(32)
  • Python Requests库的POST方法

    Python Requests库的POST方法 随着互联网技术的发展,网络爬虫在各行各业的应用中扮演着重要的角色。而Python中的Requests库,作为一款强大的HTTP请求库,在网络爬虫中有着广泛的应用。其中,POST方法具有提交数据的功能,能够模拟浏览器发送数据到指定的URL地址。 使用Python的

    2024年02月16日
    浏览(56)
  • Python爬虫的学习day02 requests 模块post 函数, lmxl 模块的 etree 模块

    1.1 post 函数的参数 (简单版) 参数1:  url     网络地址 参数2:   data   请求数据 (一般数据是  账号,密码) 参数3:    headers  头请求  (User-Agent:  第一章讲过) 1.2  post 请求中 url 参数的获取 1.2.1 首先 打开一个 登录界面 。(这里以淘宝的登录界面为样例)

    2024年02月14日
    浏览(25)
  • python3 爬虫相关学习3:response= requests.get(url)的各种属性

    目录 1  requests.get(url) 的各种属性,也就是response的各种属性 2 下面进行测试 2.1 response.text 1.2  response.content.decode() 1.2.1 response.content.decode() 或者  response.content.decode(\\\"utf-8\\\") 1.2.2   response.content.decode(\\\"GBK\\\") 报错 1.2.3 关于编码知识 1.3 response.url  1.4 response.status_code 插入知识:

    2024年02月03日
    浏览(26)
  • uni-app封装request请求及get、post、put等方法

    直接上代码 request.js文件 export default {   common: {     baseUrl: \\\"http://172.20.4.212:3000/api\\\",     data: {},     header: {       \\\"Content-Type\\\": \\\"application/json\\\",       \\\"Content-Type\\\": \\\"application/x-www-form-urlencoded\\\"     },     method: \\\"GET\\\",     dataType: \\\"json\\\"   },   request (options = {}) {     uni.showLoading({  

    2024年02月09日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包