python 网络爬虫初级实现代码

 更新时间:2016年02月27日 23:05:32   作者:ACdreamers  
这篇文章主要介绍了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: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小程序编程实现一键自动整理文件解压文件

    这篇文章主要为大家介绍了Python小程序编程实现一键自动整理文件解压文件示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • python实现根据给定坐标点生成多边形mask的例子

    python实现根据给定坐标点生成多边形mask的例子

    今天小编就为大家分享一篇python实现根据给定坐标点生成多边形mask的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • Django 聚合查询及使用步骤

    Django 聚合查询及使用步骤

    本文详细介绍了Django中聚合查询的使用方法和步骤,包括aggregate()和annotate()两种聚合查询方式,以及F()和Q()查询的使用场景,文中通过具体代码示例解释了如何在Django项目中实现数据聚合,感兴趣的朋友跟随小编一起看看吧
    2024-09-09
  • Python模块_PyLibTiff读取tif文件的实例

    Python模块_PyLibTiff读取tif文件的实例

    今天小编就为大家分享一篇Python模块_PyLibTiff读取tif文件的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • Python3爬虫之urllib携带cookie爬取网页的方法

    Python3爬虫之urllib携带cookie爬取网页的方法

    今天小编就为大家分享一篇Python3爬虫之urllib携带cookie爬取网页的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • python中的import绝对导入与相对导入详解

    python中的import绝对导入与相对导入详解

    这篇文章主要介绍了python中的import绝对导入与相对导入详解,在使用python做一些简单项目时,import一般不会出现问题,但项目结构复杂时,import可能发生报错,需要的朋友可以参考下
    2023-11-11
  • 最新版 Windows10上安装Python 3.8.5的步骤详解

    最新版 Windows10上安装Python 3.8.5的步骤详解

    这篇文章主要介绍了最新版 Windows10上安装Python 3.8.5的步骤详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • Python导入模块的3种方式小结

    Python导入模块的3种方式小结

    本文主要介绍了Python导入模块的3种方式小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • 通过 Python 和 OpenCV 实现目标数量监控

    通过 Python 和 OpenCV 实现目标数量监控

    这篇文章主要介绍了如何通过 Python 和 OpenCV 实现目标数量监控,本文通过实例代码图文的形式给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01
  • Python matplotlib绘图风格详解

    Python matplotlib绘图风格详解

    从matplotlib的角度来说,绘图风格也算是图像类型的一部分,所以这篇文章小编想带大家了解一下Python中matplotlib的绘图风格,有需要的可以参考下
    2023-09-09

最新评论