基于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使用Socket(Https)Post登录百度的实现代码
May 18 Python
python基础教程之udp端口扫描
Feb 10 Python
Python使用pyh生成HTML文档的方法示例
Mar 10 Python
opencv实现图片模糊和锐化操作
Nov 19 Python
python实现停车管理系统
Nov 30 Python
python启动应用程序和终止应用程序的方法
Jun 28 Python
使用python 写一个静态服务(实战)
Jun 28 Python
python中eval与int的区别浅析
Aug 11 Python
简单了解Django ORM常用字段类型及参数配置
Jan 07 Python
Python基于staticmethod装饰器标示静态方法
Oct 17 Python
python实现马丁策略的实例详解
Jan 15 Python
python 如何在测试中使用 Mock
Mar 01 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
easyui的tabs update正确用法分享
2014/03/21 PHP
php实现图片局部打马赛克的方法
2015/02/11 PHP
PHP实现动态柱状图改进版
2015/03/30 PHP
PHP微信开发之二维码生成类
2015/06/26 PHP
php 函数使用可变数量的参数方法
2017/05/02 PHP
PHP中phar包的使用教程
2017/06/14 PHP
php中文语义分析实现方法示例
2019/09/28 PHP
JavaScript 继承的实现
2009/07/09 Javascript
jquery 操作DOM案例代码分享
2012/04/05 Javascript
js获取窗口相对于屏幕左边和上边的位置坐标
2014/05/15 Javascript
常用的jQuery前端技巧收集
2014/12/24 Javascript
JavaScript获取浏览器信息的方法
2015/11/20 Javascript
Js 获取、判断浏览器版本信息的简单方法
2016/08/08 Javascript
浅析javascript中的Event事件
2016/12/09 Javascript
js 简易版滚动条实例(适用于移动端H5开发)
2017/06/26 Javascript
canvas基础绘制-绚丽倒计时的实例
2017/09/17 Javascript
详细分析jsonp的原理和实现方式
2017/11/20 Javascript
写给小白看的JavaScript异步
2017/11/29 Javascript
解决vue axios的封装 请求状态的错误提示问题
2018/09/25 Javascript
JavaScript继承与聚合实例详解
2019/01/22 Javascript
[52:15]2014 DOTA2国际邀请赛中国区预选赛5.21 HGT VS LGD-GAMING
2014/05/23 DOTA
深入理解Python变量与常量
2016/06/02 Python
利用python实现命令行有道词典的方法示例
2017/01/31 Python
Python基于递归实现电话号码映射功能示例
2018/04/13 Python
Python实现修改IE注册表功能示例
2018/05/10 Python
Python PyQt5整理介绍
2020/04/01 Python
美国购车网站:TrueCar
2016/10/19 全球购物
受希腊女神灵感的晚礼服、鸡尾酒礼服和婚纱:THEIA
2018/04/15 全球购物
总经理秘书的岗位职责
2013/12/27 职场文书
课例研修方案
2014/05/31 职场文书
2014年民主评议党员工作总结
2014/12/02 职场文书
艺术节开幕词
2015/01/28 职场文书
Python绘制分类图的方法
2021/04/20 Python
如何将JavaScript将数组转为树形结构
2021/06/02 Javascript
SQL语法CONSTRAINT约束操作详情
2022/01/18 MySQL
Golang MatrixOne使用介绍和汇编语法
2022/04/19 Golang