基于Python模拟浏览器发送http请求


Posted in Python onNovember 06, 2020

1.使用 urllib2 实现

#! /usr/bin/env python
# -*- coding=utf-8 -*- 

import urllib2
url="https://www.baidu.com"
req_header = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11",
"Accept":"text/html;q=0.9,*/*;q=0.8",
"Accept-Charset":"ISO-8859-1,utf-8;q=0.7,*;q=0.3",
"Accept-Encoding":"gzip",
"Connection":"close",
"Referer":None #注意如果依然不能抓取的话,这里可以设置抓取网站的host
}
req_timeout = 5
req = urllib2.Request(url,None,req_header)
resp = urllib2.urlopen(req,None,req_timeout)
html = resp.read()
print(html)

2.使用 requests 模块

(1).get请求

#-*- coding:utf-8 -*-
import requests

url = "https://www.baidu.com"
payload = {"key1": "value1", "key2": "value2"}
r = requests.get(url, params=payload)
print r.text

(2).post请求

#-*- coding:utf-8 -*-
import requests
url1 = "http://www.exanple.com/login"#登陆地址
url2 = "http://www.example.com/main"#需要登陆才能访问的地址
data={"user":"user","password":"pass"}
headers = { "Accept":"text/html,application/xhtml+xml,application/xml;",
      "Accept-Encoding":"gzip",
      "Accept-Language":"zh-CN,zh;q=0.8",
      "Referer":"http://www.example.com/",
      "User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36"
      }
res1 = requests.post(url1, data=data, headers=headers)
res2 = requests.get(url2, cookies=res1.cookies, headers=headers)

print res2.content#获得二进制响应内容
print res2.raw#获得原始响应内容,需要stream=True
print res2.raw.read(50)
print type(res2.text)#返回解码成unicode的内容
print res2.url
print res2.history#追踪重定向
print res2.cookies
print res2.cookies["example_cookie_name"]
print res2.headers
print res2.headers["Content-Type"]
print res2.headers.get("content-type")
print res2.json#讲返回内容编码为json
print res2.encoding#返回内容编码
print res2.status_code#返回http状态码
print res2.raise_for_status()#返回错误状态码

(3).使用session对象的写法

#-*- coding:utf-8 -*-
import requests
s = requests.Session()
url1 = "http://www.exanple.com/login"#登陆地址
url2 = "http://www.example.com/main"#需要登陆才能访问的地址
data={"user":"user","password":"pass"}
headers = { "Accept":"text/html,application/xhtml+xml,application/xml;",
      "Accept-Encoding":"gzip",
      "Accept-Language":"zh-CN,zh;q=0.8",
      "Referer":"http://www.example.com/",
      "User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36"
      }

prepped1 = requests.Request("POST", url1,
  data=data,
  headers=headers
).prepare()
s.send(prepped1)


"""
也可以这样写
res = requests.Request("POST", url1,
data=data,
headers=headers
)
prepared = s.prepare_request(res)
# do something with prepped.body
# do something with prepped.headers
s.send(prepared)
"""

prepare2 = requests.Request("POST", url2,
  headers=headers
).prepare()
res2 = s.send(prepare2)

print res2.content


"""另一种写法"""
#-*- coding:utf-8 -*-
import requests
s = requests.Session()
url1 = "http://www.exanple.com/login"#登陆地址
url2 = "http://www.example.com/main"#需要登陆才能访问的页面地址
data={"user":"user","password":"pass"}
headers = { "Accept":"text/html,application/xhtml+xml,application/xml;",
      "Accept-Encoding":"gzip",
      "Accept-Language":"zh-CN,zh;q=0.8",
      "Referer":"http://www.example.com/",
      "User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36"
      }
res1 = s.post(url1, data=data)
res2 = s.post(url2)
print(resp2.content)

3.其他的一些请求方式

