python 网络爬虫初级实现代码

python 网络爬虫初级实现代码,第1张

概述首先,我们来看一个Python抓取网页的库:urllib或urllib2。那么urllib与urllib2有什么区别呢?

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

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

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

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

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

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)

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

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

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

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

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的常见方法:@H_403_1@

@H_403_1@

(1)info() 获取网页的header信息@H_403_1@

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

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

(4)read() 读取文件的内容
@H_403_1@ 总结

以上是内存溢出为你收集整理的python 网络爬虫初级实现代码全部内容,希望文章能够帮你解决python 网络爬虫初级实现代码所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1204592.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-04
下一篇2022-06-04

发表评论

登录后才能评论

评论列表(0条)

    保存