HTML5入门:特性、浏览器支持与实战技巧

需积分: 49 3 下载量 83 浏览量 更新于2024-07-28 收藏 1.08MB PDF 举报
"解读HTML5" HTML5是下一代超文本标记语言,它的出现极大地扩展了Web开发的可能性,提供了丰富的功能和更强的结构化能力。HTML5的解读涉及到多个方面,包括其新引入的语义化标记、表单增强、多媒体支持、画布技术、可编辑内容、拖放功能、数据存储以及浏览器兼容性检测。 1. 语义化标记:HTML5引入了许多新的语义元素,如<header>、<nav>、<section>、<article>、<aside>和<footer>等,这些元素有助于提高页面内容的可读性和可访问性,使搜索引擎更好地理解页面结构。 2. Form表单增强:HTML5在表单元素上进行了改进,添加了如<input type="date">、<input type="email">等新输入类型,以及<form>标签的新属性,如required、placeholder和autofocus,提高了用户体验和数据验证能力。 3. 视频/音频:HTML5通过<video>和<audio>标签实现了原生的多媒体播放功能,无需依赖Flash或其他插件,支持多种格式,如MP4、WebM和Ogg。 4. 画布(Canvas):<canvas>元素允许开发者通过JavaScript进行动态图形绘制,创建交互式图像和游戏,提供了强大的图形处理能力。 5. 可编辑内容:<contenteditable>属性使得用户可以在网页上直接编辑内容,这对于创建富文本编辑器或协作应用非常有用。 6. 拖放(Drag and Drop):HTML5提供了拖放API,让用户可以直接通过鼠标操作在页面元素间进行拖放,简化了文件上传、内容移动等功能的实现。 7. 稳健的数据存储:Web Storage(包括localStorage和sessionStorage)和IndexedDB为Web应用程序提供了本地数据存储机制,增强了离线应用的功能。 8. 浏览器支持检测:在开始使用HTML5特性前,需要了解各浏览器对HTML5的支持情况。可以通过“何时能用”、"网页设计师的浏览器支持列表"、"HTML5测试"等资源进行检测。Modernizr是一个流行的JavaScript库,用于检测浏览器对HTML5和CSS3的支持。 9. 值得注意的变更点:HTML5简化了DOCTYPE声明,不再需要复杂的DTD引用,只需写成<!DOCTYPE html>。同时,语言标签<lang>用于指定页面语言,简化了元信息的设置。 HTML5的实施需要考虑到向后兼容性,因为并非所有浏览器都完全支持新特性。开发者需要利用条件注释、渐进增强或优雅降级策略来确保老版本浏览器也能正常工作。随着HTML5的不断发展和浏览器的更新,更多的特性将被广泛支持,为Web开发带来更多的创新可能性。

import requests import os from bs4 import BeautifulSoup class book_spider(): def __init__(self,root_url): self.root_url=root_url self.book_list=[] #一级页面中获取的数据(二级页面地址)存放在此列表 self.chapter_list=[] #二级页面中获取的数据(三级页面网址和章节名称)存放此列表 def get_url(self,url): while True: try: res=requests.get(url) if res.status_code==200: #返回http请求状态码 200为正常 res.encoding = res.apparent_encoding #页面编码方式使用页面声明的编码方式 print("页面获取成功!") return res.text else: print("页面返回异常!",res.status_code) except: print("页面获取错误!") def get_book_list(self,url): res =self.get_url(url) html=BeautifulSoup(res,"html.parser") a_list = html.find_all("a",{"class":"name"}) for a in a_list: self.book_list.append(a["href"]) self.book_list=[self.root_url+i for i in self.book_list] self.book_list.remove("http://10.1.88.252:7000/庆余年") def get_chapter_list(self,url): res =self.get_url(url) html = BeautifulSoup(res,"html.parser") a_list = html.find_all("a",{"class":"chapter"}) for a in a_list: self.chapter_list.append((a["href"],a.text.replace("\n",""))) def get_content(self,chapter): url =self.root_url +chapter[0] print(url) book_name = chapter[0].split("/")[1] print(book_name) if not os.path.exists(book_name): os.mkdir(book_name) res =self.get_url(url) html = BeautifulSoup(res,"html.parser") content = html.find("div",{"id":"content"}).text print(content) path=os.path.join(book_name,chapter[1]) with open(path,"w",encoding="utf8")as f: f.write(content) def main(self): self.get_book_list(self.root_url) for book in self.book_list: self.get_chapter_list(book) for chapter in self.chapter_list: self.get_content(chapter) book_s= book_spider("http://10.1.88.252:7000") book_s.main()代码解读

2023-06-02 上传