urllib2的基本使用
urlopen
1 import urllib2
2
3 # 向指定的url发送请求,并返回服务器响应的类文件对象
4 response = urllib2.urlopen("http://www.baidu.com/")
5
6 # 类文件对象支持文件的操作方法,如read()方法返回为字符串
7 html = response.read()
8
9 print htm
上面代码就是打开百度主页的“查看源代码”的内容,还是比较简单的。
Request
在上个例子里,urlopen()的参数就是一个url地址;
但是如果需要执行更复杂的操作,比如增加HTTP报头,必须创建一个 Request 实例来作为urlopen()的参数;而需要访问的url地址则作为 Request 实例的参数。
1 # -*- coding:utf-8 -*-
2 import urllib2
3
4 url = "http://www.baidu.com/"
5
6 # url 作为Request()方法的一个参数,并构造一个Request对象
7 request = urllib2.Request(url)
8
9 # Request对象作为urlopen()方法的参数,发给服务器响应
10 response = urllib2.urlopen(request)
11
12 html = response.read()
13
14 print html
与上面的运行时一样的
新建Request实例,除了必须要有 url 参数之外,还可以设置另外两个参数:
data(默认空):是伴随 url 提交的数据(比如要post的数据),同时 HTTP 请求将从 "GET"方式 改为 "POST"方式。
headers(默认空):是一个字典,包含了需要发送的HTTP报头的键值对。
User-Agent
爬虫需要伪装自己,伪装成公认的浏览器
1 # -*- coding:utf-8 -*-
2 import urllib2
3
4 url = "http://www.baidu.com/"
5 headers = {"User-Agent" : "Mozilla/5.0(compatible;MSIE9.0;Windows NT6.1;Trident/5.0)"}
6
7
8 # url和headers一起 作为Request()方法的参数,并构造一个Request对象
9 request = urllib2.Request(url, headers=headers)
10
11 # Request对象作为urlopen()方法的参数,发给服务器响应
12 response = urllib2.urlopen(request)
13
14 html = response.read()
15
16 print html
添加更多的Header信息
特定的header
1 # -*- coding:utf-8 -*-
2 import urllib2
3
4 url = "http://www.baidu.com/"
5 headers = {"User-Agent" : "Mozilla/5.0(compatible;MSIE9.0;Windows NT6.1;Trident/5.0)"}
6
7
8 # url和headers一起 作为Request()方法的参数,并构造一个Request对象
9 request = urllib2.Request(url, headers=headers)
10 # 调用Request.add_header(),添加或者修改特定的header
11 request = add_header("Connectin", "keep-alive")
12
13 # Request对象作为urlopen()方法的参数,发给服务器响应
14 response = urllib2.urlopen(request)
15
16 html = response.read()
17
18 print html
随机添加/修改User-Agent
import urllib2
import random url = "http://www.itcast.cn" ua_list = [
"Mozilla/5.0 (Windows NT 6.1; ) Apple.... ",
"Mozilla/5.0 (X11; CrOS i686 2268.111.0)... ",
"Mozilla/5.0 (Macintosh; U; PPC Mac OS X.... ",
"Mozilla/5.0 (Macintosh; Intel Mac OS... "
] user_agent = random.choice(ua_list) request = urllib2.Request(url) #也可以通过调用Request.add_header() 添加/修改一个特定的header
request.add_header("User-Agent", user_agent) # 第一个字母大写,后面的全部小写
request.get_header("User-agent") response = urllib2.urlopen(request) html = response.read()
print html
urllib2的基本使用的更多相关文章
- 【Python网络爬虫二】使用urllib2抓去网页内容
在Python中通过导入urllib2组件,来完成网页的抓取工作.在python3.x中被改为urllib.request. 爬取具体的过程类似于使用程序模拟IE浏览器的功能,把URL作为HTTP请求 ...
- Python urllib2 调试
#!/usr/bin/env python # coding=utf-8 __author__ = 'zhaoyingnan' import urllib import urllib2 import ...
- 使用urllib2打开网页的三种方法
#coding:utf-8 import urllib2 import cookielib url="http://www.baidu.com" print '方法 1' resp ...
- No module named 'urllib2'
import urllib2 response = urllib2.urlopen('http://www.baidu.com/') html = response.read() print html ...
- Python自动化测试 (九)urllib2 发送HTTP Request
urllib2 是Python自带的标准模块, 用来发送HTTP Request的. 类似于 .NET中的, HttpWebRequest类 urllib2 的优点 Python urllib2 ...
- urllib2抓取HTML存入Excel
通过urllib2抓取HTML网页,然后过滤出包含特定字符的行,并写入Excel文件: # -*- coding: utf-8 -*- import sys #import urllib import ...
- [Python] urllib2.HTTPError: HTTP Error 403: Forbidden
搬运自http://www.2cto.com/kf/201309/242273.html,感谢原作. 之所以出现上面的异常,是因为如果用 urllib.request.urlopen 方式打开一个UR ...
- python urllib2 发起http请求post
使用urllib2发起post请求 def GetCsspToken(): data = json.dumps({"userName":"wenbin", &q ...
- cookielib和urllib2模块相结合模拟网站登录
1.cookielib模块 cookielib模块的主要作用是提供可存储cookie的对象,以便于与urllib2模块配合使用来访问Internet资源.例如可以利用 本模块的CookieJar类的对 ...
- 使用python标准库urllib2访问网页
#访问不需要登录的网页import urllib2target_page_url='http://10.224.110.118/myweb/view.jsp' f = urllib2.urlopen( ...
随机推荐
- Visual Studio 生成DLL文件
新建一个项目,在菜单栏中选择“项目”/“**属性”选项,该页面中将“输出类型”下拉列表中的选项选择为“类库”,然后重新生成一下该项目,或者在“Visual Studio 2008命令提示”中输入以下命 ...
- python进阶------进程线程(三)
python中的进程 1.multiprocessing模块 由于GIL的存在,python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在python中大部分情况需要使用多进 ...
- 【python】python的正则表达式 re
ps:本文摘自互联网,觉得结构很好,讲的也很清晰.记下,备查. 延伸阅读:python的 内建函数 和 subprocess .此文是本系列的第三篇文章了,和之前一样,内容出自官方文档,但是会有自己的 ...
- 【转】用PowerDesigner制作数据库升级脚本
[原创]用PowerDesigner制作数据库升级脚本 很多人使用PD的时候就问有没有制作自动升级脚本的功能.其实是有的. 操作原理: 1.保存原来的版本,另存为apm的文件,生成一个Archiv ...
- git命令提交项目
相关的操作命令,总是忘记,故在此记录下: 此为linux下的命, windows的话,去掉sudo即可 1.进入项目代码根目录,执行: sudo git init 把这个目录变成git可以管理的仓库. ...
- SSE图像算法优化系列十二:多尺度的图像细节提升。
无意中浏览一篇文章,中间提到了基于多尺度的图像的细节提升算法,尝试了一下,还是有一定的效果的,结合最近一直研究的SSE优化,把算法的步骤和优化过程分享给大家. 论文的全名是DARK IMAGE ENH ...
- 基于HTML5 Canvas 点击添加 2D 3D 机柜模型
今天又返回好好地消化了一下我们的数据容器 DataModel,这里给新手做一个典型的数据模型事件处理的例子作为参考.这个例子看起来很简单,实际上结合了数据模型中非常重要的三个事件处理的部分:属性变化事 ...
- iOS面试题最全梳理
OC的理解与特性 OC作为一门面向对象的语言,自然具有面向对象的语言特性:封装.继承.多态.它既具有静态语言的特性(如C++),又有动态语言的效率(动态绑定.动态加载等).总体来讲,OC确实是一门不错 ...
- 认识 Less
CSS(层叠样式表)是一项出色的技术,它使得网页的表现与内容完全分离,使网站维护工作变得更容易,不会因为内容的改变而影响表现,也不会因为表现的改变而影响内容. 作为一门标记性语言,CSS 的先天性优点 ...
- Oracle11g静默安装dbca,netca报错处理--直接跟换操作系统
最近给一个客户安装oracle 11gr2 概述: 操作系统:linux 32位操作系统 [oracle@nbsrfx response]$ uname -aLinux nbsrfx 2.6.32-5 ...