基于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每隔N秒运行指定函数的方法
Mar 16 Python
Java Web开发过程中登陆模块的验证码的实现方式总结
May 25 Python
Python的Flask框架应用调用Redis队列数据的方法
Jun 06 Python
python3将视频流保存为本地视频文件
Jun 20 Python
基于tensorflow加载部分层的方法
Jul 26 Python
Python正则表达式指南 推荐
Oct 09 Python
python判断计算机是否有网络连接的实例
Dec 15 Python
Python configparser模块配置文件过程解析
Mar 03 Python
基于python requests selenium爬取excel vba过程解析
Aug 12 Python
Python 微信公众号文章爬取的示例代码
Nov 30 Python
Python 中的函数装饰器和闭包详解
Feb 06 Python
Python编写车票订购系统 Python实现快递收费系统
Aug 14 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
如何做到多笔资料的同步
2006/10/09 PHP
用文本文件制作留言板提示(下)
2006/10/09 PHP
解决PHP里大量数据循环时内存耗尽的方法
2015/10/10 PHP
强悍无比的WEB开发好助手FireBug(Firefox Plugin)
2007/01/16 Javascript
jQuery 版本的文本输入框检查器Input Check
2009/07/09 Javascript
javascript实现点击提交按钮后显示loading的方法
2015/07/03 Javascript
jQuery幻灯片带缩略图轮播效果代码分享
2015/08/17 Javascript
Javascript实现图片加载从模糊到清晰显示的方法
2016/06/21 Javascript
AngularJS 整理一些优化的小技巧
2016/08/18 Javascript
AngularJS Select(选择框)使用详解
2017/01/18 Javascript
JS实现商品筛选功能
2020/08/19 Javascript
ES6解构赋值实例详解
2017/10/31 Javascript
Vue.js 表单控件操作小结
2018/03/29 Javascript
浅谈Node.js 中间件模式
2018/06/12 Javascript
Vue.js子组件向父组件通信的方法实例代码详解
2018/12/10 Javascript
Vue.js递归组件实现组织架构树和选人功能案例分析
2019/07/03 Javascript
微信小程序列表时间戳转换实现过程解析
2019/10/12 Javascript
[49:42]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第一局
2016/03/04 DOTA
Python中的下划线详解
2015/06/24 Python
python生成式的send()方法(详解)
2017/05/08 Python
在双python下设置python3为默认的方法
2018/10/31 Python
使用python获取邮箱邮件的设置方法
2019/09/20 Python
Python通过正则库爬取淘宝商品信息代码实例
2020/03/02 Python
Python本地及虚拟解释器配置过程解析
2020/10/13 Python
python爬虫使用scrapy注意事项
2020/11/23 Python
魔声耳机官方网站:Monster是世界第一品牌的高性能耳机
2016/10/26 全球购物
土耳其时尚潮流在线购物网站:Trendyol
2017/10/10 全球购物
北美Newegg打造的全球尖货海购平台:tt海购
2018/09/28 全球购物
一封普通求职者的求职信
2013/11/20 职场文书
精彩自我鉴定
2014/01/16 职场文书
电信营业员自我评价分享
2014/01/17 职场文书
咖啡厅创业计划书范本
2014/01/22 职场文书
12月小学生校园广播稿
2014/02/04 职场文书
党员自我剖析材料范文
2014/10/06 职场文书
信用卡工资证明范本
2015/06/19 职场文书
活动宣传稿范文
2015/07/23 职场文书