?
当前位置:??编程语言>python

基于python实现的网络爬虫功能:自动抓取网页介绍

?
分享到:
????发布时间:2014-10-11??


????本文导语:?1. 网络爬虫的定义 网络爬虫,即Web Spider,是一个很形象的名字。把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。网络蜘蛛是通过网页的链接地址来寻找网页的。从网站某一个页面(通常是首页)开...

1. 网络爬虫的定义

? ? 网络爬虫,即Web Spider,是一个很形象的名字。互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。

网络蜘蛛是通过网页的链接地址来寻找网页的。网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止。如果把整个互联网当成一个网站,那么网络蜘蛛就可以用这个原理把互联网上所有的网页都抓取下来。这样看来,网络爬虫就是一个爬行程序,一个抓取网页的程序。网络爬虫的基本操作是抓取网页。


2. 浏览网页的过程

? ? 抓取网页的过程其实和读者平时使用IE浏览器浏览网页的道理是一样的。比如说你在浏览器的地址栏中输入 ? ?www.baidu.com ? ?这个地址。

打开网页的过程其实就是浏览器作为一个浏览的“客户端”,向服务器端发送了 一次请求,把服务器端的文件“抓”到本地,再进行解释、展现。

HTML是一种标记语言,用标签标记内容并加以解析和区分。浏览器的功能是将获取到的HTML代码进行解析,然后将原始的代码转变成我们直接看到的网站页面。


3. 基于python实现的网络爬虫功能

1). python获取html页面

其实,最基本的抓站,两句话就可以了:

import?urllib2
content?=?urllib2.urlopen('http://XXXX').read()

这样可以得到整个 html 文档,关键的问题是我们可能需要从这个文档中获取我们需要的有用信息,而不是整个文档。这就需要解析充满了各种标签的 html。


2. python爬虫抓取页面后解析html方法

python爬虫html解析库SGMLParser

Python 默认自带 HTMLParser 以及 SGMLParser 等等解析器,前者实在是太难用了,我就用 SGMLParser 写了一个示例程序:


import?urllib2
from?sgmllib?import?SGMLParser
?
class?ListName(SGMLParser):
def?__init__(self):
SGMLParser.__init__(self)
self.is_h4?=?""
self.name?=?[]
def?start_h4(self,?attrs):
self.is_h4?=?1
def?end_h4(self):
self.is_h4?=?""
def?handle_data(self,?text):
if?self.is_h4?==?1:
self.name.append(text)
?
content?=?urllib2.urlopen('http://169it.com/xxx.htm').read()
listname?=?ListName()
listname.feed(content)
for?item?in?listname.name:
print?item.decode('gbk').encode('utf8')

? 很简单,这里定义了一个叫做 ListName 的继承 SGMLParser 里面的方法。使用一个变量 is_h4 做标记判定 html 文件中的 h4 标签,如果遇到 h4 标签,则将标签内的内容加入List 变量 name 中。解释一下 start_h4() 和 end_h4() 函数,他们原型是 SGMLParser 中的

start_tagname(self,?attrs)
end_tagname(self)

tagname 就是标签名称,比如当遇到 <pre>,就会调用 start_pre,遇到 ,就会调用 end_pre。attrs 为标签的参数,以 [(attribute, value), (attribute, value), ...] 的形式传回。


python爬虫html解析库pyQuery

? ?pyquery 是 jquery 在 python 中的实现,能够以 jquery 的语法来操作解析 html 文档,十分方便。使用需要安装,easy_install pyquery 即可,或者 ubuntu

sudo?apt-get?install?python-pyquery

以下例子:

from?pyquery?import?PyQuery?as?pyq
doc=pyq(url=r'http://169it.com/xxx.html')
cts=doc('.market-cat')
?
for?i?in?cts:
print?'====',pyq(i).find('h4').text()?,'===='
for?j?in?pyq(i).find('.sub'):
print?pyq(j).text()?,
print?'n'

python爬虫html解析库BeautifulSoup

? ?有个头痛的问题是,大部分的网页都没有完全遵照标准来写,各种莫名其妙的错误令人想要找出那个写网页的人痛打一顿。为了解决这个问题,我们可以选择着名的 BeautifulSoup 来解析 html 文档,它具有很好的容错能力


  • 本站(WWW.169IT.COM)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.169IT.COM)站内文章除注明原创外,均为转载,整理或搜集自网络.欢迎任何形式的转载,转载请注明出处.
    转载请注明:文章转载自:[169IT-IT技术资讯]
    本文标题:基于python实现的网络爬虫功能:自动抓取网页介绍
相关文章推荐:
  • Python GUI编程:tkinter实现一个窗口并居中代码
  • python实现绘制树枝简单示例
  • Python3通过request.urlopen实现Web网页图片下载
  • Python3实现生成随机密码的方法
  • 在Python3中使用urllib实现http的get和post提交数据操作
  • python调用短信猫控件实现发短信功能实例
  • juqery的python实现:pyquery学习使用教程
  • Python实现多行注释的另类方法
  • 数据结构:图(有向图,无向图),在Python中的表示和实现代码示例
  • python 布尔操作实现代码
  • python实现的重启关机程序实例
  • Python中无限元素列表的实现方法
  • python 实现插入排序算法
  • python使用循环实现批量创建文件夹示例
  • python 实现文件的递归拷贝实现代码
  • python判断端口是否打开的实现代码
  • python实现哈希表
  • python冒泡排序算法的实现代码
  • python实现倒计时的示例
  • python实现排序算法
  • Python实现冒泡,插入,选择排序简单实例


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ?2012-2019,169IT.COM,E-mail:www_169it_com#163.com(请将#改为@)

    浙ICP备11055608号