python完成网页下载(包括图片和css)

该博客介绍了一个Python程序,用于下载网页内容并同时抓取和保存页面中的CSS文件和图片。通过BeautifulSoup库解析HTML,找到链接的CSS和图片资源,然后替换为本地路径,最后将整个页面内容写入到一个HTML文件中。此外,程序还创建了必要的文件夹来存储下载的CSS和图片资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import urllib2
import os
from bs4 import BeautifulSoup 
import re
siteUrls = " "

url = "http://www.sina.com.cn"
def getContent(url):
	content = urllib2.urlopen(url).read()
	content = writeCss(url,content)
	content = writefileName(url,content)
	fileNames = re.findall(r'/[^\?]*\?([^/|^\?]*)$',url)
	fileName = fileNames[0]
	print fileName
	f = file(fileName+".html",'w')
	f.write(content)
	f.close()

def writeCss(url,content):
	soup = BeautifulSoup(content)
	csss = soup.findAll('link',attrs={'type':'text/css'})
	css_pat = re.compile('.*/(.*)\.css')
	fileNames = re.findall(r'/[^\?]*\?([^/|^\?]*)$',url)
	fileName = fileNames[0]
	print fileName
	for css in csss:
		cssnames = re.findall(r'.*/(.*)\.css',str(css))
		cssurls = re.findall(r'.*href=\"([^\"]*)\"',str(css))
#		print cssnames[0]
#		print cssurls[0]
		cssurl = "http://review.artintern.net/" + cssurls[0]
#		print cssurl
		content = content.replace(cssurls[0],fileName + "/" + cssnames[0]+".css")
		print os.path.isdir(fileName)
		if not os.path.isdir(fileName):
			os.mkdir(fileName)
		csscontent = urllib2.urlopen(cssurl).read()
		cssNewName = fileName+"/"+cssnames[0]+".css"
		cssfile = file(cssNewName,'w')
		cssfile.write(csscontent)
		cssfile.close()
	return content

def writefileName(url,content):
	soup = BeautifulSoup(content)
	imgs = soup.findAll('img')
	img_pat = re.compile('.*/(.*)\.[jpg|gif]')
	fileNames = re.findall(r'/[^\?]*\?([^/|^\?]*)$',url)
	fileName = fileNames[0]
	for img in imgs:
		imgNames = re.findall(r'.*/(.*)\.[jpg|gif]',str(img))
		imgType = re.findall(r'.*/.*\.([^ ]*)"',str(img))
		imgUrls = re.findall(r'.*src=\"([^\"]*)\"',str(img))
#		print imgNames[0]
#		print imgType[0]
#		print imgUrls[0]
		imgUrl = "http://review.artintern.net/" + imgUrls[0]
#		print imgUrl
		content = content.replace(imgUrls[0],fileName+"/"+imgNames[0]+"."+imgType[0])
		if not os.path.isdir(fileName):
			os.mkdir(fileName)
		imgContent = urllib2.urlopen(imgUrl).read()
		imgNewName = fileName+"/"+imgNames[0]+"."+imgType[0]
		imgfile = file(imgNewName,'w')
		imgfile.write(imgContent)
		imgfile.close()
	return content

getContent(url)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值