>>> r = requests.put("http://httpbin.org/put")
>>> r = requests.delete("http://httpbin.org/delete")
>>> r = requests.head("http://httpbin.org/get")
>>> r = requests.options(http://httpbin.org/get)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 流程控制实例代码
Sep 25 Python
Python爬虫框架Scrapy安装使用步骤
Apr 01 Python
python排序方法实例分析
Apr 30 Python
基于Python的接口测试框架实例
Nov 04 Python
python去除字符串中的换行符
Oct 11 Python
同时安装Python2 & Python3 cmd下版本自由选择的方法
Dec 09 Python
pandas DataFrame数据转为list的方法
Apr 11 Python
使用Python实现在Windows下安装Django
Oct 17 Python
详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法
Jul 06 Python
关于PyTorch 自动求导机制详解
Aug 18 Python
python 装饰器功能与用法案例详解
Mar 06 Python
python自动化调用百度api解决验证码
Apr 13 Python
python如何写个俄罗斯方块
Nov 06 #Python
基于Python实现全自动下载抖音视频
Nov 06 #Python
Python3读写ini配置文件的示例
Nov 06 #Python
Python Serial串口基本操作(收发数据)
Nov 06 #Python
python基于exchange函数发送邮件过程详解
Nov 06 #Python
Python Unittest原理及基本使用方法
Nov 06 #Python
python中的yield from语法快速学习
Nov 06 #Python
You might like
php header()函数使用说明
2008/07/10 PHP
PHP中文编码小技巧
2014/12/25 PHP
List the Codec Files on a Computer
2007/06/18 Javascript
javascript 多种搜索引擎集成的页面实现代码
2010/01/02 Javascript
JavaScript与DOM组合动态创建表格实例
2012/12/23 Javascript
不使用浏览器运行javascript代码的方法
2013/07/24 Javascript
js 判断计算字符串长度/判断空的简单方法
2013/08/05 Javascript
JS实现一键回顶功能示例代码
2013/10/28 Javascript
运行Node.js的IIS扩展iisnode安装配置笔记
2015/03/02 Javascript
javascript使用avalon绑定实现checkbox全选
2015/05/06 Javascript
vue-resource 拦截器使用详解
2017/02/21 Javascript
Angular.Js之Scope作用域的学习教程
2017/04/27 Javascript
JavaScript条件判断_动力节点Java学院整理
2017/06/26 Javascript
javascript+html5+css3自定义弹出窗口效果
2017/10/26 Javascript
使用Vuex实现一个笔记应用的方法
2018/03/13 Javascript
JS限制输入框输入的实现代码
2018/07/02 Javascript
微信小程序表单弹窗实例
2018/07/19 Javascript
JS 数组基本用法入门示例解析
2020/01/16 Javascript
基于原生js实现判断元素是否有指定class名
2020/07/11 Javascript
swiperjs实现导航与tab页的联动
2020/12/13 Javascript
Python实现的一个自动售饮料程序代码分享
2014/08/25 Python
Python Web框架Flask中使用七牛云存储实例
2015/02/08 Python
Python脚本处理空格的方法
2016/08/08 Python
python运行其他程序的实现方法
2017/07/14 Python
Python3网络爬虫之使用User Agent和代理IP隐藏身份
2017/11/23 Python
python实现定时提取实时日志程序
2018/06/22 Python
Python for循环与getitem的关系详解
2020/01/02 Python
Pytorch数据拼接与拆分操作实现图解
2020/04/30 Python
HTML5中form如何关闭自动完成功能的方法
2018/07/02 HTML / CSS
真正的英国宝藏:Mappin & Webb
2019/05/05 全球购物
《画杨桃》教学反思
2014/04/13 职场文书
优秀求职信
2014/05/29 职场文书
银行主办会计岗位职责
2014/08/13 职场文书
2014年村计划生育工作总结
2014/11/14 职场文书
2016简单的租房合同范本
2016/03/18 职场文书
关于保护环境的建议书
2019/06/24 职场文书