`
liuxinglanyue
  • 浏览: 570594 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

利用Python抓取和解析网页(二)补充

阅读更多

五、为HTML文档中的属性值添加引号

  前面我们讨论了如果根据HTML解析器中的某种处理程序来解析HTML文件,可是有时候我们却需要使用所有的处理程序来处理HTML文档。值得庆幸的是,使用HTMLParser模块解析HTML文件的所有要素并不比处理链接或者图像难多少。

  import HTMLParser

  
import urllib

  
class parseAttrs(HTMLParser.HTMLParser):

  
def handle_starttag(self, tag, attrs):

  . . .

  attrParser 
= parseAttrs()

  attrParser.init_parser()

  attrParser.feed(urllib.urlopen(
"test2.html").read())

  这里,我们将讨论如何使用HTMLParser模块来解析HTML文件,从而为“裸奔”的属性值加上引号。首先,我们要定义一个新的HTMLParser类,以覆盖下面所有的处理程序来为属性值添加引号。

  handle_starttag(tag, attrs)

  handle_charref(name)

  handle_endtag(tag)

  handle_entityref(ref)

  handle_data(text)

  handle_comment(text)

  handle_pi(text)

  handle_decl(text)

  handle_startendtag(tag, attrs)

  我们还需要在parser类中定义一个函数来初始化用于存储解析好的数据的变量,同时还要定义另外一个函数来返回解析好的数据。

  定义好新的HTMLParser类之后,需要创建一个实例来返回HTMLParser对象。使用我们创建的init函数初始化该解析器,这样,我们就可以使用urllib.urlopen(url)打开HTML文档并读取该HTML文件的内容了。

  为了解析HTML文件的内容并给属性值添加引号,可以使用feed(data)函数将数据传递给HTMLParser对象。HTMLParser对象的feed函数将接收数据,并通过定义的HTMLParser对象对数据进行相应的解析。下面是一个具体的示例代码:

  import HTMLParser

  
import urllib

  
import sys

  
#定义HTML解析器

  
class parseAttrs(HTMLParser.HTMLParser):

  
def init_parser (self):

  self.pieces 
= []

  
def handle_starttag(self, tag, attrs):

  fixedAttrs 
= ""

  
#for name,value in attrs:

  
for name, value in attrs:

  fixedAttrs 
+= "%s=\"%s\" " % (name, value)

  self.pieces.append(
"<%s %s>" % (tag, fixedAttrs))

  
def handle_charref(self, name):

  self.pieces.append(
"&#%s;" % (name))

  
def handle_endtag(self, tag):

  self.pieces.append(
"" % (tag))

  
def handle_entityref(self, ref):

  self.pieces.append(
"&%s" % (ref))

  
def handle_data(self, text):

  self.pieces.append(text)

  
def handle_comment(self, text):

  self.pieces.append(
"" % (text))

  
def handle_pi(self, text):

  self.pieces.append(
"" % (text))

  
def handle_decl(self, text):

  self.pieces.append(
"" % (text))

  
def parsed (self):

  
return "".join(self.pieces)

  
#创建HTML解析器的实例

  attrParser 
= parseAttrs()

  
#初始化解析器数据

  attrParser.init_parser()

  
#把HTML文件传给解析器

  attrParser.feed(urllib.urlopen(
"test2.html").read())

  
#显示原来的文件内容

  
print "原来的文件\n========================"

  
print open("test2.html").read()

  
#显示解析后的文件

  
print "解析后的文件\n========================"

  
print attrParser.parsed()

  attrParser.close()

  我们还需要建立一个测试文件,名为test2.html,该文件内容可以从上述代码的运行结果看到,具体如下所示:

原来的文件
========================
<html>
<head>
<meta content="text/html; charset=utf-8"
http
-equiv="content-type"/>
<title>Web页面</title>
</head>
<body>
<H1>Web页面清单</H1>
<a href=http://www.python.org>Python网站</a>
<a href=test.html>本地页面</a>
<img SRC=test.jpg>
</body>
</html>

解析后的文件
========================
<html>
<head >
<meta content="text/html; charset=utf-8"
http
-equiv="content-type" ></meta>
<title >Web页面</title>
</head>
<body >
<h1 >Web页面清单</h1>
<a href="http://www.python.org" >Python网站</a>
<a href="test.html" >本地页面</a>
<img src="test.jpg" >
</body>
</html>

  六、小结

  对搜索引擎、文件索引、文档转换、数据检索、站点备份或迁移等应用程序来说,经常用到对网页(即HTML文件)的解析处理。事实上,通过Python语言提供的各种模块,我们无需借助Web服务器或者Web浏览器就能够解析和处理HTML文档。本文将详细介绍了如何使用Python模块来迅速解析在HTML文件中的数据,从而处理特定的内容,如链接、图像和Cookie等。同时,我们还给出了一个规范HTML文件的格式标签的例子,希望本文对您会有所帮助。

 

 

 

分享到:
评论

相关推荐

    Python 爬虫入门:使用 Requests 和 BeautifulSoup 实现基本网页数据抓取

    Python爬虫技术是当前数据抓取领域的热门技术之一,特别是在Python语言的广泛应用背景下,利用Python进行网络数据爬取已经成为了许多开发者和数据分析师的必备技能。本文主要介绍了如何使用Python中的Requests和...

    基于Python的动态网页评价爬虫算法.pdf

    此外,利用Python作为开发语言,也为后续的评论文本分析和爬虫软件开发提供了坚实的技术基础。 ### 参考文献 文档列出了一系列参考文献,这些文献涵盖了网络爬虫、数据挖掘、数据库技术等多个领域,为本研究提供了...

    用Python自动办公,做职场高手补充教程.docx

    本教程将介绍如何利用Python来自动化处理Word、Excel和PowerPoint等办公软件,以及Python在爬虫领域的应用,帮助你成为职场高手。 一、Python与Word自动化 1. `python-docx`库:这是Python中处理Word文档的主要...

    python爬取美女图片

    根据提供的文件内容,本文将详细解释如何利用Python进行网络爬虫操作来抓取特定网站上的美女图片,并且会对代码中的关键部分进行详细说明。 ### Python爬取美女图片 #### 一、准备工作 在开始之前,我们需要确保...

    使用Pythonrequests和BeautifulSoup开发爬虫。抓取汽车之家中,汽车的基本信息(车型,品牌,报价等_hy4.zip

    本篇文档主要讲解了如何利用Python编程语言中的requests库和BeautifulSoup库进行网络爬虫的开发,以便抓取“汽车之家”网站中的汽车基本信息,包括车型、品牌和报价等数据。 首先,我们必须了解requests库的基本...

    python爬虫实战项目开发源码资源.zip

    从基础的网页抓取、解析,到复杂的反爬虫机制应对、动态数据处理,再到数据存储和清洗,这一项目提供了完整的实战开发流程和示例代码。开发者通过学习和模仿这些案例,能够掌握网络爬虫开发的核心技能,并且能够应用...

    Python库 | scpscraper-0.2.3.tar.gz

    `scpscraper`可能包含了各种函数和类,帮助开发者高效地抓取和解析网页内容。 Python库通常以`.tar.gz`或`.whl`等格式分发,这是常见的源代码打包方式。`.tar.gz`是一种归档格式,它首先使用`tar`工具将文件打包,...

    Python 抓取数据存储到Redis中的操作

    这里我们将深入探讨如何使用Python抓取数据并将其存储到Redis的Hash数据类型中。 首先,我们需要导入必要的库,如`os`, `sys`, `requests`, `bs4`(BeautifulSoup)以及`redis`。`requests`库用于发送HTTP请求获取...

    图像采集功能模块设计:基于Python的验证码图片抓取与展示实现

    内容概要:本文档详细介绍了如何利用Python实现图像采集功能模块的设计,特别是针对网络验证码图片的抓取与展示。主要步骤包括从指定URL获取验证码图片,将图片保存到本地,并最终在操作界面上显示出来。文中提供了...

    Python之多线程爬虫抓取网页图片的示例代码

    本篇文章将详细讲解如何利用Python实现一个多线程爬虫来抓取网页上的图片。 首先,我们需要理解多线程的概念。在Python中,`threading`库提供了创建和管理线程的功能。通过并发执行任务,多线程可以在同一时间处理...

    Python爬虫开发与项目实战《PPT文档》

    Python爬虫开发与项目实战是IT领域中一个热门的话题,主要涉及如何利用Python语言来自动抓取、解析和处理互联网上的数据。在这个过程中,我们通常会涉及到以下几个关键知识点: 1. **Python基础知识**:首先,熟悉...

    Python爬虫爬取LOL皮肤图片

    在当前互联网技术高速发展的背景下,Python语言因其简洁易学的特性而...通过这些步骤,可以有效地利用Python爬虫技术来获取所需的网络资源。同时,应该意识到爬虫技术的合理应用对于网络环境的健康和安全具有重要意义。

    Python爬虫技术应用于KEGG生物组学数据库自动化数据采集

    内容概要:本文主要介绍了利用 Python 技术实现对 KEGG 数据库中大量 K 号(KEGG Orthology 编号)和 C 号(化合物编号)进行自动化的高效获取。重点阐述了 Python 爬虫工具包(如 BeautifulSoup 和 Selenium)及其...

    一些python用的note文档

    该文档可能会涉及到如何使用Python的基础库requests或更高级的库如Scrapy进行网页的请求和数据的抓取,数据解析的常用方法,以及如何在爬取过程中遵守robots.txt协议和处理反爬虫机制。 接下来,Django.md文档则...

    python爬虫之Amazon商品引流.rar

    本压缩包文件"python爬虫之Amazon商品引流.rar"很可能是关于如何利用Python编程语言来编写爬虫程序,针对Amazon电商平台进行数据抓取的教程或代码实例。 首先,我们需要理解Python爬虫的基本概念。Python爬虫是通过...

    Python爬取电影数据-进行可视化分析利用request爬取电影数据保存在csv文本,1.zip

    标题中的“Python爬取电影数据-进行可视化分析利用request爬取电影数据保存在csv文本,1.zip”表明这个压缩包包含了一个使用Python编程语言进行网络爬虫的数据获取过程,目标是抓取电影相关的数据,并进行了可视化...

    Python爬虫教程+游戏+框架全套源码课件+96套视频教

    比如,可以利用Python模拟用户操作,实现自动挂机、自动对战等。这需要掌握如selenium、pyautogui等库,它们能够模拟键盘和鼠标操作,实现对游戏界面的控制。 在框架应用方面,Python有多个成熟的爬虫框架,如...

    Python库 | spiderlibs-0.0.13-py3.6.egg

    在Python中,开发网络爬虫经常涉及到像BeautifulSoup、Scrapy这样的库,它们提供了抓取网页内容、解析HTML和XML、处理网络请求等功能。因此,`spiderlibs`可能包含了一些定制化的工具,帮助开发者更高效地构建和运行...

    酷安用户数据爬虫案例APythonsampletogetalluserdataofCoolApk.zip

    随后,利用Python的数据解析工具对获取的数据进行解析,提取出关键的用户信息,并将这些信息存储到适当的媒介中,如数据库或者本地文件。 接下来,探讨爬虫开发中可能遇到的法律和道德问题。虽然爬虫技术非常强大,...

Global site tag (gtag.js) - Google Analytics