python 网络爬虫初级实现代码

首先,我们来看一个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:DPythonHello.py’)

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

import reimport urllibdef getHtml(url): page = urllib.urlopen(url) html = page.read() return htmldef 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 += 1if __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.httpclientdef 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.bodyif __name__ == '__main__': Fetch('http://www.baidu.com')

登录后复制

urllib2的常见方法:

立即学习“Python免费学习笔记(深入)”;

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2535591.html

(0)
上一篇 2025年3月5日 22:59:57
下一篇 2025年3月5日 23:00:14

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 如何在Python中编写并发程序

    GIL 在python中,由于历史原因(gil),使得python中多线程的效果非常不理想.gil使得任何时刻python只能利用一个cpu核,并且它的调度算法简单粗暴:多线程中,让每个线程运行一段时间t,然后强行挂起该线程,继而去运行其他…

    编程技术 2025年3月5日
    200
  • Python 多线程抓取图片效率对比

    目的: 是学习python 多线程的工作原理,及通过抓取400张图片这种IO密集型应用来查看多线程效率对比 import requestsimport urlparseimport osimport timeimport threading…

    编程技术 2025年3月5日
    200
  • python文件操作相关知识点总结整理

    本文汇总了python文件操作相关知识点。分享给大家供大家参考,具体如下: 总是记不住API。昨晚写的时候用到了这些,但是没记住,于是就索性整理一下吧: python中对文件、文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块…

    编程技术 2025年3月5日
    200
  • Python 的描述符 descriptor详解

    python 在 2.2 版本中引入了descriptor(描述符)功能,也正是基于这个功能实现了新式类(new-styel class)的对象模型,同时解决了之前版本中经典类 (classic class) 系统中出现的多重继承中的 mr…

    编程技术 2025年3月5日
    200
  • python实现搜索本地文件信息写入文件的方法

    本文实例讲述了python实现搜索本地文件信息写入文件的方法。分享给大家供大家参考,具体如下: 主要功能: 在指定的盘符,如D盘,搜索出与用户给定后缀名(如:jpg,png)相关的文件,然后把搜索出来的信息(相关文件的绝对路径),存放到用户…

    2025年3月5日
    200
  • 12步教你理解Python装饰器

    通过下面的步骤让你由浅入深明白装饰器是什么。假定你拥有最基本的Python知识,本文阐述的东西可能对那些在工作中经常接触Python的人有很大的帮助。1、函数(Functions)在Python里,函数是用def关键字后跟一个函数名称和一个…

    编程技术 2025年3月5日
    200
  • python脚本设置系统时间的两种方法

    本文为大家分享了两种python脚本设置系统时间的方法,供大家参考,具体内容如下 第一种方法,使用Python设置系统时间,即给系统校时 #电脑时间用了一段时间后,系统时间不准了,想更新一下#在windows里面,更新系统时间,时常失败,而…

    编程技术 2025年3月5日
    200
  • python脚本设置超时机制系统时间的方法

    本文为大家介绍了python脚本设置系统时间的方法,一共有两种,其一是调用socket直接发送udp包到国家授时中心,其二是调用ntplib包。我在本地电脑ping 国家授时中心地址cn.pool.ntp.org有时出现丢包,然而,二者都没…

    2025年3月5日
    200
  • Python中方法链的使用方法

    方法链(method chaining)是面向对象的编程语言中的一种常见语法,可以让开发者在只引用对象一次的情况下,对同一个对象进行多次方法调用。举个例子: 假设我们有一个Foo类,其中包含有两个方法——bar和baz。 我们创建一个Foo…

    编程技术 2025年3月5日
    200
  • 教大家使用Python SqlAlchemy

    本文实例解析python sqlalchemy的使用方法,分享给大家供大家参考,具体内容如下 1.初始化连接 from sqlalchemy import create_enginefrom sqlalchemy.orm import se…

    编程技术 2025年3月5日
    200

发表回复

登录后才能评论