Python实例解析:Web页面元素的提取

来自CloudWiki
跳转至: 导航搜索

实例解析:Web页面元素提取

本实例,一个html形式的外部页面为输入对国家地理中文网的页面进行元素分析,提取、输出,并保存页面中包含的图片链接,重点在于理解自顶向上向下的设计思路。


http://www.ngchina.com.cn/

在页面上点击鼠标右键,选择查看页面源代码选项,即可查看描述页面的html代码,拷贝内容后将源代码保存文件index.html。

自动的从一个链接获取html页面是网络爬虫的功能,这里暂时使用手工方式,将首页保存为html文件,开始本实例的编写。

本实例功能可以整体分为如下四个步骤。

步骤一,读取保存在本地的html文件。

步骤二,解析并提取其中的图片链接。

步骤三,输出提取结果到屏幕。

步骤四,保存提取结果为文件。

根据上述步骤,写出主程序如下。

def main():
    inputfile  = 'nationalgeographic.html'
    outputfile = 'nationalgeographic-urls.txt'
    htmlLines = getHTMLlines(inputfile)
    imageUrls = extractImageUrls(htmlLines)
    showResults(imageUrls)
    saveResults(outputfile, imageUrls)


getHTMLlines()函数读取html文件内容,

def getHTMLlines(htmlpath):
    f = open(htmlpath, "r", encoding='utf-8')
    ls = f.readlines()
    f.close()
    return ls

extractImageUrls()是程序的核心,用于解析文件并提取图像的url。

def extractImageUrls(htmllist):
    urls = []
    for line in htmllist:
        if 'img' in line:
            url = line.split('src=')[-1].split('"')[1]
            if 'http' in url:
                urls.append(url)
    return urls

showResults函数将获取的链接输出到屏幕上。

def showResults(urls):
    count = 0
    for url in urls:
        print('第{:2}个URL:{}'.format(count, url))
        count += 1

saveResult保存结果到文件:

def saveResults(filepath, urls):
    f = open(filepath, "w")
    for url in urls:
        f.write(url+"\n")
    f.close()

然后调用main方法就可以运行啦!