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

利用Python抓取和解析网页(一)

阅读更多

对搜索引擎、文件索引、文档转换、数据检索、站点备份或迁移等应用程序来说,经常用到对网页(即HTML文件)的解析处理。事实上,通过Python语言提供的各种模块,我们无需借助Web服务器或者Web浏览器就能够解析和处理HTML文档。本文将详细介绍如何利用Python抓取和解析网页。首先,我们介绍一个可以帮助简化打开位于本地和Web上的HTML文档的Python模块,然后,我们论述如何使用Python模块来迅速解析在HTML文件中的数据,从而处理特定的内容,如链接、图像和Cookie等。最后,我们会给出一个规整HTML文件的格式标签的例子,通过这个例子您会发现使用python处理HTML文件的内容是非常简单的一件事情。

  一、解析URL

  通过Python所带的urlparse模块,我们能够轻松地把URL分解成元件,之后,还能将这些元件重新组装成一个URL。当我们处理HTML 文档的时候,这项功能是非常方便的。

 

import urlparse

  parsedTuple = urlparse.urlparse(

  "http://www.google.com/search?

  hl=en&q=urlparse&btnG=Google+Search")

  unparsedURL = urlparse.urlunparse((URLscheme, \

  URLlocation, URLpath, '', '', ''))

  newURL = urlparse.urljoin(unparsedURL,

  "/module-urllib2/request-objects.html")

 函数urlparse(urlstring [, default_scheme [, allow_fragments]])的作用是将URL分解成不同的组成部分,它从urlstring中取得URL,并返回元组 (scheme, netloc, path, parameters, query, fragment)。注意,返回的这个元组非常有用,例如可以用来确定网络协议(HTTP、FTP等等 )、服务器地址、文件路径,等等。

 

  函数urlunparse(tuple)的作用是将URL的组件装配成一个URL,它接收元组(scheme, netloc, path, parameters, query, fragment)后,会重新组成一个具有正确格式的URL,以便供Python的其他HTML解析模块使用。

  函数urljoin(base, url [, allow_fragments]) 的作用是拼接URL,它以第一个参数作为其基地址,然后与第二个参数中的相对地址相结合组成一个绝对URL地址。函数urljoin在通过为URL基地址附加新的文件名的方式来处理同一位置处的若干文件的时候格外有用。需要注意的是,如果基地址并非以字符/结尾的话,那么URL基地址最右边部分就会被这个相对路径所替换。比如,URL的基地址为Http://www.testpage.com/pub,URL的相对地址为test.html,那么两者将合并成http://www.testpage.com/test.html,而非http://www.testpage.com/pub/test.html。如果希望在该路径中保留末端目录,应确保URL基地址以字符/结尾。

  下面是上面几个函数的详细一点的用法举例:

 

import urlparse

  URLscheme = "http"

  URLlocation = "www.python.org"

  URLpath = "lib/module-urlparse.html"

  modList = ("urllib", "urllib2", \

  "httplib", "cgilib")

  #将地址解析成组件

  print "用Google搜索python时地址栏中URL的解析结果"

  parsedTuple = urlparse.urlparse(

  "http://www.google.com/search?

  hl=en&q=python&btnG=Google+Search")

  print parsedTuple

  #将组件反解析成URL

  print "\反解析python文档页面的URL"

  unparsedURL = urlparse.urlunparse( \

  (URLscheme, URLlocation, URLpath, '', '', ''))

  print "\t" + unparsedURL

  #将路径和新文件组成一个新的URL

  print "\n利用拼接方式添加更多python文档页面的URL"

  for mod in modList:

  newURL = urlparse.urljoin(unparsedURL, \

  "module-%s.html" % (mod))

  print "\t" + newURL

  #通过为路径添加一个子路径来组成一个新的URL

  print "\n通过拼接子路径来生成Python文档页面的URL"

  newURL = urlparse.urljoin(unparsedURL,

  "module-urllib2/request-objects.html")

  print "\t" + newURL

  上述代码的执行结果如下所示:

  用Google搜索python时地址栏中URL的解析结果

 

 ('http', 'www.google.com', '/search', '',

  'hl=en&q=python&btnG=Google+Search', '')

  反解析python文档页面的URL

  http://www.python.org/lib/module-urlparse.html

  利用拼接方式添加更多python文档页面的URL

  http://www.python.org/lib/module-urllib.html

  http://www.python.org/lib/module-urllib2.html

  http://www.python.org/lib/module-httplib.html

  http://www.python.org/lib/module-cgilib.html

  通过拼接子路径来生成Python文档页面的URL

  http://www.python.org/lib/module-urllib2/request-objects.html

 

   二、打开HTML文档

  上面介绍了如何解析页面的URL,现在开始讲解如何通过URL打开一个网页。实际上,Python所带的urllib和urllib2这两个模块为我们提供了从URL打开并获取数据的功能,当然,这包括HTML文档。

 

 import urllib

  u = urllib.urlopen(webURL)

  u = urllib.urlopen(localURL)

  buffer = u.read()

  print u.info()

  print "从%s读取了%d 字节数据.\n" % (u.geturl(),len(buffer) )

  若要通过urllib模块中的urlopen(url [,data])函数打开一个HTML文档,必须提供该文档的URL地址,包括文件名。函数urlopen不仅可以打开位于远程web服务器上的文件,而且可以打开一个本地文件,并返回一个类似文件的对象,我们可以通过该对象从HTML文档中读出数据。

 

  一旦打开了HTML文档,我们就可以像使用常规文件一样使用read([nbytes])、readline()和readlines()函数来对文件进行读操作。若要读取整个HTML文档的内容的话,您可以使用read()函数,该函数将文件内容作为字符串返回。

  打开一个地址之后,您可以使用geturl()函数取得被获取网页的真正的URL。这是很有用的,因为urlopen(或使用的opener对象)也许会伴随一个重定向。获取的网页URL也许和要求的网页URL不一样。

  另一个常用的函数是位于从urlopen返回的类文件对象中的info()函数,这个函数可以返回URL位置有关的元数据,比如内容长度、内容类型,等等。下面通过一个较为详细的例子来对这些函数进行说明。

 

import urllib

  webURL = "http://www.python.org"

  localURL = "index.html"

  #通过URL打开远程页面

  u = urllib.urlopen(webURL)

  buffer = u.read()

  print u.info()

  print "从%s读取了%d 字节数据.\n" % (u.geturl(),len(buffer) )

  #通过URL打开本地页面

  u = urllib.urlopen(localURL)

  buffer = u.read()

  print u.info()

  print "从%s读取了%d 字节数据.\n" % (u.geturl(),len(buffer) )

  上面代码的运行结果如下所示:

 

 Date: Fri, 26 Jun 2009 10:22:11 GMT

  Server: Apache/2.2.9 (Debian) DAV/2 SVN/1.5.1 mod_ssl/2.2.9 OpenSSL/0.9.8g mod_wsgi/2.3 Python/2.5.2

  Last-Modified: Thu, 25 Jun 2009 09:44:54 GMT

  ETag: "105800d-46e7-46d29136f7180"

  Accept-Ranges: bytes

  Content-Length: 18151

  Connection: close

  Content-Type: text/html

  从http://www.python.org读取了18151 字节数据.

  Content-Type: text/html

  Content-Length: 865

  Last-modified: Fri, 26 Jun 2009 10:16:10 GMT

  从index.html读取了865 字节数据.
 三、小结

  对搜索引擎、文件索引、文档转换、数据检索、站点备份或迁移等应用程序来说,经常用到对网页(即HTML文件)的解析处理。事实上,通过Python语言提供的各种模块,我们无需借助Web服务器或者Web浏览器就能够解析和处理HTML文档。本文中,我们介绍了一个可以帮助简化打开位于本地和Web上的HTML文档的Python模块。在下篇中,我们将论述如何使用Python模块来迅速解析在HTML文件中的数据,从而处理特定的内容,如链接、图像和Cookie等。

来自:http://www.webjx.com/program/zonghe-14189_2.html

分享到:
评论

相关推荐

    python做网络爬虫

    通过Python语言提供的各种模块,我们无需借助Web服务器或者Web浏览器就能够解析和处理HTML文档。本文将详细介绍如何利用Python抓取和解析网页

    python2网页图片爬取工具

    利用python抓取网络图片的步骤: 1.根据给定的网址获取网页源代码 2.利用正则表达式把源代码中的图片地址过滤出来 3.根据过滤出来的图片地址下载网络图片

    Python爬虫作业报告:怎么利用Python写益智类游戏.docx

    该程序使用了Requests库和BeautifulSoup库来获取网页源代码和解析HTML标签。具体的爬虫流程如下: 1. 使用Requests库发送HTTP请求,获取网页源代码。 2. 使用BeautifulSoup库解析HTML标签,获取商品信息。 3. 将...

    详解Python爬虫技术,运用爬虫技术抓取数据的步骤解析.docx

    Python爬虫是一种自动化抓取互联网信息的技术,适用于各种任务和行业,例如: - 网站数据爬取:可以爬取特定网站的数据,如新闻、股票数据等。例如,在数据分析领域,可以通过Python爬虫自动获取股票价格,利用数据...

    Python爬虫算法-谷歌内部资料

    Python爬虫是指利用Python语言编写的网络爬虫程序,用于从互联网上抓取信息、数据或者内容。通常情况下,Python爬虫会利用第三方库如Requests、BeautifulSoup、Scrapy等来实现网页请求、数据解析和存储等功能。 ...

    Python利用BeautifulSoup解析Html的方法示例

    BeautifulSoup是python的一个库,最主要的功能是从网页抓取数据。下面这篇文章主要给大家介绍了关于Python利用BeautifulSoup解析Html的方法示例,文中通过示例代码介绍的非常详细,需要的朋友们下面跟着小编来一起...

    Python基础应用实例-爬取

    网络爬虫,又称为网页蜘蛛,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。...利用Python编程语言及相关的爬虫技术,我们可以轻松地抓取这些音乐数据,并进行深入的分析,为音乐产业的发展提供有力支持。

    Python实现网页截图(PyQT5)过程解析

    1:完成窗口设置,利用PyQT5 QWebEngineView加载网页地址,待网页加载完成后,调用check_pag; class MainWindow(QMainWindow): def __init__(self, parent=None): super(MainWindow, self).__init__(parent) ...

    Python中利用xpath解析HTML的方法

    本篇文章主要介绍了Python中利用xpath解析HTML的方法,利用其lxml.html的xpath对html进行分析,获取抓取信息,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    利用爬虫抓取网络图片.zip

    爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL...

    Python爬虫基础知识

    Python爬虫是利用Python编程语言编写的一种自动化工具,用于从互联网上抓取和收集数据。通过模拟浏览器行为发送网络请求,爬虫可以获取网页内容并提取所需信息。为了有效抓取数据,爬虫开发者通常会使用诸如requests...

    【Python爬虫】 基于 urllib 抓取指定贴吧的指定页的数据,保存到本地文件

    此资源是一个基于Python的爬虫脚本,利用urllib库抓取指定贴吧的指定页数据,并将抓取到的内容保存到本地文件中。该脚本可以帮助用户快速获取贴吧中的帖子标题、内容、发布时间等信息,并可以用于数据分析、内容提取...

    基于Python的二手车爬虫数据可视化分析设计

    抓取的网页内容传入lxml模块的etree对象HTML方法通过xpath解析DOM树,不过二手车的关键数据比如二手车价格,汽车表显里程数字采用了字体文件加密,这里我们只能随机生成一个价格用于演示程序的完整运行,如果想破解...

    利用Python编程爬虫搜集微博平台上关于大学生网课的评论.zip

    使用SPSS、机器学习、自然语言处理等方法,对收集到的文本数据进行分词、数据清洗、词频统计和聚类分析。最后根据所得到的数据进行以及分析,发现目前在线教学 中学生体验的现状、趋势以及一些待解决的问题。 爬虫...

    python爬虫的概要介绍与分析

    Python爬虫是一种广泛应用的数据抓取技术,它利用Python编写的程序自动从互联网上搜集大量网页信息,并将其结构化存储以便进一步分析和处理。以下是关于Python爬虫学习和实践涉及的相关资源概览: 在Python爬虫的...

    爬虫+Python爬虫案例+Python技术+案例分析

    在这个案例中,我们将探索如何使用Python编写一个简单的爬虫程序,用于从网络上抓取数据。我们将以一个提供公开API的新闻网站为例,通过分析其API返回的数据结构,编写代码来获取并保存新闻文章的标题和链接。 为...

    毕业设计,基于Python+Django+MySql开发的二手车爬虫数据可视化分析,内含Python完整源代码,数据库脚本

    抓取的网页内容传入lxml模块的etree对象HTML方法通过xpath解析DOM树,不过二手车的关键数据比如二手车价格,汽车表显里程数字采用了字体文件加密,这里我们只能随机生成一个价格用于演示程序的完整运行,如果想破解...

    基于python的1024爬虫,可爬下1024的文章和图片放到当前目录上

    基于Python的1024爬虫是一个功能强大的工具,可以从1024网站上抓取文章和图片并保存到本地目录。以下是对该爬虫的一个详细说明: 1. 爬虫使用Python编写,利用了requests库发送HTTP请求,BeautifulSoup库解析HTML页面,...

    利用Python网络爬虫对京东商城中指定商品下的用户评论进行爬取,对数据预处理操作后进行文本情感分析并可视化显示。.zip

    爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL...

Global site tag (gtag.js) - Google Analytics