【Pyhton】 网络爬虫初级

【本文原创于Paul的博客园技术博客。】

【本文欢迎转载,转载请以链接形式注明出处。】

【本博客所有文章都经博主精心整理,请尊重我的劳动成果。】

【Pyhton】
 网络爬虫初级

首先,我们来看一个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代码如下:


 1 import re
2 import urllib
3
4 def getHtml(url):
5 page = urllib.urlopen(url)
6 html = page.read()
7 return html
8
9 def getImg(html):
10 reg = r‘src="(.*?\.gif)"‘
11 imgre = re.compile(reg)
12 imgList = re.findall(imgre,html)
13 print imgList
14 cnt = 1
15 for imgurl in imgList:
16 urllib.urlretrieve(imgurl,‘%s.jpg‘ %cnt)
17 cnt += 1
18
19 if __name__ == ‘__main__‘:
20 html = getHtml(‘http://www.baidu.com‘)
21 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/


 1 import tornado.httpclient
2
3 def Fetch(url):
4 http_header = {‘User-Agent‘ : ‘Chrome‘}
5 http_request = tornado.httpclient.HTTPRequest(url=url,method=‘GET‘,headers=http_header,connect_timeout=200,request_timeout=600)
6 print ‘Hello‘
7 http_client = tornado.httpclient.HTTPClient()
8 print ‘Hello World‘
9
10 print ‘Start downloading data...‘
11 http_response = http_client.fetch(http_request)
12 print ‘Finish downloading data...‘
13
14 print http_response.code
15
16 all_fields = http_response.headers.get_all()
17 for field in all_fields:
18 print field
19
20 print http_response.body
21
22 if __name__ == ‘__main__‘:
23 Fetch(‘http://www.baidu.com‘)

urllib2的常见方法:

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

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

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

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

【Pyhton】 网络爬虫初级

时间: 2024-11-11 23:45:31

【Pyhton】 网络爬虫初级的相关文章

2018用Python写网络爬虫(视频+源码+资料)

课程目标实现Python写网络爬虫入门适用人群数据零基础爱好者,职场新人 ,在校大学生课程简介1.基本Http请求以及验证方式分析 2.Python用于处理Html格式数据beautifulsoup模块3.Pyhton的requests模块的使用并实现爬取B站.网易云.微博.内涵段子等网站4.异步IO模块的使用,如:asyncio.gevent.aiohttp.twisted.torando 5.自定义异步IO模块 6.Scrapy框架的使用以及应用 下载地址:百度网盘 原文地址:http://

爬虫学习 Python网络爬虫第三弹《爬取get请求的页面数据》

爬虫学习 Python网络爬虫第三弹<爬取get请求的页面数据> 一.urllib库 urllib是Python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求.其常被用到的子模块在Python3中的为urllib.request和urllib.parse,在Python2中是urllib和urllib2. 二.由易到难的爬虫程序: 1.爬取百度首页面所有数据值 1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 #导包 4

简谈-网络爬虫的几种常见类型

众所周知,网络爬虫(或称为网络爬虫.网络蜘蛛.机器人)是搜索引擎最上游的一个模块,是负责搜索引擎内容索引的第一关. 很多人为了提高自己网站的索引量,都是去网上随便找一些爬虫工具来使用.但是很多人不知道,这些抓取网站的小爬虫是有各种各样的不同性格的. 常见的优秀网络爬虫有以下几种类型: 1.批量型网络爬虫:限制抓取的属性,包括抓取范围.特定目标.限制抓取时间.限制数据量以及限制抓取页面,总之明显的特征就是受限: 2.增量型网络爬虫(通用爬虫):与前者相反,没有固定的限制,无休无止直到抓完所有数据.

[No000090]微信公众号网络爬虫接口分析1

一直想做个公众号的网络爬虫,网上的好多接口都依赖于"瘦狗",不过微信接口一直在变,现在"瘦狗"也只允许查看10条历史记录,所以今天趁着下雨,研究了一下apk内部的东西,但是怕微信又改,我透漏的不能太多,有兴趣可以私下交流. 从微信上复制出来的url:https://mp.weixin.qq.com/mp/getmasssendmsg?__biz=MzI4OTA5MDgxNw==#wechat_webview_type=1&wechat_redirect 用浏

基于Nutch+Hadoop+Hbase+ElasticSearch的网络爬虫及搜索引擎

网络爬虫架构在Nutch+Hadoop之上,是一个典型的分布式离线批量处理架构,有非常优异的吞吐量和抓取性能并提供了大量的配置定制选项.由于网络爬虫只负责网络资源的抓取,所以,需要一个分布式搜索引擎,用来对网络爬虫抓取到的网络资源进行实时的索引和搜索. 搜 索引擎架构在ElasticSearch之上,是一个典型的分布式在线实时交互查询架构,无单点故障,高伸缩.高可用.对大量信息的索引与搜索都可以在近 乎实时的情况下完成,能够快速实时搜索数十亿的文件以及PB级的数据,同时提供了全方面的选项,可以对

网络爬虫技术入门_Python基础与爬虫技术

Python基础与爬虫技术  课程学习地址:http://www.xuetuwuyou.com/course/195 课程出自学途无忧网:http://www.xuetuwuyou.com 课程简介 本作为一种便捷地收集网上信息并从中抽取出可用信息的方式,网络爬虫技术变得越来越有用.使用Python这样的简单编程语言,你可以使用少量编程技能就可以爬取复杂的网站. <Python 基础与爬虫技术>讲解了从静态页面爬取数据的方法以及使用缓存来管理服务器负载的方法.此外,本课程还介绍了如何使用AJA

网络爬虫小案例_2017/3/10

今晚,了解了一下网络爬虫,那么什么是网络爬虫呢? 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常被称为网页追逐者),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本,已被广泛应用于互联网领域.搜索引擎使用网络爬虫抓取Web网页.文档甚至图片.音频.视频等资源,通过相应的索引技术组织这些信息,提供给搜索用户进行查询.网络爬虫也为中小站点的推广提供了有效的途径,网站针对搜索引擎爬虫的优化曾风靡一时. 网络爬虫的基本工作流程如下:     1.首先选取一部分精心挑选的种子U

使用网络爬虫的一丝心得

因为参与了创新计划,所以懵懵懂懂的接触到了网络爬虫. 爬数据使用工具,因此了解到Python.asp.net等可以用来抓数据. 想想在学习.net的时候根本没有想到会使用在这个上面--书本上的知识都是死的,那学习的基础知识只能通过不断的拓展使用领域才能在更好的得到深化.应用! 进入一个陌生的领域,从入门到精通的路真的是需要用汗水积累起来的--没有真正的天才,只有自感聪明的蠢材.(自我审视) 有句话说的特别的好:"世界上两种聪明的人:一种是从来不认为自己聪明的聪明人:而另一种是自以为自己很聪明的'

网络爬虫之selenium(综述)

   现阶段网络爬虫的工具主要是有scrapy.selenium(第二版)等.总的来说各有好处,scrapy最大 的好处是爬取的速度快而selenium的好处是能爬去的网站种类多.详细点的解释是:scrapy在爬取网页时不 用点击开页面(selenium似乎需要页面全部加载完才可以查找定位),selenium可以爬取动态网页和静态网页 (模拟浏器操作)而scrapy可以很顺利的爬取静态网页(但是很难或者不能爬取动态网页).由于爬取知网 的需要,本人学习了selenium,现分享一下个人的心得(如