本文实例讲述了Python实现模拟浏览器请求及会话保持操作。分享给大家供大家参考,具体如下:
python下读取一个页面的数据可以通过urllib2轻松实现请求
import urllib2 print urllib2.urlopen('http://www.baidu.com').read()
涉及到页面的POST请求操作的话需要提供头信息,提交的post数据和请求页面。
其中的post数据需要urllib.encode()一下,其实就是将字典转换成“data1=value1&data2=value2”的格式。
import urllib import urllib2 HEADER = { 'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0', 'Referer' : 'http://202.206.1.163/logout.do' } POSTDATA = { 'data1': 'value1', 'data2': 'value2' } HOSTURL = 'http://xxx.com' enpostdata = urllib.urlencode(POSTDATA) urlrequest = urllib2.Request(hosturl,enpostdata,HEADER) urlresponse = urllib2.urlopen(urlrequest) print urlresponse.read()
请求之后浏览器会有一个会话保持的过程,会话都是保存在一个cookie里面的,下一次页面的请求会把cookie放到请求头,如果cookie丢失会话也就断开了。
在python下面需要设置一下cookie的保持
# cookie set # 用来保持会话 cj = cookielib.LWPCookieJar() cookie_support = urllib2.HTTPCookieProcessor(cj) opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler) urllib2.install_opener(opener)
下面是将以上知识点汇总写的一个库文件,方便使用:
# filename: analogop.py #!/usr/bin/python # -*-coding:UTF-8 -*- # author: 初行 # qq: 121866673 # mail: zxbd1016@163.com # message: I need a python job # time: 2014/10/5 import urllib import urllib2 import cookielib # cookie set # 用来保持会话 cj = cookielib.LWPCookieJar() cookie_support = urllib2.HTTPCookieProcessor(cj) opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler) urllib2.install_opener(opener) # default header HEADER = { 'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0', 'Referer' : 'http://202.206.1.163/logout.do' } # operate method def geturlopen(hosturl, postdata = {}, headers = HEADER): # encode postdata enpostdata = urllib.urlencode(postdata) # request url urlrequest = urllib2.Request(hosturl, enpostdata, headers) # open url urlresponse = urllib2.urlopen(urlrequest) # return url return urlresponse
这个是测试文件,因为读者没有测试环境,需要自己搭建或者找个网站测试:
#filename: test.py from analogop import geturlopen postd = { 'usernum': '2011411111', 'upw': '124569', 'userip': '192.168.10.1', 'token': 'xxx' } urlread = geturlopen('http://127.0.0.1:8000/login/', postd) print urlread.read().decode('utf-8') urlread = geturlopen('http://127.0.0.1:8000/chafen/', {}) print urlread.read().decode('utf-8')
更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。
本文向大家介绍基于Python模拟浏览器发送http请求,包括了基于Python模拟浏览器发送http请求的使用技巧和注意事项,需要的朋友参考一下 1.使用 urllib2 实现 2.使用 requests 模块 (1).get请求 (2).post请求 (3).使用session对象的写法 3.其他的一些请求方式 >>> r = requests.put("http://httpbin.org/
问题内容: 我想从网站上获取一些数据。通常,我使用这些东西,但是现在该站点使用JS来提供数据。las,不支持。 我该怎么用呢? 问题答案: 以下是一些选项: 硒(教程) 对于无头自动化,可以将Selenium与PhantomJS结合使用 WebKit 蜘蛛猴
问题内容: 我正在使用请求模块(Python 2.5的版本0.10.0)。我已经弄清楚了如何将数据提交到网站上的登录表单并检索会话密钥,但是我看不到在后续请求中使用此会话密钥的明显方法。有人可以在下面的代码中填写省略号还是建议其他方法? 问题答案: 您可以使用以下方法轻松创建持久会话: 之后,请继续执行您的请求: 有关会话的更多信息,请访问:https : //requests.kennethre
本文向大家介绍C# 模拟浏览器并自动操作的实例代码,包括了C# 模拟浏览器并自动操作的实例代码的使用技巧和注意事项,需要的朋友参考一下 本文主要讲解通过WebBrowser控件打开浏览页面,并操作页面元素实现自动搜索功能,仅供学习分享使用,如有不足之处,还请指正。 涉及知识点 WebBrowser:用于在WinForm窗体中,模拟浏览器,打开并导航网页。 HtmlDocument:表示一个Html
问题内容: 出于营销原因,我正在使用selenium打开一些浏览器窗口。我只是打开我的营销渠道,通过selenium登录并开始工作。 问题是,在执行代码后,selenium将关闭窗口。 到目前为止,所有解决方案均无济于事。 我有13个浏览器窗口atm。,如下所示: 我找到的最接近的解决方案是在脚本的末尾添加此内容,但是不知何故,它只能保持5个窗口打开,而不是关闭5个窗口并打开下5个新窗口: 我只希
问题内容: 我需要编写一个Python脚本,该脚本向同一站点发出多个HTTP请求。除非我错了(而且我很可能会这样),否则urllib会为每个请求重新进行身份验证。出于某种原因,我将不进行讨论,我需要能够进行一次身份验证,然后将该会话用于其余的请求。 我正在使用python 2.3.4 问题答案: 如果要保留身份验证,则需要重用cookie。我不确定urllib2在python 2.3.4中是否可用