python下读取一个页面的数据可以通过urllib2轻松实现请求

  1. import urllib2
  2. print urllib2.urlopen('http://www.baidu.com').read()

涉及到页面的POST请求操作的话需要提供头信息,提交的post数据和请求页面。

其中的post数据需要urllib.encode()一下,其实就是将字典转换成“data1=value1&data2=value2”的格式。

  1. import urllib
  2. import urllib2
  3.  
  4. HEADER = {
  5. 'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0',
  6. 'Referer' : 'http://202.206.1.163/logout.do'
  7. }
  8.  
  9. POSTDATA = {
  10. 'data1': 'value1',
  11. 'data2': 'value2'
  12. }
  13.  
  14. HOSTURL = 'http://xxx.com'
  15.  
  16. enpostdata = urllib.urlencode(POSTDATA)
  17. urlrequest = urllib2.Request(hosturl,enpostdata,HEADER)
  18. urlresponse = urllib2.urlopen(urlrequest)
  19.  
  20. print urlresponse.read()

请求之后浏览器会有一个会话保持的过程,会话都是保存在一个cookie里面的,下一次页面的请求会把cookie放到请求头,如果cookie丢失会话也就断开了。

在python下面需要设置一下cookie的保持

  1. # cookie set
  2. # 用来保持会话
  3. cj = cookielib.LWPCookieJar()
  4. cookie_support = urllib2.HTTPCookieProcessor(cj)
  5. opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler)
  6. urllib2.install_opener(opener)

下面是将以上知识点汇总写的一个库文件,方便使用:

# filename: analogop.py

  1. #!/usr/bin/python
  2. # -*-coding:UTF-8 -*-
  3.  
  4. # author: 初行
  5. # qq: 121866673
  6. # mail: zxbd1016@163.com
  7. # message: I need a python job
  8. # time: 2014/10/5
  9.  
  10. import urllib
  11. import urllib2
  12. import cookielib
  13.  
  14. # cookie set
  15. # 用来保持会话
  16. cj = cookielib.LWPCookieJar()
  17. cookie_support = urllib2.HTTPCookieProcessor(cj)
  18. opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler)
  19. urllib2.install_opener(opener)
  20.  
  21. # default header
  22. HEADER = {
    'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0',
  23. 'Referer' : 'http://202.206.1.163/logout.do'
  24. }
  25.  
  26. # operate method
  27. def geturlopen(hosturl, postdata = {}, headers = HEADER):
  28. # encode postdata
  29. enpostdata = urllib.urlencode(postdata)
  30. # request url
  31. urlrequest = urllib2.Request(hosturl, enpostdata, headers)
  32. # open url
  33. urlresponse = urllib2.urlopen(urlrequest)
  34. # return url
  35. return urlresponse

这个是测试文件,因为读者没有测试环境,需要自己搭建或者找个网站测试:

#filename: test.py

  1. from analogop import geturlopen
  2.  
  3. postd = {
  4. 'usernum': '',
  5. 'upw': '',
  6. 'userip': '192.168.10.1',
  7. 'token': 'xxx'
  8. }
  9.  
  10. urlread = geturlopen('http://127.0.0.1:8000/login/', postd)
  11. print urlread.read().decode('utf-8')
  12. urlread = geturlopen('http://127.0.0.1:8000/chafen/', {})
  13. print urlread.read().decode('utf-8')

