python使用urllib2抓取网页
1、使用python的库urllib2,用到urlopen和Request方法。
2、方法urlopen原形
urllib2.urlopen(url[, data][, timeout])
其中:
url表示目标网页地址,可以是字符串,也可以是请求对象Request
data表示post方式提交给目标服务器的参数
timeout表示超时时间设置
改方法返回一个类似文件的对象,有geturl()、info()、read()方法其中geturl()返回连接地址,info()返回网页信息。
要获取网页内容可以使用read()方法,read也可以带参数,表示读取内容的大小(字节)。
例子:
- >>> import urllib2
- >>> socket = urllib2.urlopen("http://www.baidu.com")
- >>> content = socket.read()
- >>> 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地址
看一个例子:
- >>> headers = {'User-Agent':'Mozilla/5.0 (X11; U; Linux i686)Gecko/20071127 Firefox/2.0.0.11'}
- >>> req = urllib2.Request(url="http://blog.csdn.net/deqingguo",headers=headers)
- >>> socket = urllib2.urlopen(req)
- >>> content = socket.read()
- >>> 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();
- <pre></pre>
- <p></p>
- <pre></pre>
python使用urllib2抓取网页的更多相关文章
- python多线程实现抓取网页
Python实现抓取网页 以下的Python抓取网页的程序比較0基础.仅仅能抓取第一页的url所属的页面,仅仅要预定URL足够多.保证你抓取的网页是无限级别的哈,以下是代码: ##coding:utf ...
- 【Python开发】python使用urllib2抓取防爬取链接
前几天刚看完<Linux/Unix设计思想>,真是一本不错的书,推荐想提高自己代码质量的童鞋看一下,里面经常提到要以小为美,一个程序做好一件事,短小精悍,因此我也按照这种思想来写pytho ...
- Python和Ruby抓取网页时的中文乱码问题(在Eclipse和Apatana Studio下均是这种解决方法
Python抓取中文网页乱码 :Eclipse+pydev2.2+python2.7 :Apatana Studio3+ pydev2.2+python2.7 run时设置 run--&g ...
- 怎么用Python写爬虫抓取网页数据
机器学习首先面临的一个问题就是准备数据,数据的来源大概有这么几种:公司积累数据,购买,交换,政府机构及企业公开的数据,通过爬虫从网上抓取.本篇介绍怎么写一个爬虫从网上抓取公开的数据. 很多语言都可以写 ...
- Python -- 网络编程 -- 抓取网页图片 -- 豆瓣妹子
首先分析页面URL,形如http://dbmeizi.com/category/[1-14]?p=[0-476] 图片种类对应编号: 1:'性感', 2:'有沟', 3:'美腿', 4:'小露点', ...
- Python -- 网络编程 -- 抓取网页图片 -- 图虫网
字符串(str)编码成字节码(bytes),字节码解码为字符串 获取当前环境编码:sys.stdin.encoding url编码urllib.parse.quote() url解码urllib.pa ...
- 《与小卡特一起学Python》Code3 抓取网页中的某个数据
import urllib2 file = urllib2.urlopen('http://common.cnblogs.com/script/jquery.js') message = file.r ...
- python 解决抓取网页中的中文显示乱码问题
关于爬虫乱码有很多各式各样的问题,这里不仅是中文乱码,编码转换.还包括一些如日文.韩文 .俄文.藏文之类的乱码处理,因为解决方式是一致的,故在此统一说明. 网络爬虫出现乱码的原因 源网页编码和爬取下来 ...
- Python 抓取网页并提取信息(程序详解)
最近因项目需要用到python处理网页,因此学习相关知识.下面程序使用python抓取网页并提取信息,具体内容如下: #---------------------------------------- ...
随机推荐
- iOS - AFNetworking 网络请求
前言 在 iOS 开发中,一般情况下,简单的向某个 Web 站点简单的页面提交请求并获取服务器的响应,用 Xcode 自带的 NSURLConnection 是能胜任的.但是,在绝大部分下我们所需要访 ...
- Android_相关路径
1. Android应用安装涉及到如下几个目录:system/app 系统自带的应用程序,无法删除.data/app 用户程序安装的目录,有删除权限.安装时把apk文件复制到此目录.da ...
- oracle 10g正则表达式 REGEXP_LIKE 用法
ORACLE中的支持正则表达式的函数主要有下面四个:1,REGEXP_LIKE :与LIKE的功能相似2,REGEXP_INSTR :与INSTR的功能相似3,REGEXP_SUBSTR :与SUBS ...
- Android ViewFlipper的使用分析
[ViewFlipper]——基础 1.ViewPager 和ViewFliping的区别: 最显著的区别就是ViewPager在滑动的时候内部的View默认就能够跟随手指滑动,而 ViewFlipi ...
- LA 5135 Mining Your Own Business
求出 bcc 后再……根据大白书上的思路即可. 然后我用的是自定义的 stack 类模板: #include<cstdio> #include<cstring> #includ ...
- [css] 自适应布局 移动端自适应
一.宽度自适应 三列布局左右固定.中间不固定或者两列布局,左边固定右边不固定 原文链接:http://www.cnblogs.com/2050/archive/2012/07/30/2614852.h ...
- mybatis动态SQL中的set标签的使用
set标记是mybatis提供的一个智能标记,我一般将其用在修改的sql中,例如以下情况: <update> update user <set> <if test=&qu ...
- 软技能:十步学习法 (zhuan)
http://www.gyzhao.me/2016/11/07/Ten-Step-Learning-Method/ ****************************************** ...
- control file sequential read 等待事件
可能的原因 control file sequential read Reading from the control file. This happens in many cases. For ex ...
- xcode黑科技
1多开模拟器 使用命令行: cd /Applications/Xcode1.app/Contents/Developer/Applications/&open -n Simulator.app ...