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>

python使用urllib2抓取网页的更多相关文章

  1. python多线程实现抓取网页

    Python实现抓取网页 以下的Python抓取网页的程序比較0基础.仅仅能抓取第一页的url所属的页面,仅仅要预定URL足够多.保证你抓取的网页是无限级别的哈,以下是代码: ##coding:utf ...

  2. 【Python开发】python使用urllib2抓取防爬取链接

    前几天刚看完<Linux/Unix设计思想>,真是一本不错的书,推荐想提高自己代码质量的童鞋看一下,里面经常提到要以小为美,一个程序做好一件事,短小精悍,因此我也按照这种思想来写pytho ...

  3. Python和Ruby抓取网页时的中文乱码问题(在Eclipse和Apatana Studio下均是这种解决方法

    Python抓取中文网页乱码 :Eclipse+pydev2.2+python2.7  :Apatana Studio3+ pydev2.2+python2.7      run时设置 run--&g ...

  4. 怎么用Python写爬虫抓取网页数据

    机器学习首先面临的一个问题就是准备数据,数据的来源大概有这么几种:公司积累数据,购买,交换,政府机构及企业公开的数据,通过爬虫从网上抓取.本篇介绍怎么写一个爬虫从网上抓取公开的数据. 很多语言都可以写 ...

  5. Python -- 网络编程 -- 抓取网页图片 -- 豆瓣妹子

    首先分析页面URL,形如http://dbmeizi.com/category/[1-14]?p=[0-476] 图片种类对应编号: 1:'性感', 2:'有沟', 3:'美腿', 4:'小露点', ...

  6. Python -- 网络编程 -- 抓取网页图片 -- 图虫网

    字符串(str)编码成字节码(bytes),字节码解码为字符串 获取当前环境编码:sys.stdin.encoding url编码urllib.parse.quote() url解码urllib.pa ...

  7. 《与小卡特一起学Python》Code3 抓取网页中的某个数据

    import urllib2 file = urllib2.urlopen('http://common.cnblogs.com/script/jquery.js') message = file.r ...

  8. python 解决抓取网页中的中文显示乱码问题

    关于爬虫乱码有很多各式各样的问题,这里不仅是中文乱码,编码转换.还包括一些如日文.韩文 .俄文.藏文之类的乱码处理,因为解决方式是一致的,故在此统一说明. 网络爬虫出现乱码的原因 源网页编码和爬取下来 ...

  9. Python 抓取网页并提取信息(程序详解)

    最近因项目需要用到python处理网页,因此学习相关知识.下面程序使用python抓取网页并提取信息,具体内容如下: #---------------------------------------- ...

随机推荐

  1. XML命名空间详解

    http://happylongnv.blog.hexun.com/48859954_d.html 目的:解决同一个元素在相同文件中代表不同含义的问题.因为XML文档中使用的元素不是固定的,那么两个不 ...

  2. opencv 61篇

    (一)--安装配置.第一个程序 标签: imagebuildincludeinputpathcmd 2011-10-21 16:16 41132人阅读 评论(50) 收藏 举报  分类: OpenCV ...

  3. iOS添加Prefix Header

    1. 添加Prefix Header 注: Xcode 6苹果默认去掉prefix Header, 用以提高原文件的复用性, 便于迁移. 并且可以一定程度上减少Build Time. 解决办法: (1 ...

  4. iOS日志输出宏

    下面是在日志语句中很有用的非常常见的宏和表达式.C/C++/Objective-C中用于日志输出的预处理宏. Macro Format Specifier Description 1. __func_ ...

  5. ORACLE 总结

    1. diagnostic file(alertlog, tracefile, redolog), 监控数据库动作时间点 [troubleshooting] alertlog : 确认checkpoi ...

  6. 图形处理的api

      [1]旋转      public class MainActivity extends Activity { private float degrees;// 图片旋转的角度 @Override ...

  7. ios8中,相册创建后手动删除,不能再进行创建显示

    // Add a new ALAssetsGroup to the library. // The name of the ALAssetsGroup is name and the type is ...

  8. 在Windows和Linux上安装paramiko模块

    一.paramiko模块有什么用? paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接.由于使用的是python这样的能够跨平台运行的语言 ...

  9. Html表单的正则校验--将不符合指定正则表达式的字符串自动替换为空

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...

  10. PCA in Bioinformatics

    光看原理和代码是没用的,得看看具体算法在实际中的用途,多看看文献. Principal component analysis for clustering gene expression data