1 html语义化:
根据内容的结构化(内容语义化),选择合适的标签(代码语义化)便于开发者阅读和写出更优雅的代码的同时让浏览器的爬虫和机器很好地解析。
<1>为什么要语义化?
为了在没有CSS的情况下,页面也能呈现出很好地内容结构、代码结构:为了裸奔时好看;
用户体验:例如title、alt用于解释名词或解释图片信息、label标签的活用;
有利于SEO:和搜索引擎建立良好沟通,有助于爬虫抓取更多的有效信息:爬虫依赖于标签来确定上下文和各个关键字的权重;
方便其他设备解析(如屏幕阅读器、盲人阅读器、移动设备)以意义的方式来渲染网页;
便于团队开发和维护,语义化更具可读性,遵循W3C标准的团队都遵循这个标准,可以减少差异化。
<2>写HTML代码时应注意什么?
尽可能少的使用无语义的标签div和span;
在语义不明显时,既可以使用div或者p时,尽量用p, 因为p在默认情况下有上下间距,对兼容特殊终端有利;
不要使用纯样式标签,如:b、font、u等,改用css设置。
需要强调的文本,可以包含在strong或者em标签中(浏览器预设样式,能用CSS指定就不用他们),strong默认样式是加粗(不要用b),em是斜体(不用i);
使用表格时,标题要用caption,表头用thead,主体部分用tbody包围,尾部用tfoot包围。表头和一般单元格要区分开,表头用th,单元格用td;
表单域要用fieldset标签包起来,并用legend标签说明表单的用途;
每个input标签对应的说明文本都需要使用label标签,并且通过为input设置id属性,在lable标签中设置for=someld来让说明文本和相对应的input关联起来。
<3>HTML5新增了哪些语义标签
在HTML 5出来之前,我们用div来表示页面章节,但是这些div都没有实际意义。(即使我们用css样式的id和class形容这块内容的意义)。这些标签只是我们提供给浏览器的指令,只是定义一个网页的某些部分。但现在,那些之前没“意义”的标签因为因为html5的出现消失了,这就是我们平时说的“语义”。
1,header 元素代表“网页”或“section”的页眉。通常包含h1-h6元素或hgroup,作为整个页面或者一个内容块的标题。也可以包裹一节的目录部分,一个搜索框,一个nav,或者任何相关logo。
2,footer元素代表“网页”或“section”的页脚,通常含有该节的一些基本信息,譬如:作者,相关文档链接,版权资料。如果footer元素包含了整个节,那么它们就代表附录,索引,提拔,许可协议,标签,类别等一些其他类似信息。
3,hgroup元素代表“网页”或“section”的标题,当元素有多个层级时,该元素可以将h1到h6元素放在其内,譬如文章的主标题和副标题的组合。
4,nav元素代表页面的导航链接区域。用于定义页面的主要导航部分。
5,aside元素被包含在article元素中作为主要内容的附属信息部分,其中的内容可以是与当前文章有关的相关资料、标签、名次解释等。(特殊的section)。在article元素之外使用作为页面或站点全局的附属信息部分。最典型的是侧边栏,其中的内容可以是日志串连,其他组的导航,甚至广告,这些内容相关的页面。
6,section元素代表文档中的“节”或“段”,“段”可以是指一篇文章里按照主题的分段;“节”可以是指一个页面里的分组。section通常还带标题,虽然html5中section会自动给标题h1-h6降级,但是最好手动给他们降级。
7,article元素最容易跟section和div容易混淆,其实article代表一个在文档,页面或者网站中自成一体的内容,其目的是为了让开发者独立开发或重用。譬如论坛的帖子,博客上的文章,一篇用户的评论,一个互动的widget小工具。(特殊的section)。除了它的内容,article会有一个标题(通常会在header里),会有一个footer页脚。
—如果在article内部再嵌套article,那就代表内嵌的article是与它外部的内容有关联的,如博客文章下面的评论。
—文章里的章节,一个article里的section实例。因为文章内section部分虽然也是独立的部分,但是它门只能算是组成整体的一部分,从属关系,article是大主体,section是构成这个大主体的一部分。本网站的全部文章都是article嵌套一个个section章节,这样能让浏览器更容易区分各个章节所包括的内容。
—一个section里的article实例。设计师、程序员、前端工程师都是一个独立的整体,他们组成了网站制作基本配备,当然还有其他成员~~。设计师、程序员、前端工程师就像article,是一个个独立的整体,而section将这些自成一体的article包裹,就组成了一个团体。
article使用注意:自身独立的情况下:用article;是相关内容:用section;没有语义的:用div。
—address代表区块容器,必须是作为联系信息出现,邮编地址、邮件地址等等,一般出现在footer。
—h1-h6因为hgroup,section和article的出现,h1-h6定义也发生了变化,允许一张页面出现多个h1。
2 SEO的原理
SEO概论:SEO是Search Engine Optimization的简称,SEO中文意思是搜索引擎优化。
搜索引擎优化SEO是建立在用户搜索体验为中心的基础上,通过提高网页级别、建立合理的网站链接结构/目录结构、丰富网站内容及表达形式,使网站自身设计符合搜索引擎规则、对搜索引擎友好,进而在搜索引擎上获得较高的排序权重。
它是通过研究搜索引擎对网页的抓取规则,以及搜索结果排序算法,来对网页进行相关的优化,使其更多的内容被搜索引擎收录,同时针对关键词获得搜索结果中更高的排名,从而提高网站访问量的一种策略。
搜索引擎工作主要分为:
1.页面抓取
2.页面分析
3.建立索引
4.页面排序
1,搜索引擎-抓取页面
这个工作主要由叫做“机器人(robot)”、“爬虫(crawler)”或者“蜘蛛(spider)”的程序,根据一定规则扫描存在于互联网上的网站,并沿着网页上的链接从一个网页到另一个网页,从一个网站到另一个网站。
为保证采集的资料最新,它还会回访已抓取过的网页。
这个工作是搜索引擎所有工作的基础。
结论:想要获得更多的网站排名,网站必须要有更多,更新的信息被搜索引擎抓取,这个也就是网站需要每天坚持更新的原因。
2,搜索引擎-页面分析
对页面内容进行分析,提取相关网页信息(包括网页所在URL、编码类型、页面内容包含的所有关键词、关键词位置、生成时间、大小、与其它网页的链接关系等)。
搜索引擎所分析的内容,也就是我们SEO所要做得工作内容。
3,搜索引擎-建立索引
建立索引:就是搜索引擎通过对网站的内容进行抓取,分析后 对每个抓取的页面进行一个资源入库。在用户搜索的时候再进行调取,展现到用户眼前。
所以我们有更多的页面被搜索引擎搜索收录,才能有更多的机会展示在用眼前。
4,搜索引擎-页面排序
用户在搜索引擎中输入查询条件后,搜索引擎就在数据库中检索相关的信息,并将检索结果返回给用户,搜索引擎在往用户端返回数据的时候,并不是随机的,而是按照一定的计算方法进行排序的。
涉及到排序的因素主要有:链接权重,用户行为。
结合页面的内外因素,计算出页面与某个关键字的相关程度,从而得到与该关键字相关的页面索引列表。
总结:想做好SEO,最重要是要成为搜索引擎的知己,做搜索引擎之所想。得搜索引擎之所得,互惠共赢才是长久之计。
3 什么是爬虫
网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。
4 怎么去写一个爬虫
—定义已访问队列,待访问队列和爬取得URL的哈希表,包括出队列,入队列,判断队列是否空等操作
—定义DownLoadFile类,根据得到的url,爬取网页内容,下载到本地保存。此处需要引用commons-httpclient.jar,commons-codec.jar,commons-logging.jar。
—定义HtmlParserTool类,用来获得网页中的超链接(包括a标签,frame中的src等等),即为了得到子节点的URL。需要引入htmlparser.jar
—编写测试类MyCrawler,用来测试爬取效果