网页css js 抓取助手(一个网站练习一下爬虫实现的功能全站获取CSS,JS,img等文件连接获取)
优采云 发布时间: 2022-02-28 19:09网页css js 抓取助手(一个网站练习一下爬虫实现的功能全站获取CSS,JS,img等文件连接获取)
闲暇之余,刚好找了一个网站来练习爬虫,总结一下写爬虫时遇到的知识点。
实现的功能
抓取站点范围的 URL
获取CSS、JS、img等文件连接
获取文件名
将文件保存到本地
使用的模块
urllib
BS4
回覆
操作系统
第 1 部分:抓取站点范围的 URL
先粘贴代码
# 获取当前页面子网站子网站
def get_urls(url, baseurl, urls):
with request.urlopen(url) as f:
data = f.read().decode('utf-8')
link = bs(data).find_all('a')
for i in link:
suffix = i.get('href')
# 设置排除写入的子连接
if suffix == '#' or suffix == '#carousel-example-generic' or 'javascript:void(0)' in suffix:
continue
else:
# 构建urls
childurl = baseurl + suffix
if childurl not in urls:
urls.append(childurl)
# 获取整个网站URL
def getallUrl(url, baseurl, urls):
get_urls(url, baseurl, urls)
end = len(urls)
start = 0
while(True):
if start == end:
break
for i in range(start, end):
get_urls(urls[i], baseurl, urls)
time.sleep(1)
start = end
end = len(urls)
通过urllib包中的请求,调用urlopen访问网站
首先从首页开始,首页一般收录各个子页面的url,将抓取到的url添加到一个列表中
然后读取这个列表的每个元素,依次访问,获取子页面的url连接,加入到列表中。
感觉这样抓取全站的url不是很靠谱,有时间再完善。
第二部分:获取css、js、img的连接
先粘贴代码
# 获取当前网页代码
with request.urlopen(url) as f:
html_source = f.read().decode()
<p> # css,js,img正则表达式,以获取文件相对路径
patterncss = '