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方法就可以运行啦!