1、使用python的库urllib2,用到urlopen和Request方法。

2、方法urlopen原形

urllib2.urlopen(url[, data][, timeout])

其中:

url表示目标网页地址,可以是字符串,也可以是请求对象Request

data表示post方式提交给目标服务器的参数

timeout表示超时时间设置

改方法返回一个类似文件的对象,有geturl()、info()、read()方法其中geturl()返回连接地址,info()返回网页信息。

要获取网页内容可以使用read()方法,read也可以带参数,表示读取内容的大小(字节)。

例子:

  1. >>> import urllib2
  2. >>> socket = urllib2.urlopen("http://www.baidu.com")
  3. >>> content = socket.read()
  4. >>> socket.close()

这样,网页的内容(content)就爬下来了,但是有些网站禁止爬虫,如果直接请求会出现以下错误:

urllib2.HTTPError: HTTP Error 403: Forbidden

解决方法是可以在请求加上头信息,伪装成浏览器的访问行为,需要用到Request方法:

3、方法Request原型

urllib2.Request(url[,
data][, headers][, origin_req_host][, unverifiable]
)

其中:

url表示目标网页地址,可以是字符串,也可以是请求对象Request

data表示post方式提交给目标服务器的参数

headers表示用户标识,是一
个字典类型的数据,有些不允许脚本的抓取,所以需要用户代理,像火狐浏览器的代理就是类似:Mozilla/5.0 (X11; U; Linux
i686)Gecko/20071127 Firefox/2.0.0.11 浏览器的标准UA格式为:浏览器标识 (操作系统标识; 加密等级标识;
浏览器语言) 渲染引擎标识 版本信息 ,headers默认是Python-urllib/2.6

origin_req_host表示请求方的主机域名或者ip地址

看一个例子:

  1. >>> headers = {'User-Agent':'Mozilla/5.0 (X11; U; Linux i686)Gecko/20071127 Firefox/2.0.0.11'}
  2. >>> req = urllib2.Request(url="http://blog.csdn.net/deqingguo",headers=headers)
  3. >>> socket = urllib2.urlopen(req)
  4. >>> content = socket.read()
  5. >>> socket.close()

列子2:

 import urllib2 as ul
url = 'http://www.dd.com/products?selected.classification=Primary+antibodies&selected.researchAreas=Metabolism--Types+of+disease--Cancer'
headers = {'User-Agent':'Mozilla/5.0 (X11; U; Linux i686)Gecko/20071127 Firefox/2.0.0.11'} req = ul.Request(url,headers=headers)
f = ul.urlopen( req )
content = f.read(); print f.getcode();
    1. <pre></pre>
    2. <p></p>
    3. <pre></pre>

最新文章

  1. 使用自签名的方式创建Docker私有仓库
  2. python 栈和队列(使用list实现)
  3. 开发人员必读openstack网络基础
  4. ArcGIS api fo silverlight学习三(利用ElementLayer实现鼠标悬浮弹出自定义窗体)
  5. Newtonsoft.Json解析Json字符串案例:
  6. Struts(七):action配置文件之通配符映射
  7. CentOS下如何完全卸载MySQL?卸载自带的mysql
  8. git——学习笔记(一)
  9. html meta标签之http-equiv
  10. 【BZOJ】【2879】【NOI2012】美食节
  11. Dynamics CRM JS的调试的弊端解决办法
  12. 搭建微服务器:express+https+api代理
  13. Min_25 筛 学习笔记
  14. mysql特殊查询----分组后排序
  15. Editor markdown编辑器
  16. dos命令及github介绍
  17. Maven的继承与聚合——多模块开发
  18. 实验吧—密码学——WP之 传统知识+古典密码
  19. UI5-文档-4.22-Expression Binding
  20. ISCC2016-BASIC、WEB、MISC简单writeup

热门文章

  1. 基于Spark ALS构建商品推荐引擎
  2. poj1244Slots of Fun
  3. (五)uboot移植补基础之shell
  4. MySQL 定时器EVENT学习
  5. jackson annotations注解详解 (zhuan)
  6. 【ros】Create a ROS package:package dependencies报错
  7. No resource found that matches the given name &#39;Theme.AppCompat.Light&#39;
  8. php正则:匹配(),{},[]小括号,大括号,中括号里面的内容
  9. html页面,左边点击链接,右边显示内容参考代码。
  10. EF Core &#187; 关系