python_程序模拟浏览器请求及会话保持的更多相关文章

  1. 程序模拟浏览器请求及会话保持-python实现

    http://www.cnblogs.com/zxlovenet/p/4006649.html

  2. requests模拟浏览器请求模块初识

    requests模拟浏览器请求模块初识  一.下载 requests模拟浏览器请求模块属于第三方模块 源码下载地址http://docs.python-requests.org/zh_CN/lates ...

  3. 第五十九节,模拟浏览器请求Python结合html基本格式

    模拟浏览器请求Python结合html基本格式 用Python模拟一个客户端,结合打开一个HTML页面 创建客户端 #!/usr/bin/env python # -*- coding:utf8 -* ...

  4. 第四十节,requests模拟浏览器请求模块初识

    requests模拟浏览器请求模块初识  requests模拟浏览器请求模块属于第三方模块 源码下载地址http://docs.python-requests.org/zh_CN/latest/use ...

  5. python入门常用方法(转json,模拟浏览器请求头,写入文件)

    转json import jsonjson = json.loads(html) 模拟浏览器请求头 import urllib.request req = urllib.request.Request ...

  6. 关于HttpClient模拟浏览器请求的參数乱码问题解决方式

    转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/44407297 http://www.llwjy.com/blogdetail/9 ...

  7. java 接口中模拟浏览器 请求webservice 接受返回数据

    使用HttpClient 所需jar:commons-codec-1.9.jar,commons-httpclient-3.1.jar try { HttpClient client = new Ht ...

  8. java后台调用HttpURLConnection类模拟浏览器请求(一般用于接口调用)

    项目开发中难免遇到外部接口的调用,小生今天初次接触该类,跟着API方法走了一遍,如有不对的地方,还请哆哆指正,拜谢! 1 package com.cplatform.movie.back.test; ...

  9. 程序模拟HTTP请求

    1. 使用HttpClient 前面拼接StringContent string strContent = "client_id=client&client_secret=secre ...

随机推荐

  1. 此编译单元不包含在frame元数据中指定的factoryClass,无法加载配置的运行时共享库

    警告:此编译单元不包含在frame元数据中指定的factoryClass,无法加载配置的运行时共享库.要在没有运行时共享库的情况下进行编译,请将 -static-link-runtime-shared ...

  2. uwsgi -- unavailable modifier requested: 0 -- 的解决办法

    nginx 报错 upstream prematurely closed connection while reading response header from upstream 说明是上游服务器 ...

  3. win8共享文件设置 详细教程

    1.开放防火墙445端口 2.进入组策略,依次进入 从网络访问计算机 属性里--添加-Guest 3.进入 然后把里面的用户清空 4.打开网络和共享中心,关闭密码保护共享

  4. 完美解决苹果电脑mac终端无法输入大写T的问题

    [本文出自天外归云的博客园] 最近突然发现我的苹果电脑mac终端无法输入大写字母T,今天终于在同事的帮助下解决了!之前在网上查解决方法,感觉步骤描述欠佳!今天记录一下这个踩坑经验: 完美解决! 首先打 ...

  5. 利用 fdisk进行分区

    ):fdisk命令参数 p:打印分区表. n:新建一个新分区. d:删除一个新分区. q:退出不保存. w:退出且保存. 例子: 先看下磁盘: root@archiso ~ # lsblk 在这里对磁 ...

  6. C#学习笔记(32)——委托改变窗体颜色

    说明(2017-11-23 22:17:34): 1. 蒋坤的作业,点击窗体1里面的按钮,出现窗体2:点击窗体2里的按钮,窗体1改变背景色. 2. 做完窗体传值后,这个作业就很简单了. 代码: For ...

  7. js生成验证码并且验证

    <html> <head> <title>验证码</title> <style type="text/css"> #co ...

  8. HTTP Status 500 PWC6188 jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application

    报错如下: 解决方案: 1.可能是依赖引用错了,注意 JSP 应依赖: <!-- JSP --> <dependency> <groupId>javax.servl ...

  9. TED Notes 1 (What leads to success)

    1. the first thing is passion, do it for love, not for money2. if you do it for love, the money come ...

  10. AT24Cxx(EEPROM)子系统

    1.配置内核 打开I2C功能: 打开杂项设备,该选项打开后,EEPROM也就打开了. 2. 修改代码 修改文件: linux/arch/arm/mach-s3c2440/mach-smdk2440.c ...