python 网络爬虫初级实现代码


Posted in Python onFebruary 27, 2016

首先,我们来看一个Python抓取网页的库:urllib或urllib2。

那么urllib与urllib2有什么区别呢?
可以把urllib2当作urllib的扩增,比较明显的优势是urllib2.urlopen()可以接受Request对象作为参数,从而可以控制HTTP Request的header部。
做HTTP Request时应当尽量使用urllib2库,但是urllib.urlretrieve()函数以及urllib.quote等一系列quote和unquote功能没有被加入urllib2中,因此有时也需要urllib的辅助。

urllib.open()这里传入的参数要遵循一些协议,比如http,ftp,file等。例如:

urllib.open('http://www.baidu.com')
urllib.open('file:D\Python\Hello.py')

现在有一个例子,下载一个网站上所有gif格式的图片。那么Python代码如下:

import re
import urllib

def getHtml(url):
 page = urllib.urlopen(url)
 html = page.read()
 return html

def getImg(html):
 reg = r'src="(.*?\.gif)"'
 imgre = re.compile(reg)
 imgList = re.findall(imgre,html)
 print imgList
 cnt = 1
 for imgurl in imgList:
  urllib.urlretrieve(imgurl,'%s.jpg' %cnt)
  cnt += 1

if __name__ == '__main__':
 html = getHtml('http://www.baidu.com')
 getImg(html)

根据上面的方法,我们可以抓取一定的网页,然后提取我们所需要的数据。

实际上,我们利用urllib这个模块来做网络爬虫效率是极其低下的,下面我们来介绍Tornado Web Server。
Tornado web server是使用Python编写出来的一个极轻量级、高可伸缩性和非阻塞IO的Web服务器软件,著名的Friendfeed网站就是使用它搭建的。Tornado跟其他主流的Web服务器框架(主要是Python框架)不同是采用epoll非阻塞IO,响应快速,可处理数千并发连接,特别适用用于实时的Web服务。

用Tornado Web Server来抓取网页效率会比较高。
从Tornado的官网来看,还要安装backports.ssl_match_hostname,官网如下:

http://www.tornadoweb.org/en/stable/

import tornado.httpclient

def Fetch(url):
 http_header = {'User-Agent' : 'Chrome'}
 http_request = tornado.httpclient.HTTPRequest(url=url,method='GET',headers=http_header,connect_timeout=200,request_timeout=600)
 print 'Hello'
 http_client = tornado.httpclient.HTTPClient()
 print 'Hello World'

 print 'Start downloading data...'
 http_response = http_client.fetch(http_request)
 print 'Finish downloading data...'

 print http_response.code

 all_fields = http_response.headers.get_all()
 for field in all_fields:
  print field

 print http_response.body

if __name__ == '__main__':
 Fetch('http://www.baidu.com')

urllib2的常见方法:

(1)info() 获取网页的Header信息

(2)getcode() 获取网页的状态码

(3)geturl() 获取传入的网址

(4)read() 读取文件的内容

Python 相关文章推荐
Python中解析JSON并同时进行自定义编码处理实例
Feb 08 Python
利用一个简单的例子窥探CPython内核的运行机制
Mar 30 Python
python实现的用于搜索文件并进行内容替换的类实例
Jun 28 Python
详谈python中冒号与逗号的区别
Apr 18 Python
使用python3+xlrd解析Excel的实例
May 04 Python
通过python顺序修改文件名字的方法
Jul 11 Python
Python 访问限制 private public的详细介绍
Oct 16 Python
python3实现微型的web服务器
Sep 03 Python
python基于K-means聚类算法的图像分割
Oct 30 Python
使用pyhon绘图比较两个手机屏幕大小(实例代码)
Jan 03 Python
Scrapy项目实战之爬取某社区用户详情
Sep 17 Python
python中四舍五入的正确打开方式
Jan 18 Python
Python数据库的连接实现方法与注意事项
Feb 27 #Python
学习python之编写简单简单连接数据库并执行查询操作
Feb 27 #Python
学习python之编写简单乘法口诀表实现代码
Feb 27 #Python
学习python 之编写简单乘法运算题
Feb 27 #Python
python学习之编写查询ip程序
Feb 27 #Python
用python写的一个wordpress的采集程序
Feb 27 #Python
python结合shell查询google关键词排名的实现代码
Feb 27 #Python
You might like
phpmyadmin 访问被拒绝的真实原因
2009/06/15 PHP
php验证是否是md5编码的简单代码
2014/04/01 PHP
PHP中创建图像并绘制文字的例子
2014/11/19 PHP
使用Codeigniter重写insert的方法(推荐)
2017/03/23 PHP
PHP实现小程序批量通知推送
2018/11/27 PHP
JSON 学习之完全手册 图文
2007/05/29 Javascript
一个cssQuery对象 javascript脚本实现代码
2009/07/21 Javascript
JavaScript 盒模型 尺寸深入理解
2012/12/31 Javascript
JS验证身份证有效性示例
2013/10/11 Javascript
javascript页面加载完执行事件代码
2014/02/11 Javascript
JS 新增Cookie 取cookie值 删除cookie 举例详解
2014/10/10 Javascript
javascript面向对象快速入门实例
2015/01/13 Javascript
javascript中indexOf技术详解
2015/05/07 Javascript
JQuery删除DOM节点的方法
2015/06/11 Javascript
Vue 进阶教程之v-model详解
2017/05/06 Javascript
JS运动特效之任意值添加运动的方法分析
2018/01/24 Javascript
vue-cli与webpack处理静态资源的方法及webpack打包的坑
2018/05/15 Javascript
vue中使用element ui的弹窗与echarts之间的问题详解
2019/10/25 Javascript
Vue全局使用less样式,组件使用全局样式文件中定义的变量操作
2020/10/21 Javascript
SpringBoot在yml配置文件中配置druid的操作
2020/11/16 Javascript
python实现支持目录FTP上传下载文件的方法
2015/06/03 Python
python、PyTorch图像读取与numpy转换实例
2020/01/13 Python
Pycharm安装第三方库失败解决方案
2020/11/17 Python
中国宠物用品商城:E宠商城
2016/08/27 全球购物
Servlet的生命周期
2013/08/25 面试题
农民入党思想汇报
2014/01/03 职场文书
优秀团员个人事迹材料
2014/01/29 职场文书
毕业班联欢会主持词
2014/03/27 职场文书
爱祖国演讲稿
2014/05/04 职场文书
厕所文明标语
2014/06/11 职场文书
乡镇安全生产目标责任书
2014/07/23 职场文书
乡镇群众路线整改落实情况汇报
2014/10/28 职场文书
《爱的教育》读书心得
2014/11/08 职场文书
九寨沟导游词
2015/02/02 职场文书
手术室护士个人总结
2015/02/13 职场文书
2015年“公民道德宣传日”活动方案
2015/05/06 职场文书