300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Web页面html元素提取(图片链接) (python)

Web页面html元素提取(图片链接) (python)

时间:2019-05-10 03:41:46

相关推荐

Web页面html元素提取(图片链接) (python)

问题:Web页面html元素提取(图片链接) (python)

Web页面描述:

Web页面,一般是HTML页面,是Internet组织 信息的基础元素。Web页面元素提取是一类常见问题,在网络爬虫、浏览器等程序中有着不可或 缺的重要作用。

HTML指超文本标记语言,严格来说,HTML不是一种编程语言,而是一种对信息的标记语言, 对Web的内容、格式进行描述。

解决办法:

自动地从一个链接获取HTML页面是网络爬虫的功能,本实例功能可以整体分成如下4个步骤:

步骤1: 读取保存在本地的html文件;步骤2:解析并提取其中的图片链接;步骤3:输出提取结果到屏幕;步骤4:保存提取结果为文件。

具体实现

根据上述步骤,可以写出主程序如下。其中设置 了4个函数getHTMLlines()、extractImageUrls()、 showResults()和saveResults()分别对应上述4个步骤。

def main():inputfile="C:\\Users\\Jiyao\\Desktop\\link.html" #保存在本地的html网页链接名outputfile = 'C:\\Users\\Jiyao\\Desktop\\urls.txt' #期望存储的输出位置htmlLines = getHTMLlines(inputfile)imageUrls = extractImageUrls(htmlLines)showResults(imageUrls)saveResults(outputfile, imageUrls)

getHTMLlines()函数读取HTML文件并内容, 并将结果转换为一个分行列表,为了兼容不同编码,建议在open()函数中增加encoding字段,设 置采用UTF-8编码打开文件。代码如下。

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

extractImageUrls()是程序的核心,用于解析文 件并提取图像的URL。观察HTML可以发现,图 像采用img标签表示,例如:

<img title="photo story" src="//0122/20 180122042251164.jpg" width="968px" />

其中,<img开头是图像标签的特点,其中由src=所引导 的URL是这个图像的真实位置。每个URL都以http开头。 因此,可以通过字符串操作提取其中的图像链接。

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

showResults()函数将获取的链接输出到屏幕上,增加一 个计数变量提供更好用户体验,代码如下。

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

saveResults()保存结果到文件,代码如下。

def saveResults(filepath, urls):f = open(filepath, "w")for url in urls:f.write(url+"\n")f.close()#主函数if __name__ == '__main__':main()

运行结果:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。