Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
眾所周知,現在是技術吃遍天的時候,做SEO真正涉及到初級技術的時候,大多數是前端的html代碼,不管html更新到第幾個時代,在做SEO的功夫上都非常有效,所有的SEO牛人基本上都會代碼,如果說不會代碼,很多頁面做到細化優化,那是非常有難度的。
而且,所有的SEO高手也都會建站,搭建網站才能更好的在符合自身的SEO工作中得以施展,也許某一個人說把某個難點關鍵詞做上排名,其實這并不是難事,但是真正想要起到好的效果或者長期穩定,那需要會修改代碼,在代碼中加設一些標簽,這樣排名不是難事,但是更深層次的,還需要積累。
html代碼優化是一個整體的過程,當然了必須要考慮HTML代碼的熟悉程度,還要考慮html中有多少區域能夠做SEO,這都是很重要的因素,那我們就要先讓用戶了解網站的架構然后識別出來所占比重。來提升優化的技術。
既然說到了html,我們就要先了解html代碼,然后讓更多的人了解html每一項內容。現在html5很流行,源于手機端的網站越來越受到用戶關注,但是基本的html代碼用戶了解了,html5再深度學習有幫助了,再做一下seo優化能夠提升自身的技術,對于網站來說更具有seo優化的力度,因此我要針對html進行深度介紹,然后告訴大家,如何在html中進行優化網站,從而整體性優化作用。
html是頁面語言的基礎,這就不必多說了,不會html不會建站在做seo上很有阻力,我后面會講如何建站,以及如何做網站,讓自己輕松掌握好優化技術,現在很多漂亮的網站都離不開javascript語言和JQuery語言因此,很多人都說有這些特效的網站能否優化呢,其實問題不大,只要把每個頁面設計好了,就能夠進行深度頁面優化,讓頁面獲得排名,只是有一點,這樣的頁面排名周期較慢,一旦排名上去了,很難有下滑的趨勢。
<html></html>:所有的元素包括網頁的html、css、php調用、js調用全在這個代碼中,沒有該元素就不是網頁。因此作為seo必須要知道這個元素的重要性。當然了我們所用的網頁編寫軟件都已經把基礎代碼寫入進去我們只是稍微介紹一下。
<html>
<head></head>:head包含了<title></title>這個標題標簽,包含了<meta />元素標簽,來定義相關頁面的內容。<link />該調用外部文件標簽,<script></script>標簽。 --------------可見,head中都是包含眾多的文件,因此在head這里建議還是要精簡,寫的過多的包含文件。要簡練。
該圖是head中包含的
上圖是head中包含的<script></script>內容,這里不建議在頁面中寫建議進行調用。采取外界調用的寫法<script type="text/javascript" src="<a href="http://****/page/js/ad.js">【歡迎關注微信公眾號:seorule站長】。
多朋友都聽說過Python的大名,而Python也擁有眾多的爬蟲框架,其中最簡單的莫過于requests-html了。它和著名的網絡請求庫requests是同一個作者,著重于XML數據提取,可以說是最簡單的爬蟲框架了。
安裝這個類庫非常簡單,直接通過pip就可以安裝了。
pip install requests-html
requests-html用起來也十分簡單,下面是一個簡單例子。照例說明一下,第一段引入了HTMLSession用于創建連接,獲取網頁數據。第二段創建連接,獲取了我的簡書用戶頁面。第三段用xpath語法獲取了網頁上的用戶名,最后打印出來。
from requests_html import HTMLSession
session = HTMLSession()
response = session.get(
'https://www.jianshu.com/u/7753478e1554')
username = response.html.xpath(
'//a[@class="name"]/text()', first=True)
print(username)
看起來是不是很簡單?沒錯,確實很簡單,接下來還有一些更加有趣的功能。
編寫爬蟲之前還要做一件事情,就是分析網頁的結構。這個工作其實也很簡單,打開你要訪問的網頁,按F12打開開發人員工具,可以看到最左邊有這么一個按鈕。點擊這個按鈕,然后點擊網頁上你想要查看的網頁元素,然后你就可以發現這個元素對應的相關源代碼已經為你定位完畢了。
定位按鈕
通過這個功能,我們就可以輕松的分析網頁,然后通過它的結構來編寫爬蟲了。
上面的response.html即是網頁的根節點HTML節點,在節點對象上可以調用一些方法來檢索數據。最常用的方法是find方法,它通過CSS選擇器來定位數據。對于上面的例子,可以用find方法改寫第三段。
因為所有查找方法返回的結果都是列表,所以如果你確定只需要查找一個,就將first參數設為真來只返回第一個結果。find方法返回的仍然是一個節點,如果只需要節點的內容,調用其text屬性即可。
用戶名對應的HTML結構如圖所示。
代碼如下。
username = response.html.find('a.name', first=True).text
除了find方法之外,還可以使用xpath方法用xpath語法來查找節點,正如第一個例子那樣。我個人比較喜歡xpath語法,CSS選擇器雖然更加流行一些,但是寫出來的效果有點怪,不如xpath工整。
同樣是這個頁面,看看如何獲取我的簡書的個人簡介。網頁代碼如圖所示。
代碼如下。
description = response.html.xpath(
'//div[@class="description"]/div[@class="js-intro"]/text()', first=True)
CSS選擇器和XPATH語法都不是本篇的主要內容,如果你這方面不太熟悉,最好去看一下相關的教程。當然如果大家有什么疑問的話,也可以提出來。假如大家想看的話,我也可以專門寫一篇文章介紹一下這些語法知識。
有些網頁利用了前后端分離技術開發的,需要瀏覽器渲染才能完整顯示。如果用爬蟲去看的話,只能顯示一部分內容。這時候就需要瀏覽器渲染頁面,才能獲取完整的頁面。用requests-html的話,這個過程非常簡單。
首先先來看看一個需要渲染網頁的例子。下面的代碼訪問了我的簡書用戶頁面,然后嘗試獲取我的所有文章。但是如果你運行這個例子的話,就會發現只能獲取前幾項。因為簡書的頁面正是一個典型的需要瀏覽器渲染的頁面,爬蟲獲取到的網頁是不完整的。
from requests_html import HTMLSession
session = HTMLSession()
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.119 Safari/537.36'
}
url = 'https://www.jianshu.com/u/7753478e1554'
r = session.get(url, headers=headers)
for a in r.html.xpath('//ul[@class="note-list"]/li/div[@class="content"]/a[@class="title"]'):
title = a.text
link = f'https://www.jianshu.com{a.attrs["href"]}'
print(f'《{title}》,{link}')
那么如何渲染網頁來獲取完整的結果呢?其實非常簡單,在查詢HTML節點之前,調用render函數即可。
render函數來使用瀏覽器渲染
原理也非常簡單,第一次調用render的時候,requests-html會在本地下載一個chromium瀏覽器,用它來渲染網頁。如此一來,我們就可以獲取到渲染之后的頁面了。
但是對于簡書這個例子來說還是有些問題,因為如果你在瀏覽器里打開這個網頁的話,會發現一些文章在瀏覽器下滑頁面的時候才開始渲染。不過聰慧的作者早就考慮到這種情況了,render函數支持下滑的參數,設定之后,就會模擬瀏覽器下滑操作,從而解決了這個問題。
r.html.render(scrolldown=50, sleep=0.2)
不論上面的r.html還是find/xpath函數返回的結果,它們都是節點對象。除了上面介紹的幾個提取數據的方法以外,節點對象還有以下一些屬性,在我們提取數據的時候也有很大作用。
相較于專業的爬蟲框架scrapy,或者僅用于解析XML的解析庫BeautifulSoup。requests-html可以是說恰到好處,它沒有前者那么難學,也不像后者還需要搭配HTTP請求庫才能使用。如果你手頭需要臨時抓取幾個網頁,那么requests-html就是你最好的選擇。
為一名前端工程師,我們會經常使用到CSS去實現一些網頁樣式或動畫效果。
但是有一些動畫效果往往又會比想象中的難實現。比如UI做了一些炫酷的觸控動畫,看起來很漂亮,但是作為前端開發的我,看到就頭大。
上周公司的一個項目要實現一個需求:鼠標移動到按鈕上,按鈕的顏色自動改變。
我一想,這還不簡單?直接使用 :hover 來實現了這個效果,嘿~小小需求,拿捏!
然后產品說,這個效果太硬了!
我尋思著,這動畫該咋做呢?我想到了直接用git來實現,但是加載太慢了,會影響性能。
哦對了!CSS好像還可以制作動畫呢!
但是具體怎么實現呢?
可能也是自己也對CSS的 transition 屬性不夠了解,然后我就在GitHub上瀏覽了很多,其中有一個題目吸引了我,:CSS Animation 。
這上面會不會有我需要的那種效果啊,于是抱著試一試的心態就點進去了。
點開來后就是看到目錄,然后我就慢慢的往下滑去尋找自己需要的關于tranform的案例。
滑到下面的時候發現他的目錄里面有一個特別符合我需求的案例,這是一個比較復雜的hover效果。
于是我就跟著操作:
1、使用 CSS 中的 transform 來實現上面的顯示和隱藏。對 twitter icon 進行絕對定位,設置其 left 和 top
.icon { position: absolute; left: 0.75em; top: 0.75em; }
2、鼠標懸停時添加 transform 屬性將其移出 button。在外層的容器上添加overflow: hidden 就可以將 twitter icon 隱藏了。
a:hover .icon { transform: translateY(3em); }
3、如果不添加 transition,元素就會突然消失,效果并不好。在這個例子里,button 里的元素都是 span,所以可以寫一條 transition 然后應用到所有的 span 上。span 的狀態發生變化時都會使用這條 transition。
span { transition: transform 0.4s cubic-bezier(0.72, -0.61, 0.25, 1.51); }
原來如此,這個transform 還能這樣使用!
做完這個項目后,我又重新看了好幾遍這個CSS animation開源項目,這個CSS動畫指南不僅介紹如何制作復雜的動效還有豐富的示例,教會你如何將 CSS 動畫應用到你的項目中。在整個過程中,我覺得自己非常輕松的就完成了這個原本讓我感到很難的CSS動畫。
目前我的項目也完成了,我還是會多去看看,因為它真的很全面,也很詳細,我也會跟我一起做前端的同事去分享這款開源項目。
大家有發現相似的產品,也別忘了我,大家一起發現更多能夠幫助我們提高工作效率的產品。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。