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
、前言:
剛開始寫爬蟲程序,如果爬取的站點規模比較小,此時往往我們不需要關注站點的規模,因為此時對我們的效率影響來說,多點少點都沒關系,假設只有幾百個頁面,多點少點也就那么點時間。
但是,假如你爬取的站點規模相當大,數量達到了百萬級的,此時如果你還是每次都全部爬取,這時候效率就是不可接受的了。
百萬級的站點,并行抓取都很久,串行抓取估計你可以開啟爬蟲后先去休假兩三個月再回來了。
所以,在抓取站點之前,我們根據實際情況來獲取一些站點的規模信息是非常有必要的。
二、獲取站點的規模
獲取一個站點的規模信息,其實我們可以利用百度或者google爬蟲的成果。
如何利用呢?
其實我們可以在站點前加site:www.xxxx.com來判斷www.xxxx.com這個站點的規模是多大。
其會返回所收錄的頁面數,當然這個數量不是百分百的,但其基本上是能夠反應我們所需抓取的站點的規模的。
三、識別站點的技術
說完站點的規模,其實站點所使用的技術也會對我們的抓取過程有所影響。
比如:僅使用javascript、html、css構建的站點,抓取其內容是相對簡單的。如果是使用AngularJS、ReactJs等構建該網站,此時的網站內容就很可能是動態加載的。更老點的站點,其使用了ASP,那么在爬取頁面時就必須要用到會話管理和表單提交了等操作手段了。
builtwith模塊的使用
我們可以使用builtwith模塊來檢查站點構建的技術類型
使用操作是相當簡單的。
1、安裝builtwith:
python2輸入:pip install builtwith
python3輸入:pip3 install builtwith
安裝好之后,使用起來也是很簡單的哦:
直接調用builtwith.parse(url)即可解析指定站點
示例:
我們解析下自己的站點:
import builtwith
print(builtwith.parse(‘http://www.cherylgood.cn’));
結果:
{‘programming-languages’: [‘Java’], ‘miscellaneous’: [‘Gravatar’], ‘javascript-frameworks’: [‘jQuery’]}
可以看到,我們的站點技術相對簡單,開發語言為java,還使用了jQuery
我們再看看頭條
示例代碼
import builtwith
print(builtwith.parse(‘http://www.toutiao.com’));
結果:
{‘web-servers’: [‘Tengine’], ‘web-frameworks’: [‘Django’], ‘programming-languages’: [‘Python’], ‘javascript-frameworks’: [‘Prototype’]}
可以看到,我們連他用了什么服務器都可以知道,開發語言是python,框架為Django
這些對于我們決定采用什么抓取策略都是很有幫助的。
四、所有者、python-whois模塊的使用
除此之外,我們還可以知道抓取的站點的所有者是誰哦。
一般情況下,知不知道肯定關系不大,但是假如我們知道某個大牛,其反爬蟲技術特別牛,此時我們抓取其站點時是不是應該要收斂點,速度放慢點呢?當然,己所不欲勿施于人,在爬取一般站點時,還是建議大家的抓取速度盡量不要太塊。
我們可以通過使用python-whois來獲取所有者信息。
操作也很簡單:
1、安裝python-whois:
python2輸入:pip install python-whois
python3輸入:pip3 install python-whois
示例代碼:
import whois
print(whois.whois(‘http://www.toutiao.com’))
結果如下(只截取部分):
可以看到,其城市在福建廈門。
OK,本次我們主要學習了如果獲取站點的規模,構建技術,所有者等信息。
希望對你有幫助,謝謝,不喜歡不要打我,因為我還不是老司機……(^V^)。
、
1、網站地圖要包含網站最重要的一些頁面,包括產品分類頁面、主要產品頁面、訪問量比較大的頁面等等;
2、網站地圖布局一定要簡潔,所有的鏈接都是標準的HTML文本,并且要盡可能多的包含關鍵字;
3、盡量在站點地圖上增加文本說明;
4、站點的每個頁面里面都需要放置網站地圖的鏈接;
5、確保網站地圖里的每一個鏈接都是正確、有效的。
二、HTML網站地圖的制作
網站地圖兩種表現形式,第一種是后綴名為.html的網站地圖,一般命名使用sitemap。HTML版本的網站地圖針對的目標是用戶,也就是用戶在網站上可以看到的網站地圖,一般情況下在網站每個頁面的頂部或者底部添加一個網站地圖的錨文本鏈接,用戶點擊之后看到的內容主要是網站主要欄目和頁面的鏈接。
對于小網站來說,網站地圖可以列出整個網站所有頁面的鏈接,如果是大中型網站,內容頁面較多的話,建議列出網站的主要目錄和部分重要頁面的鏈接。
HTML版本的網站地圖建議人工手動編輯,也可以使用Dreamweaver來完成。
三、XML網站地圖的制作
網站地圖的第二種形式是XML版本的網站地圖,一般命名為Sitemap.xml(首字母S通常大寫),簡單來講,Sitemap.xml 放置的是網站上鏈接的列表。它由XML標簽組成,文件本身必須是utf8編碼。制作Sitemap.xml,并提交給搜索引擎可以使網站的內容完全被收錄,包括那些隱藏比較深的頁面。這是一種網站與搜索引擎對話的好方式。
標準的XML網站地圖格式為:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://www.*****.com/</loc>
<priority>1.00</priority>
<lastmod>2017-07-24</lastmod>
<changefreq>Always</changefreq>
</url>
</urlset>
其中:
urlset標簽是必須存在的,用于聲明文件所使用的Sitemap協議版本;
url標簽也是必須存在的,它是下面所有網址的目標簽;
loc標簽也是必須存在的,列出頁面完整的URL;
priority標簽是可選標簽,表示URL的重要程序,數值范圍從0.1到1.0不等,1.0代表此頁面最為重要,0.0
代表最不重要。站長可以使用priority標簽告訴搜索引擎這個網頁的重要程度。
lastmod標簽是可選標簽,表示頁面最后更新時間;
changefreq標簽是可選標簽,代表文件的更新頻率,其中的值包括:
Always,一直變動;
Hourly,每小時;
Daily,每天;
Weekly,每周;
Monthly,每月;
Yearly,每年;
Never,從未變動。
XML網站地圖生成工具有很多,大家可以多測試幾個,哪個順手就用哪個,我們這里使用愛站工具包進行生成,看操作:
第一步,我們下載愛站seo工具包并安裝;
第二步,打開軟件登錄之后選擇“網站地圖/Sitemap”;
第三步,點擊紅框被的按鈕添加一個站點,添加完成之后點擊右側的網站圖標;
第四步,設置網站地圖的抓取類型和生成的格式,設置好之后點擊右下角的“抓爬”按鈕。
第五步,待程序抓爬完成之后,點擊右下角的“生成XML文件”,生成完成之后,在程序的提示下找到地圖文件。
四、網站地圖的提交
我們要將制作好的網站地圖提交給搜索引擎,HTML版本的網站地圖針對是網站用戶,我們只需要在網站頁面的頂部或者底部添加錨文本鏈接即可;XML格式的網站地圖主要便于搜索引擎的抓取,所以我們需要將XML格式的網站地圖提交給搜索引擎,一般情況下我們使用一下兩種辦法,甚至我們兩種都會使用,它們之間是不沖突的。
1、一般的搜索引擎都會有自己的站長平臺,我們需要登錄站長平臺驗證網址之后,將自己的網站地圖提交給搜索引擎,以百度站長平臺為例。
2、第二種辦法,將網站地圖在robots.txt中進行聲明,告訴搜索引擎網站地圖的位置。使用方法如下:
Sitemap:http://www.*****.com/sitemap.xml
所有的主流搜索引擎都支持使用robots.txt文件聲明網站地圖的位置。
HTML文檔中的任何地方可包括JavaScript代碼。但也有以下的最佳方法來包含JavaScript在HTML文件。
在 <head>...</head> 部分。
在 <body>...</body> 部分。
在<body>...</body> 和<head>...</head> 部分。
腳本和外部文件,然后包括在<head>... </ head>部分。
在下面的章節中,我們將看到如何可以包含JavaScript方式的不同:
如果你想在一些事件上運行一個腳本,當用戶點擊某個地方,如,那么應該腳本的頭部,如下所示:
<html>
<head>
<script type="text/javascript">
<!--
function sayHello() {
alert("Hello World")
}
//-->
</script>
</head>
<body>
<input type="button" onclick="sayHello()" value="Say Hello" />
</body>
</html>
123456789101112131415復制代碼類型:[javascript]
這將產生以下結果:
如果需要一個腳本的頁面加載,以便腳本生成頁面內容來運行,該腳本在文檔的<body>部分。在這種情況下,就不必使用JavaScript定義的所有功能:
<html>
<head>
</head>
<body>
<script type="text/javascript">
<!--
document.write("Hello World")
//-->
</script>
<p>This is web page body </p>
</body>
</html>
12345678910111213復制代碼類型:[javascript]
你可以把JavaScript代碼在<head>和<body>部分完全如下:
<html>
<head>
<script type="text/javascript">
<!--
function sayHello() {
alert("Hello World")
}
//-->
</script>
</head>
<body>
<script type="text/javascript">
<!--
document.write("Hello World")
//-->
</script>
<input type="button" onclick="sayHello()" value="Say Hello" />
</body>
</html>12345678910111213141516171819復制代碼類型:[javascript]
當開始工作,更廣泛地使用JavaScript,可能會發現有情況下,在站點的多個頁面重用相同的JavaScript代碼。
你并不局限于將保持在多個HTML文件相同的代碼。 script標簽提供了一種機制,允許存儲JavaScript在外部文件中,然后將其包含到HTML文件。
下面是一個例子來說明如何使用腳本標記和src屬性包含在HTML代碼的外部JavaScript文件:
<html>
<head>
<script type="text/javascript" src="filename.js" ></script>
</head>
<body>
.......
</body>
</html>
12345678910復制代碼類型:[javascript]
使用JavaScript從外部文件源,則需要使用擴展寫下所有的JavaScript代碼在一個簡單的文本文件“.js”,然后包括文件,如上圖所示。
例如,你可以保持在以下文件filename.js的內容,然后包括filename.js文件后,在HTML文件中使用sayHellofunction:
function sayHello() {
alert("Hello World")
}
開課吧廣場-人才學習交流平臺
*請認真填寫需求信息,我們會在24小時內與您取得聯系。