网页抓取解密(先容如何利用Python和解析网页(一)_软件)
优采云 发布时间: 2021-09-30 07:08网页抓取解密(先容如何利用Python和解析网页(一)_软件)
对于搜索引擎、文件索引、文档转换、数据检索、站点备份或迁移等应用程序,通常使用网页解析(即HTML文件)。事实上,通过Python语言提供的各种模块,我们可以在不借助web服务器或web浏览器的情况下解析和处理HTML文档。本文将介绍如何使用Python抓取和解析网页。首先,我们介绍一个python模块,它可以通过在本地和web上打开HTML文档来帮助简化网页捕获。然后,我们讨论了如何使用python模块快速解析HTML文件中的数据,以便处理特定的内容,如链接、图像和cookie。最后,我们将给出一个常规HTML文件格式标记的示例。通过本例,您将发现使用Python处理HTML文件的内容非常简单
一、解析URL
通过python提供的urlparse模块,我们可以轻松地将URL分解为用于python HTML解析的组件,然后将这些组件重新组装为URL。当我们处理HTML文档时,这个函数非常方便
导入urlparsedparsedtuple=urlparse.urlparse(“;q=urlparse&;btnG=Google+Search”)unparsedURL=urlparse.urlparse((URLscheme,urlocation,URLpath,,'',''))newURL=urlparse.urljoin(unparsedURL,“/module-urlib2/request objects.html”)
函数urlparse(urlstring[,default_scheme[,allow_fragments]])用于将URL分解为不同的组件。它从urlstring获取URL并返回元组(scheme、netloc、path、参数、查询、片段)。注意Python爬行。返回的元组非常有用。例如,它可用于确定网络协议(HTTP、FTP等)、服务器地址、文件路径、网页音乐爬网等
函数urlunparse(tuple)用于将URL组件组装到urlpython网页中。在收到元组(scheme、netloc、path、parameters、python、web游戏、query、fragment)后,它将以正确的格式重建URL,以供python的其他HTML解析模块使用
函数urljoin(base,URL[,allow_fragments])用于拼接URL。它将第一个参数作为其基址,然后将其与第二个参数中的相对地址组合以形成匹配的URL地址。urljoin函数在处理位于同一位置的多个文件时特别有用,方法是将新文件名附加到URL基址。应该注意的是,如果基地址没有以字符/结尾,URL基地址的最右边部分将被此相对路径替换。例如,如果URL的基址为,而URL的相对地址为test.html,则这两个地址将组合在一起,而不是。如果要在此路径中保存结束目录,请确保URL基址以字符结尾/
以下是上述功能的具体使用示例:
Import urlparseurlscheme=“HTTP”urllocation=“”urlpath=“lib/module urlparse.HTML”modlist=(“urllib”、“urllib2”、“httplib”、“cgilib”)#在使用谷歌搜索python时,解析地址栏中URL的解析结果“解析结果”解析为“q=python&;btng=Google+search”)printparsedtuple#将组件解析为urlprint“Python文档页面的反解析URL”unparsedur=urlparse.urljoin((urlscheme,urlocation,urlpath,,'','',''))print“t”+unparsedur#将路径和新文件合并为新的urlprint“n通过拼接添加更多Python文档页面URL”modlist中的formod:newurl=urlparse.urljoin(unparsedur,“module-%s.html”%(MOD))print“t”+newurl#通过向路径添加子路径来形成新的urlprint“n通过拼接子路径生成Python文档页的URL”newurl=urlparse.urljoin(unparsedur,“module-urlib2/request objects.html”)print“t”+newurl
上述代码的执行结果如下:
使用Google搜索python时解析地址栏中URL的结果
('http'、'/search'web page grabber'、'、'、'HL=en&;q=Python&;btng=Google+search'、')反向解析Python文档页面的URL,通过拼接添加更多Python文档页面的URL,通过拼接子路径生成Python文档页面的URL
二、打开HTML文档,它描述了如何解析页面的URL。现在让我们解释如何通过URL打开网页。事实上,Python的urllib和urllib 2模块为我们提供了从URL打开和获取数据的能力,当然包括HTML文档
导入urlibu=urlib.urlopen(weburl)u=urlib.urlopen(localurl)buffer=u.read()print()打印“从%s.n读取%d字节的数据”(u.geturl_r(),len(buffer))
通过urlopen(URL[,data])打开HTML文档进行Python XML解析函数在urllib模块中,您必须提供文档的URL地址,包括文件名。函数urlopen不仅可以打开位于远程web服务器上的文件,还可以打开本地文件Python抓取网页,并返回类似文件的对象网页flash crawler。我们可以通过此函数从HTML文档读取数据反对
打开HTML文档后,我们可以像普通文件一样使用read([nbytes])、readLine()和readlines()函数来读取和操作文件。要读取整个HTML文档的内容,可以使用read()函数,该函数以字符串形式返回文件的内容
打开地址后,您可以使用geturl\ R()函数获取获取的网页的真实URL。这很有用,因为urlopen(或使用的opener对象)可能会伴随重定向。获取的网页URL可能与所需的网页URL不同
另一个常见函数是从urlopen返回的类文件对象中的info()函数。此函数可以返回与URL位置相关的元数据,如内容长度、内容类型等。下面通过更具体的示例介绍这些函数
导入urlibweburl=”“localurl=“index.HTML”#通过URL u=urlib.urlopen(weburl)buffer=u.read()print()打印“读取%d字节的数据。N来自%s”%(u.geturl\r(),len(buffer))#通过URL u=urlib.urlopen(localurl)buffer=u打开本地页面。read()print()打印“读取%d字节的数据。N来自%s”%(u.geturl\r()),len(缓冲区))
以上代码的运行结果如下:
日期:2009年6月26日星期五10:22:11 GMT服务器:Apache/2.>2.>9(Debian)DAV/2 SVN/1.>5.>1 mod_ssl/2.>9 OpenSSL/0.>8g mod_WSGI/2.>3python/2.>2Last修改:Thu,2009年6月25日09:44:54:800D-46780D-46780“接受范围:ByteContent长度:18151连接:closecontent类型:text/HTML从中读取18151字节的数据。内容类型:text/htmlcontent长度:865上次修改:Fri,2006年6月26日910:16:10 GMT从index.HTML读取865字节的数据。”
三、总结
适用于搜索引擎、文件索引、文档转换、数据检索、站点备份或迁移、网页解析(即HTML文件)等应用程序经常使用。事实上,通过Python语言提供的各种模块,我们可以在不借助web服务器或web浏览器的情况下解析和处理HTML文档。在本文中,我们介绍了一个Python模块,它可以帮助简化本地和web上HTML文档的打开。在下一篇文章中,我们将讨论如何使用Pyth在模块上快速解析HTML文件中的数据以处理特定内容,如链接、图像和cookie