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

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

Web页面描述:

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

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

解决办法:

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

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

具体实现

  1. 根据上述步骤,可以写出主程序如下。其中设置 了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)
  1. getHTMLlines()函数读取HTML文件并内容, 并将结果转换为一个分行列表,为了兼容不同编码,建议在open()函数中增加encoding字段,设 置采用UTF-8编码打开文件。代码如下。
def getHTMLlines(htmlpath):f = open(htmlpath, "r", encoding='utf-8')ls = f.readlines()f.close()return ls
  1. extractImageUrls()是程序的核心,用于解析文 件并提取图像的URL。观察HTML可以发现,图 像采用img标签表示,例如:
   <img title="photo story" src="http://image.nationalgeographic.com.cn/2018/0122/20 180122042251164.jpg" width="968px" />

其中,

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
  1. showResults()函数将获取的链接输出到屏幕上,增加一 个计数变量提供更好用户体验,代码如下。
def showResults(urls):count = 0for url in urls:print('第{:2}个URL:{}'.format(count, url))count += 1
  1. saveResults()保存结果到文件,代码如下。
def saveResults(filepath, urls):f = open(filepath, "w")for url in urls:f.write(url+"\n")f.close()#主函数
if __name__ == '__main__':main()

运行结果:
在这里插入图片描述


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部