专栏首页程序员同行者python3模块: requests

python3模块: requests

Python标准库中提供了:urllib等模块以供Http请求,但是,它的 API 太渣了。它是为另一个时代、另一个互联网所创建的。它需要巨量的工作,甚至包括各种方法覆盖,来完成最简单的任务。

  发送GET请求

import urllib.request
 
f = urllib.request.urlopen('http://www.webxml.com.cn//webservices/qqOnlineWebService.asmx/qqCheckOnline?qqCode=424662508')
result = f.read().decode('utf-8')

发送携带请求头的GET请求

import urllib.request
 
req = urllib.request.Request('http://www.example.com/')
req.add_header('Referer', 'http://www.python.org/')
r = urllib.request.urlopen(req)
 
result = f.read().decode('utf-8')

更多内容点击查看官方文档

  Requests 是使用 Apache2 Licensed 许可证的 基于Python开发的HTTP 库,其在Python内置模块的基础上进行了高度的封装,从而使得Pythoner进行网络请求时,变得美好了许多,使用Requests可以轻而易举的完成浏览器可有的任何操作。

  1. 安装模块
pip3 install requests
  1. 使用模块

  GET请求

# 1、无参数实例
  
import requests
  
ret = requests.get('https://github.com/timeline.json')
  
print(ret.url)
print(ret.text)
  
  
  
# 2、有参数实例
  
import requests
  
payload = {'key1': 'value1', 'key2': 'value2'}
ret = requests.get("http://httpbin.org/get", params=payload)
  
print(ret.url)
print(ret.text)

  POST请求

# 1、基本POST实例
  
import requests
  
payload = {'key1': 'value1', 'key2': 'value2'}
ret = requests.post("http://httpbin.org/post", data=payload)
  
print(ret.text)
  
  
# 2、发送请求头和数据实例
  
import requests
import json
  
url = 'https://api.github.com/some/endpoint'
payload = {'some': 'data'}
headers = {'content-type': 'application/json'}
  
ret = requests.post(url, data=json.dumps(payload), headers=headers)
  
print(ret.text)
print(ret.cookies)

  其他请求

requests.get(url, params=None, **kwargs)
requests.post(url, data=None, json=None, **kwargs)
requests.put(url, data=None, **kwargs)
requests.head(url, **kwargs)
requests.delete(url, **kwargs)
requests.patch(url, data=None, **kwargs)
requests.options(url, **kwargs)
  
# 以上方法均是在此方法的基础上构建
requests.request(method, url, **kwargs)

更多requests模块相关文档点击查看

  1. Http请求和XML实例

实例:检测QQ账号是否在线

import urllib
import requests
from xml.etree import ElementTree as ET
 
# 使用内置模块urllib发送HTTP请求,或者XML格式内容
"""
f = urllib.request.urlopen('http://www.webxml.com.cn//webservices/qqOnlineWebService.asmx/qqCheckOnline?qqCode=424662508')
result = f.read().decode('utf-8')
"""
 
 
# 使用第三方模块requests发送HTTP请求,或者XML格式内容
r = requests.get('http://www.webxml.com.cn//webservices/qqOnlineWebService.asmx/qqCheckOnline?qqCode=424662508')
result = r.text
 
# 解析XML格式内容
node = ET.XML(result)
 
# 获取内容
if node.text == "Y":
    print("在线")
else:
    print("离线")

实例:查看火车停靠信息

import urllib
import requests
from xml.etree import ElementTree as ET
 
# 使用内置模块urllib发送HTTP请求,或者XML格式内容
"""
f = urllib.request.urlopen('http://www.webxml.com.cn/WebServices/TrainTimeWebService.asmx/getDetailInfoByTrainCode?TrainCode=G666&UserID=')
result = f.read().decode('utf-8')
"""
 
# 使用第三方模块requests发送HTTP请求,或者XML格式内容
r = requests.get('http://www.webxml.com.cn/WebServices/TrainTimeWebService.asmx/getDetailInfoByTrainCode?TrainCode=G666&UserID=')
result = r.text
 
# 解析XML格式内容
root = ET.XML(result)
for node in root.iter('TrainDetailInfo'):
    print(node.find('TrainStation').text,node.find('StartTime').text,node.tag,node.attrib)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • hadoop分布式集群搭建

    程序员同行者
  • 怎么把U盘启动改为硬盘启动(适用于U盘安装系统时)

    程序员同行者
  • django rest framework通用view

    官方文档:http://www.django-rest-framework.org/ drf为我们提供强大的通用view的功能,本博客对这些view进行简要的...

    程序员同行者
  • 【MOOC】Python网络爬虫与信息提取

    Python网络爬虫与信息提取-北京理工大学-嵩天 发布大学:北京理工大学 发布课程:Python网络爬虫与信息提取 授课老师:嵩天 课程简介:“The web...

    一点儿也不潇洒
  • 使用python访问网页

    抓取csdn页面中文章的链接: xpath语法可以看这篇文章: http://www.w3school.com.cn/xpath/xpath_synta...

    py3study
  • 简单爬虫

    理解Response异常 r.raise_for_status()如果不是200,产生异常requests.HTTPError异常

    Cloud-Cloudys
  • Python报错: No module named 'requests'

    运行.py的文件的时候,有时候会遇到这样的报错。不要慌,如果你掌握了面向百度编程的话,能够解决百分之90的bug,专治各种疑难杂症。

    祈澈菇凉
  • 使用Disruptor完成多线程下并发、等待、先后等操作

    场景1:一个线程等待其他多个线程都完成后,再进行下一步操作(如裁判员计分功能,需要等待所有运动员都跑完后,才去统计分数。裁判员和每个运动员都是一个线程)。

    天涯泪小武
  • 渗透测试之Nmap命令(四) 使用诱饵

      Nmap的诱饵使用是一个非常有趣的概念。我们利用Nmap增加发起扫描的主机,你不会从这些诱饵的主机中获得任何信息,但是却增加了查找真正发起扫描主机的难度,或...

    HACK学习
  • 经典的图像匹配算法----SIFT

    一. SIFT简介 1.1 算法提出的背景: 成像匹配的核心问题是将同一目标在不同时间、不同分辨率、不同光照、不同位姿情况下所成的像相对应。传统的匹配算法往往是...

    智能算法

扫码关注云+社区

领取腾讯云代金券