最近中文字幕2019高清,亚洲人成高清在线播放,男生淦哭男生图片动漫有字,国产亚洲精品九九久在线观看,无码av专区丝袜专区

php抓取網(wǎng)頁(yè)指定內容

php抓取網(wǎng)頁(yè)指定內容

解決方案:Google搜索引擎基礎知識

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 129 次瀏覽 ? 2022-09-23 19:17 ? 來(lái)自相關(guān)話(huà)題

  解決方案:Google搜索引擎基礎知識
  抓取過(guò)程從以前抓取的內容的 URL 列表和 網(wǎng)站 所有者提供的站點(diǎn)地圖開(kāi)始。在訪(fǎng)問(wèn)這些 網(wǎng)站 時(shí),我們的爬蟲(chóng)會(huì )使用 網(wǎng)站 上的鏈接來(lái)探索其他網(wǎng)頁(yè)。該軟件特別注意新的 網(wǎng)站s、對現有 網(wǎng)站s 的更改以及斷開(kāi)的鏈接。計算機程序確定要抓取哪個(gè) 網(wǎng)站、多久抓取一次以及從每個(gè) 網(wǎng)站 抓取多少頁(yè)。
  為了讓 網(wǎng)站所有者能夠更詳細地指定 Google 如何抓取他們的 網(wǎng)站,我們引入了 Search Console:網(wǎng)站所有者可以向我們提供有關(guān)如何處理其網(wǎng)頁(yè)的詳細說(shuō)明,請求重新抓取,或使用 robots.txt 文件完全禁止抓取工具抓取其 網(wǎng)站。 Google 絕不會(huì )接受網(wǎng)站為更頻繁地抓取而付費 - 我們?yōu)樗芯W(wǎng)站提供相同的工具,以確保為我們的用戶(hù)提供最佳搜索結果。
  
  通過(guò)抓取查找信息
  網(wǎng)絡(luò )就像一個(gè)不斷擴大的圖書(shū)館,擁有數十億本書(shū),但沒(méi)有中央記錄管理系統。我們使用一種稱(chēng)為網(wǎng)絡(luò )爬蟲(chóng)的軟件來(lái)發(fā)現可供公眾訪(fǎng)問(wèn)的網(wǎng)頁(yè)。爬蟲(chóng)查看網(wǎng)頁(yè)并跟蹤指向這些頁(yè)面的鏈接,就好像您正在瀏覽網(wǎng)絡(luò )上的內容一樣。這些爬蟲(chóng)會(huì )遍歷每個(gè)鏈接并將每個(gè)頁(yè)面的數據返回到 Google 的服務(wù)器。
  通過(guò)索引組織信息
  
  當爬蟲(chóng)找到頁(yè)面時(shí),我們的系統會(huì )像瀏覽器一樣呈現頁(yè)面內容。我們記錄關(guān)鍵信號(從關(guān)鍵字到 網(wǎng)站新鮮度),然后在 Google 搜索索引中跟蹤所有這些信號。
  Google 的搜索索引收錄數千億個(gè)網(wǎng)頁(yè),這些網(wǎng)頁(yè)的大小遠遠超過(guò) 1 億 GB。這就像一本書(shū)后面的索引 - 每個(gè)索引頁(yè)面上出現的每個(gè)單詞都有一個(gè)條目。當一個(gè)頁(yè)面被索引時(shí),它被添加到它收錄的所有術(shù)語(yǔ)的條目中。
  借助知識圖譜,我們將繼續超越關(guān)鍵字匹配,以更好地了解您關(guān)心的人物、地點(diǎn)和事物。為此,我們不僅組織有關(guān)網(wǎng)頁(yè)的信息,還組織其他類(lèi)型的信息。如今,Google 搜索不僅可以幫助您在大型圖書(shū)館中搜索數以百萬(wàn)計的書(shū)籍,查找當地公交公司的路線(xiàn)和時(shí)刻表,還可以幫助您瀏覽來(lái)自世界銀行等公共來(lái)源的數據。
  知識和經(jīng)驗:網(wǎng)站優(yōu)化的五大基礎知識
  首先,搜索引擎優(yōu)化以用戶(hù)的搜索體驗為中心。通過(guò)提高網(wǎng)頁(yè)層次,建立合理的網(wǎng)站鏈接結構/目錄結構,建立外部鏈接,豐富網(wǎng)站的內容和表達方式,使網(wǎng)站的設計符合搜索規則引擎,友好并在搜索引擎上獲得高排名權重。
  其次,原創(chuàng ) 和高度相關(guān)的 文章 優(yōu)化對 網(wǎng)站 的好處。我們常說(shuō)網(wǎng)站優(yōu)化內容為王,搜索引擎愛(ài)原創(chuàng )文章,說(shuō)白了原創(chuàng )文章意思一樣文章@ > 百度搜索是獨一無(wú)二的。繼續寫(xiě)出優(yōu)秀的原創(chuàng )文章可以快速提升排名。
  
  三、我們通常說(shuō)一個(gè)適合網(wǎng)站優(yōu)化的網(wǎng)站有以下幾個(gè)元素:是靜態(tài)的URL,網(wǎng)站頁(yè)面標題關(guān)鍵詞和描述不支持單獨設置,網(wǎng)站的結構是否足夠扁平,鏈接深度是否足夠淺,內部鏈接是否流暢等等?,F在很多 cms 系統都很好地處理了這些問(wèn)題,所以這不是一個(gè)非常困難的點(diǎn)。
  四、通過(guò)網(wǎng)站地圖,搜索引擎可以快速了解你網(wǎng)站總共有多少頁(yè)面,并快速爬取。會(huì )有蜘蛛無(wú)法爬取的情況,因為目錄結構太復雜。. 網(wǎng)站地圖的主要目的是增加收錄的數量。
  
  第五,外部鏈接為王。搜索引擎決定一個(gè)頁(yè)面是否有價(jià)值以及是否應該給予更高排名的最重要因素之一是有多少高質(zhì)量的外部鏈接指向該頁(yè)面。大多數網(wǎng)站的主頁(yè)底部或右側都有一個(gè)鏈接欄。友情鏈接是一個(gè)十字架,你鏈接我,我鏈接你。最好只在首頁(yè)有友情鏈接(這里指的是小網(wǎng)站)。使用外部鏈接將權重傳遞給目標站點(diǎn)。使用內部鏈接合理分配權重流量。所以當我們有高質(zhì)量的原創(chuàng )文章的時(shí)候,我們還需要為頁(yè)面創(chuàng )建一些高質(zhì)量的外鏈。
  SEO優(yōu)化工作需要做很久才能看到效果。只有做好基礎工作,積累一點(diǎn)點(diǎn),不斷優(yōu)化網(wǎng)站的內容,緊貼用戶(hù)需求,網(wǎng)站才會(huì )有不錯的排名。 查看全部

  解決方案:Google搜索引擎基礎知識
  抓取過(guò)程從以前抓取的內容的 URL 列表和 網(wǎng)站 所有者提供的站點(diǎn)地圖開(kāi)始。在訪(fǎng)問(wèn)這些 網(wǎng)站 時(shí),我們的爬蟲(chóng)會(huì )使用 網(wǎng)站 上的鏈接來(lái)探索其他網(wǎng)頁(yè)。該軟件特別注意新的 網(wǎng)站s、對現有 網(wǎng)站s 的更改以及斷開(kāi)的鏈接。計算機程序確定要抓取哪個(gè) 網(wǎng)站、多久抓取一次以及從每個(gè) 網(wǎng)站 抓取多少頁(yè)。
  為了讓 網(wǎng)站所有者能夠更詳細地指定 Google 如何抓取他們的 網(wǎng)站,我們引入了 Search Console:網(wǎng)站所有者可以向我們提供有關(guān)如何處理其網(wǎng)頁(yè)的詳細說(shuō)明,請求重新抓取,或使用 robots.txt 文件完全禁止抓取工具抓取其 網(wǎng)站。 Google 絕不會(huì )接受網(wǎng)站為更頻繁地抓取而付費 - 我們?yōu)樗芯W(wǎng)站提供相同的工具,以確保為我們的用戶(hù)提供最佳搜索結果。
  
  通過(guò)抓取查找信息
  網(wǎng)絡(luò )就像一個(gè)不斷擴大的圖書(shū)館,擁有數十億本書(shū),但沒(méi)有中央記錄管理系統。我們使用一種稱(chēng)為網(wǎng)絡(luò )爬蟲(chóng)的軟件來(lái)發(fā)現可供公眾訪(fǎng)問(wèn)的網(wǎng)頁(yè)。爬蟲(chóng)查看網(wǎng)頁(yè)并跟蹤指向這些頁(yè)面的鏈接,就好像您正在瀏覽網(wǎng)絡(luò )上的內容一樣。這些爬蟲(chóng)會(huì )遍歷每個(gè)鏈接并將每個(gè)頁(yè)面的數據返回到 Google 的服務(wù)器。
  通過(guò)索引組織信息
  
  當爬蟲(chóng)找到頁(yè)面時(shí),我們的系統會(huì )像瀏覽器一樣呈現頁(yè)面內容。我們記錄關(guān)鍵信號(從關(guān)鍵字到 網(wǎng)站新鮮度),然后在 Google 搜索索引中跟蹤所有這些信號。
  Google 的搜索索引收錄數千億個(gè)網(wǎng)頁(yè),這些網(wǎng)頁(yè)的大小遠遠超過(guò) 1 億 GB。這就像一本書(shū)后面的索引 - 每個(gè)索引頁(yè)面上出現的每個(gè)單詞都有一個(gè)條目。當一個(gè)頁(yè)面被索引時(shí),它被添加到它收錄的所有術(shù)語(yǔ)的條目中。
  借助知識圖譜,我們將繼續超越關(guān)鍵字匹配,以更好地了解您關(guān)心的人物、地點(diǎn)和事物。為此,我們不僅組織有關(guān)網(wǎng)頁(yè)的信息,還組織其他類(lèi)型的信息。如今,Google 搜索不僅可以幫助您在大型圖書(shū)館中搜索數以百萬(wàn)計的書(shū)籍,查找當地公交公司的路線(xiàn)和時(shí)刻表,還可以幫助您瀏覽來(lái)自世界銀行等公共來(lái)源的數據。
  知識和經(jīng)驗:網(wǎng)站優(yōu)化的五大基礎知識
  首先,搜索引擎優(yōu)化以用戶(hù)的搜索體驗為中心。通過(guò)提高網(wǎng)頁(yè)層次,建立合理的網(wǎng)站鏈接結構/目錄結構,建立外部鏈接,豐富網(wǎng)站的內容和表達方式,使網(wǎng)站的設計符合搜索規則引擎,友好并在搜索引擎上獲得高排名權重。
  其次,原創(chuàng ) 和高度相關(guān)的 文章 優(yōu)化對 網(wǎng)站 的好處。我們常說(shuō)網(wǎng)站優(yōu)化內容為王,搜索引擎愛(ài)原創(chuàng )文章,說(shuō)白了原創(chuàng )文章意思一樣文章@ > 百度搜索是獨一無(wú)二的。繼續寫(xiě)出優(yōu)秀的原創(chuàng )文章可以快速提升排名。
  
  三、我們通常說(shuō)一個(gè)適合網(wǎng)站優(yōu)化的網(wǎng)站有以下幾個(gè)元素:是靜態(tài)的URL,網(wǎng)站頁(yè)面標題關(guān)鍵詞和描述不支持單獨設置,網(wǎng)站的結構是否足夠扁平,鏈接深度是否足夠淺,內部鏈接是否流暢等等?,F在很多 cms 系統都很好地處理了這些問(wèn)題,所以這不是一個(gè)非常困難的點(diǎn)。
  四、通過(guò)網(wǎng)站地圖,搜索引擎可以快速了解你網(wǎng)站總共有多少頁(yè)面,并快速爬取。會(huì )有蜘蛛無(wú)法爬取的情況,因為目錄結構太復雜。. 網(wǎng)站地圖的主要目的是增加收錄的數量。
  
  第五,外部鏈接為王。搜索引擎決定一個(gè)頁(yè)面是否有價(jià)值以及是否應該給予更高排名的最重要因素之一是有多少高質(zhì)量的外部鏈接指向該頁(yè)面。大多數網(wǎng)站的主頁(yè)底部或右側都有一個(gè)鏈接欄。友情鏈接是一個(gè)十字架,你鏈接我,我鏈接你。最好只在首頁(yè)有友情鏈接(這里指的是小網(wǎng)站)。使用外部鏈接將權重傳遞給目標站點(diǎn)。使用內部鏈接合理分配權重流量。所以當我們有高質(zhì)量的原創(chuàng )文章的時(shí)候,我們還需要為頁(yè)面創(chuàng )建一些高質(zhì)量的外鏈。
  SEO優(yōu)化工作需要做很久才能看到效果。只有做好基礎工作,積累一點(diǎn)點(diǎn),不斷優(yōu)化網(wǎng)站的內容,緊貼用戶(hù)需求,網(wǎng)站才會(huì )有不錯的排名。

php抓取網(wǎng)頁(yè)指定內容,包括返回的正則表達式內容

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 103 次瀏覽 ? 2022-09-16 00:03 ? 來(lái)自相關(guān)話(huà)題

  php抓取網(wǎng)頁(yè)指定內容,包括返回的正則表達式內容
  php抓取網(wǎng)頁(yè)指定內容,包括返回的正則表達式內容,爬蟲(chóng)爬取的json數據,以及在jsp頁(yè)面上修改html代碼都是最基本的,不深入。
  一、requests相關(guān)用法
  1.post請求post請求是xmlhttprequest對象的重要方法,stdout是jsonp請求的核心,jsonp請求支持string、bytes、bytebuffer、text等格式的請求內容。
  
  1.
  1、post方法post請求一般以put方法將數據包含在對象或數據包中,更多的參數需要通過(guò)stdout字符串攜帶。
  2、get方法get包含四種方法:get(scheme,url,path,timeout)其中第一個(gè)參數表示scheme,是根據你請求的服務(wù)器類(lèi)型決定的,一般情況下請求的服務(wù)器是flash/webkit(原來(lái)activex對象自身)等就選擇stream(flash),反之就選get。
  3、postman.js中的get請求,是基于以前的server.post(path,url,path)三個(gè)參數決定,請求address,url,path(status,name,port)。之前生成的get請求記錄是保存在sqlite數據庫中。
  
  4、postman.js中的post請求是基于jsonp(請求參數傳遞header,返回response),請求參數中多出一個(gè)或多個(gè)字段表示是對請求參數的設置,默認為none(空字段);另外請求參數也可以傳入request對象的私有屬性(如.text或.request),則請求會(huì )被解析為有關(guān)http請求的規范格式,可以作為結果集返回,方便組合并進(jìn)行多種格式轉換。1.。
  5、server.post(scheme,url,path,timeout)設置請求參數,對scheme參數,在中script標簽中嵌入get請求(get(scheme,url,path,timeout)),請求返回的結果會(huì )被轉發(fā),header一個(gè)script標簽中只能指定一個(gè)字段表示請求參數,對于成對數組參數,可以用for循環(huán)獲取字段值或用list()函數返回成對的字段值。
  對于scheme一般以"./"開(kāi)頭,scheme也不需要指定一個(gè)url,可以在中通過(guò)dom模塊中的navigatordirectory屬性獲取。對于url,可以在中dom模塊中的navigatordirectory屬性中獲取。對于path參數,通過(guò)標簽的src屬性獲取路徑,如<a>.html</a>.txt。對于timeout一般以標簽下的scope屬性設置,作用為等待請求返回。1.。
  6、server。postmessage(scheme,url,path,timeout)實(shí)現請求參數的map格式,用來(lái)自定義參數,例如。html{"location":""},用來(lái)指定請求的服務(wù)器名稱(chēng)以及timeout參數,實(shí)現多次請求的相互識別,如://用來(lái)指定服務(wù)器名稱(chēng)multipart/form-dataaction=""//自定義請求參數//。 查看全部

  php抓取網(wǎng)頁(yè)指定內容,包括返回的正則表達式內容
  php抓取網(wǎng)頁(yè)指定內容,包括返回的正則表達式內容,爬蟲(chóng)爬取的json數據,以及在jsp頁(yè)面上修改html代碼都是最基本的,不深入。
  一、requests相關(guān)用法
  1.post請求post請求是xmlhttprequest對象的重要方法,stdout是jsonp請求的核心,jsonp請求支持string、bytes、bytebuffer、text等格式的請求內容。
  
  1.
  1、post方法post請求一般以put方法將數據包含在對象或數據包中,更多的參數需要通過(guò)stdout字符串攜帶。
  2、get方法get包含四種方法:get(scheme,url,path,timeout)其中第一個(gè)參數表示scheme,是根據你請求的服務(wù)器類(lèi)型決定的,一般情況下請求的服務(wù)器是flash/webkit(原來(lái)activex對象自身)等就選擇stream(flash),反之就選get。
  3、postman.js中的get請求,是基于以前的server.post(path,url,path)三個(gè)參數決定,請求address,url,path(status,name,port)。之前生成的get請求記錄是保存在sqlite數據庫中。
  
  4、postman.js中的post請求是基于jsonp(請求參數傳遞header,返回response),請求參數中多出一個(gè)或多個(gè)字段表示是對請求參數的設置,默認為none(空字段);另外請求參數也可以傳入request對象的私有屬性(如.text或.request),則請求會(huì )被解析為有關(guān)http請求的規范格式,可以作為結果集返回,方便組合并進(jìn)行多種格式轉換。1.。
  5、server.post(scheme,url,path,timeout)設置請求參數,對scheme參數,在中script標簽中嵌入get請求(get(scheme,url,path,timeout)),請求返回的結果會(huì )被轉發(fā),header一個(gè)script標簽中只能指定一個(gè)字段表示請求參數,對于成對數組參數,可以用for循環(huán)獲取字段值或用list()函數返回成對的字段值。
  對于scheme一般以"./"開(kāi)頭,scheme也不需要指定一個(gè)url,可以在中通過(guò)dom模塊中的navigatordirectory屬性獲取。對于url,可以在中dom模塊中的navigatordirectory屬性中獲取。對于path參數,通過(guò)標簽的src屬性獲取路徑,如<a>.html</a>.txt。對于timeout一般以標簽下的scope屬性設置,作用為等待請求返回。1.。
  6、server。postmessage(scheme,url,path,timeout)實(shí)現請求參數的map格式,用來(lái)自定義參數,例如。html{"location":""},用來(lái)指定請求的服務(wù)器名稱(chēng)以及timeout參數,實(shí)現多次請求的相互識別,如://用來(lái)指定服務(wù)器名稱(chēng)multipart/form-dataaction=""//自定義請求參數//。

php抓取網(wǎng)頁(yè)指定內容有4種方法,用scrapy框架搭建web應用

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 86 次瀏覽 ? 2022-08-23 09:02 ? 來(lái)自相關(guān)話(huà)題

  php抓取網(wǎng)頁(yè)指定內容有4種方法,用scrapy框架搭建web應用
  php抓取網(wǎng)頁(yè)指定內容有4種方法,
  1、用scrapy框架搭建web應用;
  2、用selenium來(lái)抓取網(wǎng)頁(yè);
  
  3、python轉php;
  4、爬蟲(chóng)spider;今天介紹的就是用python轉php架構網(wǎng)頁(yè)上的代碼,主要針對是scrapy,
  1、scrapy和selenium代碼架構不同,需要額外寫(xiě)很多代碼,因為它是java語(yǔ)言的,
  2、scrapy無(wú)法實(shí)現很多html標簽;
  
  3、當點(diǎn)擊特定元素時(shí),
  4、好了,下面介紹如何用scrapy生成網(wǎng)頁(yè),
  4)applewebkit/537。36(khtml,likegecko)chrome/43。2681。142safari/537。36'}mypage=requests。get(url,headers=headers)login_url=""forpinheaders['post']:form_url=p['user-agent']。
  match(form_url)ifrequests。post(form_url,headers=headers)。status_code:form_url=form_url+requests。urlopen(form_url)。read()。decode('utf-8')mypage。encoding='utf-8'else:form_url=mypage。
  encodingelifselenium。open()。readstream()。encoding=='utf-8':mypage。encoding='utf-8'mypage。decode('utf-8')d=requests。get(form_url,headers=headers)。decode('utf-8')print(mypage。html)詳細代碼及實(shí)例請參考:。 查看全部

  php抓取網(wǎng)頁(yè)指定內容有4種方法,用scrapy框架搭建web應用
  php抓取網(wǎng)頁(yè)指定內容有4種方法,
  1、用scrapy框架搭建web應用;
  2、用selenium來(lái)抓取網(wǎng)頁(yè);
  
  3、python轉php;
  4、爬蟲(chóng)spider;今天介紹的就是用python轉php架構網(wǎng)頁(yè)上的代碼,主要針對是scrapy,
  1、scrapy和selenium代碼架構不同,需要額外寫(xiě)很多代碼,因為它是java語(yǔ)言的,
  2、scrapy無(wú)法實(shí)現很多html標簽;
  
  3、當點(diǎn)擊特定元素時(shí),
  4、好了,下面介紹如何用scrapy生成網(wǎng)頁(yè),
  4)applewebkit/537。36(khtml,likegecko)chrome/43。2681。142safari/537。36'}mypage=requests。get(url,headers=headers)login_url=""forpinheaders['post']:form_url=p['user-agent']。
  match(form_url)ifrequests。post(form_url,headers=headers)。status_code:form_url=form_url+requests。urlopen(form_url)。read()。decode('utf-8')mypage。encoding='utf-8'else:form_url=mypage。
  encodingelifselenium。open()。readstream()。encoding=='utf-8':mypage。encoding='utf-8'mypage。decode('utf-8')d=requests。get(form_url,headers=headers)。decode('utf-8')print(mypage。html)詳細代碼及實(shí)例請參考:。

php抓取網(wǎng)頁(yè)指定內容、動(dòng)態(tài)演示、頁(yè)面細節分析等等

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 88 次瀏覽 ? 2022-08-19 01:02 ? 來(lái)自相關(guān)話(huà)題

  php抓取網(wǎng)頁(yè)指定內容、動(dòng)態(tài)演示、頁(yè)面細節分析等等
  php抓取網(wǎng)頁(yè)指定內容、動(dòng)態(tài)演示、頁(yè)面細節分析等等,如果你需要php抓取功能的話(huà),
  h5框架的話(huà),當然小黑盒了,多線(xiàn)程腳本,自動(dòng)抓取內容,還是一個(gè)良心的框架,一個(gè)沒(méi)用過(guò)的第三方框架,都可以設置自動(dòng)抓取,這點(diǎn)小黑盒簡(jiǎn)直不要太贊。
  
  1.源碼加密可以提高性能有php,python的2.如果用框架寫(xiě)的話(huà),對于短鏈接,速度沒(méi)提高,如果放大鏈接2倍速度會(huì )進(jìn)步不少3.反向代理,可以緩解服務(wù)器壓力,
  安利sq,不僅具有"動(dòng)態(tài)演示"功能,還能提供你用手機、電腦一鍵抓取微信公眾號圖文消息,一鍵抓取b站視頻圖片、音樂(lè )、文章等內容。
  木螞蟻動(dòng)態(tài)演示功能蠻不錯的.
  
  phpstorm的模版支持,
  php的phpstorm或者vscode
  用過(guò)一些代理軟件,但有的有限制,像百度vpn小站的原理是用某種高效率帶寬做到簡(jiǎn)單編程服務(wù)器p2p,然后由aws等云提供統一的加速服務(wù),可以看一下解釋如下:從該圖中可以看出,網(wǎng)址-api選項,提供了訪(fǎng)問(wèn)phpstorm內部分享的代理,也就是真正在你機器上的代理,本地訪(fǎng)問(wèn),則是選中phpstorm,訪(fǎng)問(wèn)-api,依然是要通過(guò)服務(wù)器;但我感覺(jué)實(shí)際上phpstorm是一個(gè)擴展性非常強的后端代理(也算代理功能吧),可以手動(dòng)輸入ip和端口訪(fǎng)問(wèn)某些頁(yè)面,如下:(截圖僅供參考)當然,如果訪(fǎng)問(wèn)某些特定的頁(yè)面,有可能訪(fǎng)問(wèn)不了??傊?,可以用,但作用非常有限,小黑盒不錯,不過(guò)得去手動(dòng)添加代理,自己斟酌吧~。 查看全部

  php抓取網(wǎng)頁(yè)指定內容、動(dòng)態(tài)演示、頁(yè)面細節分析等等
  php抓取網(wǎng)頁(yè)指定內容、動(dòng)態(tài)演示、頁(yè)面細節分析等等,如果你需要php抓取功能的話(huà),
  h5框架的話(huà),當然小黑盒了,多線(xiàn)程腳本,自動(dòng)抓取內容,還是一個(gè)良心的框架,一個(gè)沒(méi)用過(guò)的第三方框架,都可以設置自動(dòng)抓取,這點(diǎn)小黑盒簡(jiǎn)直不要太贊。
  
  1.源碼加密可以提高性能有php,python的2.如果用框架寫(xiě)的話(huà),對于短鏈接,速度沒(méi)提高,如果放大鏈接2倍速度會(huì )進(jìn)步不少3.反向代理,可以緩解服務(wù)器壓力,
  安利sq,不僅具有"動(dòng)態(tài)演示"功能,還能提供你用手機、電腦一鍵抓取微信公眾號圖文消息,一鍵抓取b站視頻圖片、音樂(lè )、文章等內容。
  木螞蟻動(dòng)態(tài)演示功能蠻不錯的.
  
  phpstorm的模版支持,
  php的phpstorm或者vscode
  用過(guò)一些代理軟件,但有的有限制,像百度vpn小站的原理是用某種高效率帶寬做到簡(jiǎn)單編程服務(wù)器p2p,然后由aws等云提供統一的加速服務(wù),可以看一下解釋如下:從該圖中可以看出,網(wǎng)址-api選項,提供了訪(fǎng)問(wèn)phpstorm內部分享的代理,也就是真正在你機器上的代理,本地訪(fǎng)問(wèn),則是選中phpstorm,訪(fǎng)問(wèn)-api,依然是要通過(guò)服務(wù)器;但我感覺(jué)實(shí)際上phpstorm是一個(gè)擴展性非常強的后端代理(也算代理功能吧),可以手動(dòng)輸入ip和端口訪(fǎng)問(wèn)某些頁(yè)面,如下:(截圖僅供參考)當然,如果訪(fǎng)問(wèn)某些特定的頁(yè)面,有可能訪(fǎng)問(wèn)不了??傊?,可以用,但作用非常有限,小黑盒不錯,不過(guò)得去手動(dòng)添加代理,自己斟酌吧~。

php抓取網(wǎng)頁(yè)指定內容 常用的HTTP狀態(tài)碼

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 101 次瀏覽 ? 2022-08-17 18:53 ? 來(lái)自相關(guān)話(huà)題

  php抓取網(wǎng)頁(yè)指定內容 常用的HTTP狀態(tài)碼
  成功的狀態(tài)碼:
  200 – 服務(wù)器成功返回網(wǎng)頁(yè)
  304 – 未修改
  失敗的狀態(tài)碼:
  404 – 請求的網(wǎng)頁(yè)不存在
  503 – 服務(wù)器暫時(shí)不可用
  500 – 服務(wù)器內部錯誤
  下面的不是很常用,記住上面那幾個(gè)就ok了,有bug了再補充
  其他的狀態(tài)碼如下:
  1xx(臨時(shí)響應)
  用于表示臨時(shí)響應并需要請求者執行操作才能繼續的狀態(tài)代碼。
  100(Continue繼續)請求者應當繼續提出請求。服務(wù)器返回此代碼則意味著(zhù),服務(wù)器已收到了請求的第一部分,現正在等待接收其余部分。(HTTP 1.1新)
  101(Switching Protocols切換協(xié)議) 請求者已要求服務(wù)器切換協(xié)議,服務(wù)器已確認并準備進(jìn)行切換。(HTTP 1.1新)
  2xx(成功)
  用于表示服務(wù)器已成功處理了請求的狀態(tài)代碼。
  200(成功)服務(wù)器已成功處理了請求。通常,這表示服務(wù)器提供了請求的網(wǎng)頁(yè)。
  201(已創(chuàng )建)請求成功且服務(wù)器已創(chuàng )建了新的資源。
  202(已接受)服務(wù)器已接受了請求,但尚未對其進(jìn)行處理。
  
  203(非授權信息)服務(wù)器已成功處理了請求,但返回了可能來(lái)自另一來(lái)源的信息。
  204(無(wú)內容)服務(wù)器成功處理了請求,但未返回任何內容。
  205(重置內容)服務(wù)器成功處理了請求,但未返回任何內容。與 204 響應不同,此響應要求請求者重置文檔視圖(例如清除表單內容以輸入新內容)。
  206(部分內容)服務(wù)器成功處理了部分 GET 請求。
  3xx(已重定向)
  要完成請求,您需要進(jìn)一步進(jìn)行操作。通常,這些狀態(tài)代碼是永遠重定向的。Google 建議每次請求時(shí)使用的重定向要少于 5 個(gè)。
  300(多種選擇)服務(wù)器根據請求可執行多種操作。服務(wù)器可根據請求者 (User agent) 來(lái)選擇一項操作,或提供操作列表供請求者選擇。
  301(永久移動(dòng))請求的網(wǎng)頁(yè)已被永久移動(dòng)到新位置。服務(wù)器返回此響應(作為對 GET 或 HEAD 請求的響應)時(shí),會(huì )自動(dòng)將請求者轉到新位置。您應使用此代碼通知 Googlebot 某個(gè)網(wǎng)頁(yè)或網(wǎng)站已被永久移動(dòng)到新位置。
  302(臨時(shí)移動(dòng))服務(wù)器目前正從不同位置的網(wǎng)頁(yè)響應請求,但請求者應繼續使用原有位置來(lái)進(jìn)行以后的請求。此代碼與響應 GET 和 HEAD 請求的 301 代碼類(lèi)似,會(huì )自動(dòng)將請求者轉到不同的位置。但由于 Googlebot 會(huì )繼續抓取原有位置并將其編入索引,因此您不應使用此代碼來(lái)通知 Googlebot 某個(gè)頁(yè)面或網(wǎng)站已被移動(dòng)。
  303(查看其他位置)當請求者應對不同的位置進(jìn)行單獨的 GET 請求以檢索響應時(shí),服務(wù)器會(huì )返回此代碼。對于除 HEAD 請求之外的所有請求,服務(wù)器會(huì )自動(dòng)轉到其他位置。
  304(未修改)自從上次請求后,請求的網(wǎng)頁(yè)未被修改過(guò)。服務(wù)器返回此響應時(shí),不會(huì )返回網(wǎng)頁(yè)內容。
  305(使用代理)請求者只能使用代理訪(fǎng)問(wèn)請求的網(wǎng)頁(yè)。如果服務(wù)器返回此響應,那么,服務(wù)器還會(huì )指明請求者應當使用的代理。
  307(臨時(shí)重定向)服務(wù)器目前正從不同位置的網(wǎng)頁(yè)響應請求,但請求者應繼續使用原有位置來(lái)進(jìn)行以后的請求。此代碼與響應 GET 和 HEAD 請求的 301 代碼類(lèi)似,會(huì )自動(dòng)將請求者轉到不同的位置。但由于 Googlebot 會(huì )繼續抓取原有位置并將其編入索引,因此您不應使用此代碼來(lái)通知 Googlebot 某個(gè)頁(yè)面或網(wǎng)站已被移動(dòng)。
  4xx(請求錯誤)
  這些狀態(tài)代碼表示,請求可能出錯,已妨礙了服務(wù)器對請求的處理。
  400(錯誤請求)服務(wù)器不理解請求的語(yǔ)法。
  401(未授權)請求要求進(jìn)行身份驗證。登錄后,服務(wù)器可能會(huì )返回對頁(yè)面的此響應。
  403(已禁止)服務(wù)器拒絕請求。
  404(未找到)服務(wù)器找不到請求的網(wǎng)頁(yè)。例如,如果請求是針對服務(wù)器上不存在的網(wǎng)頁(yè)進(jìn)行的,那么,服務(wù)器通常會(huì )返回此代碼。
  
  405(方法禁用)禁用請求中所指定的方法。
  406(不接受)無(wú)法使用請求的內容特性來(lái)響應請求的網(wǎng)頁(yè)。
  407(需要代理授權)此狀態(tài)代碼與 401(未授權)類(lèi)似,但卻指定了請求者應當使用代理進(jìn)行授權。如果服務(wù)器返回此響應,那么,服務(wù)器還會(huì )指明請求者應當使用的代理。
  408(請求超時(shí))服務(wù)器等候請求時(shí)超時(shí)。
  409(沖突)服務(wù)器在完成請求時(shí)發(fā)生沖突。服務(wù)器必須包含有關(guān)響應中所發(fā)生的沖突的信息。服務(wù)器在響應與前一個(gè)請求相沖突的 PUT 請求時(shí)可能會(huì )返回此代碼,同時(shí)會(huì )提供兩個(gè)請求的差異列表。
  410(已刪除)如果請求的資源已被永久刪除,那么,服務(wù)器會(huì )返回此響應。該代碼與 404(未找到)代碼類(lèi)似,但在資源以前有但現在已經(jīng)不復存在的情況下,有時(shí)會(huì )替代 404 代碼出現。如果資源已被永久刪除,那么,您應當使用 301 代碼指定該資源的新位置。
  411(需要有效長(cháng)度)服務(wù)器不會(huì )接受包含無(wú)效內容長(cháng)度標頭字段的請求。
  412(未滿(mǎn)足前提條件)服務(wù)器未滿(mǎn)足請求者在請求中設置的其中一個(gè)前提條件。
  413(請求實(shí)體過(guò)大)服務(wù)器無(wú)法處理請求,因為請求實(shí)體過(guò)大,已超出服務(wù)器的處理能力。
  414(請求的 URI 過(guò)長(cháng))請求的 URI(通常為網(wǎng)址)過(guò)長(cháng),服務(wù)器無(wú)法進(jìn)行處理。
  415(不支持的媒體類(lèi)型)請求的格式不受請求頁(yè)面的支持。
  416(請求范圍不符合要求)如果請求是針對網(wǎng)頁(yè)的無(wú)效范圍進(jìn)行的,那么,服務(wù)器會(huì )返回此狀態(tài)代碼。
  417(未滿(mǎn)足期望值)服務(wù)器未滿(mǎn)足”期望”請求標頭字段的要求。
  5xx(服務(wù)器錯誤)
  這些狀態(tài)代碼表示,服務(wù)器在嘗試處理請求時(shí)發(fā)生內部錯誤。這些錯誤可能是服務(wù)器本身的錯誤,而不是請求出錯。
  500(服務(wù)器內部錯誤)服務(wù)器遇到錯誤,無(wú)法完成請求。
  501(尚未實(shí)施)服務(wù)器不具備完成請求的功能。例如,當服務(wù)器無(wú)法識別請求方法時(shí),服務(wù)器可能會(huì )返回此代碼。
  502(錯誤網(wǎng)關(guān))服務(wù)器作為網(wǎng)關(guān)或代理,從上游服務(wù)器收到了無(wú)效的響應。
  503(服務(wù)不可用)目前無(wú)法使用服務(wù)器(由于超載或進(jìn)行停機維護)。通常,這只是一種暫時(shí)的狀態(tài)。
  504(網(wǎng)關(guān)超時(shí))服務(wù)器作為網(wǎng)關(guān)或代理,未及時(shí)從上游服務(wù)器接收請求。 查看全部

  php抓取網(wǎng)頁(yè)指定內容 常用的HTTP狀態(tài)碼
  成功的狀態(tài)碼:
  200 – 服務(wù)器成功返回網(wǎng)頁(yè)
  304 – 未修改
  失敗的狀態(tài)碼:
  404 – 請求的網(wǎng)頁(yè)不存在
  503 – 服務(wù)器暫時(shí)不可用
  500 – 服務(wù)器內部錯誤
  下面的不是很常用,記住上面那幾個(gè)就ok了,有bug了再補充
  其他的狀態(tài)碼如下:
  1xx(臨時(shí)響應)
  用于表示臨時(shí)響應并需要請求者執行操作才能繼續的狀態(tài)代碼。
  100(Continue繼續)請求者應當繼續提出請求。服務(wù)器返回此代碼則意味著(zhù),服務(wù)器已收到了請求的第一部分,現正在等待接收其余部分。(HTTP 1.1新)
  101(Switching Protocols切換協(xié)議) 請求者已要求服務(wù)器切換協(xié)議,服務(wù)器已確認并準備進(jìn)行切換。(HTTP 1.1新)
  2xx(成功)
  用于表示服務(wù)器已成功處理了請求的狀態(tài)代碼。
  200(成功)服務(wù)器已成功處理了請求。通常,這表示服務(wù)器提供了請求的網(wǎng)頁(yè)。
  201(已創(chuàng )建)請求成功且服務(wù)器已創(chuàng )建了新的資源。
  202(已接受)服務(wù)器已接受了請求,但尚未對其進(jìn)行處理。
  
  203(非授權信息)服務(wù)器已成功處理了請求,但返回了可能來(lái)自另一來(lái)源的信息。
  204(無(wú)內容)服務(wù)器成功處理了請求,但未返回任何內容。
  205(重置內容)服務(wù)器成功處理了請求,但未返回任何內容。與 204 響應不同,此響應要求請求者重置文檔視圖(例如清除表單內容以輸入新內容)。
  206(部分內容)服務(wù)器成功處理了部分 GET 請求。
  3xx(已重定向)
  要完成請求,您需要進(jìn)一步進(jìn)行操作。通常,這些狀態(tài)代碼是永遠重定向的。Google 建議每次請求時(shí)使用的重定向要少于 5 個(gè)。
  300(多種選擇)服務(wù)器根據請求可執行多種操作。服務(wù)器可根據請求者 (User agent) 來(lái)選擇一項操作,或提供操作列表供請求者選擇。
  301(永久移動(dòng))請求的網(wǎng)頁(yè)已被永久移動(dòng)到新位置。服務(wù)器返回此響應(作為對 GET 或 HEAD 請求的響應)時(shí),會(huì )自動(dòng)將請求者轉到新位置。您應使用此代碼通知 Googlebot 某個(gè)網(wǎng)頁(yè)或網(wǎng)站已被永久移動(dòng)到新位置。
  302(臨時(shí)移動(dòng))服務(wù)器目前正從不同位置的網(wǎng)頁(yè)響應請求,但請求者應繼續使用原有位置來(lái)進(jìn)行以后的請求。此代碼與響應 GET 和 HEAD 請求的 301 代碼類(lèi)似,會(huì )自動(dòng)將請求者轉到不同的位置。但由于 Googlebot 會(huì )繼續抓取原有位置并將其編入索引,因此您不應使用此代碼來(lái)通知 Googlebot 某個(gè)頁(yè)面或網(wǎng)站已被移動(dòng)。
  303(查看其他位置)當請求者應對不同的位置進(jìn)行單獨的 GET 請求以檢索響應時(shí),服務(wù)器會(huì )返回此代碼。對于除 HEAD 請求之外的所有請求,服務(wù)器會(huì )自動(dòng)轉到其他位置。
  304(未修改)自從上次請求后,請求的網(wǎng)頁(yè)未被修改過(guò)。服務(wù)器返回此響應時(shí),不會(huì )返回網(wǎng)頁(yè)內容。
  305(使用代理)請求者只能使用代理訪(fǎng)問(wèn)請求的網(wǎng)頁(yè)。如果服務(wù)器返回此響應,那么,服務(wù)器還會(huì )指明請求者應當使用的代理。
  307(臨時(shí)重定向)服務(wù)器目前正從不同位置的網(wǎng)頁(yè)響應請求,但請求者應繼續使用原有位置來(lái)進(jìn)行以后的請求。此代碼與響應 GET 和 HEAD 請求的 301 代碼類(lèi)似,會(huì )自動(dòng)將請求者轉到不同的位置。但由于 Googlebot 會(huì )繼續抓取原有位置并將其編入索引,因此您不應使用此代碼來(lái)通知 Googlebot 某個(gè)頁(yè)面或網(wǎng)站已被移動(dòng)。
  4xx(請求錯誤)
  這些狀態(tài)代碼表示,請求可能出錯,已妨礙了服務(wù)器對請求的處理。
  400(錯誤請求)服務(wù)器不理解請求的語(yǔ)法。
  401(未授權)請求要求進(jìn)行身份驗證。登錄后,服務(wù)器可能會(huì )返回對頁(yè)面的此響應。
  403(已禁止)服務(wù)器拒絕請求。
  404(未找到)服務(wù)器找不到請求的網(wǎng)頁(yè)。例如,如果請求是針對服務(wù)器上不存在的網(wǎng)頁(yè)進(jìn)行的,那么,服務(wù)器通常會(huì )返回此代碼。
  
  405(方法禁用)禁用請求中所指定的方法。
  406(不接受)無(wú)法使用請求的內容特性來(lái)響應請求的網(wǎng)頁(yè)。
  407(需要代理授權)此狀態(tài)代碼與 401(未授權)類(lèi)似,但卻指定了請求者應當使用代理進(jìn)行授權。如果服務(wù)器返回此響應,那么,服務(wù)器還會(huì )指明請求者應當使用的代理。
  408(請求超時(shí))服務(wù)器等候請求時(shí)超時(shí)。
  409(沖突)服務(wù)器在完成請求時(shí)發(fā)生沖突。服務(wù)器必須包含有關(guān)響應中所發(fā)生的沖突的信息。服務(wù)器在響應與前一個(gè)請求相沖突的 PUT 請求時(shí)可能會(huì )返回此代碼,同時(shí)會(huì )提供兩個(gè)請求的差異列表。
  410(已刪除)如果請求的資源已被永久刪除,那么,服務(wù)器會(huì )返回此響應。該代碼與 404(未找到)代碼類(lèi)似,但在資源以前有但現在已經(jīng)不復存在的情況下,有時(shí)會(huì )替代 404 代碼出現。如果資源已被永久刪除,那么,您應當使用 301 代碼指定該資源的新位置。
  411(需要有效長(cháng)度)服務(wù)器不會(huì )接受包含無(wú)效內容長(cháng)度標頭字段的請求。
  412(未滿(mǎn)足前提條件)服務(wù)器未滿(mǎn)足請求者在請求中設置的其中一個(gè)前提條件。
  413(請求實(shí)體過(guò)大)服務(wù)器無(wú)法處理請求,因為請求實(shí)體過(guò)大,已超出服務(wù)器的處理能力。
  414(請求的 URI 過(guò)長(cháng))請求的 URI(通常為網(wǎng)址)過(guò)長(cháng),服務(wù)器無(wú)法進(jìn)行處理。
  415(不支持的媒體類(lèi)型)請求的格式不受請求頁(yè)面的支持。
  416(請求范圍不符合要求)如果請求是針對網(wǎng)頁(yè)的無(wú)效范圍進(jìn)行的,那么,服務(wù)器會(huì )返回此狀態(tài)代碼。
  417(未滿(mǎn)足期望值)服務(wù)器未滿(mǎn)足”期望”請求標頭字段的要求。
  5xx(服務(wù)器錯誤)
  這些狀態(tài)代碼表示,服務(wù)器在嘗試處理請求時(shí)發(fā)生內部錯誤。這些錯誤可能是服務(wù)器本身的錯誤,而不是請求出錯。
  500(服務(wù)器內部錯誤)服務(wù)器遇到錯誤,無(wú)法完成請求。
  501(尚未實(shí)施)服務(wù)器不具備完成請求的功能。例如,當服務(wù)器無(wú)法識別請求方法時(shí),服務(wù)器可能會(huì )返回此代碼。
  502(錯誤網(wǎng)關(guān))服務(wù)器作為網(wǎng)關(guān)或代理,從上游服務(wù)器收到了無(wú)效的響應。
  503(服務(wù)不可用)目前無(wú)法使用服務(wù)器(由于超載或進(jìn)行停機維護)。通常,這只是一種暫時(shí)的狀態(tài)。
  504(網(wǎng)關(guān)超時(shí))服務(wù)器作為網(wǎng)關(guān)或代理,未及時(shí)從上游服務(wù)器接收請求。

php抓取網(wǎng)頁(yè)指定內容,例如:我通過(guò)代理,抓取

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 75 次瀏覽 ? 2022-08-12 13:24 ? 來(lái)自相關(guān)話(huà)題

  php抓取網(wǎng)頁(yè)指定內容,例如:我通過(guò)代理,抓取
  php抓取網(wǎng)頁(yè)指定內容,例如:我通過(guò)代理,抓取,網(wǎng)頁(yè)中只有當前用戶(hù)對應的地址,地址中的數字即是useragent所指定的網(wǎng)頁(yè)源碼,例如中文"將軍令",可以抓取。整個(gè)程序不需要任何插件。注意php項目不要在命名中使用任何的形容詞。例如redis不要命名為redis,要改為redis.phpphp這個(gè)命名是沒(méi)有任何意義的。例如開(kāi)發(fā)php,wordpress,你可以直接寫(xiě)phppvcn的網(wǎng)址,而不是cn。php的安裝步驟。
  
  php
  百度上有很多,php如何抓取,網(wǎng)頁(yè)如何抓取,我都看過(guò),wordpress官方網(wǎng)站上就有一個(gè)例子。
  
  php.看一下其中一個(gè)有一個(gè)示例。然后你就知道怎么做了。我用的就是.還要用一個(gè)第三方。百度_-php.你可以google。
  在瀏覽器輸入php:10.1.25.402:/wordpress/wp-content/wp-content/wp-content/2/10.1.25.402.zh-cn/看效果:首先使用less腳本安裝-php模板管理器-建立模板-wp-content/wp-content/2/10.1.25.402然后less腳本配置~/.less這段代碼在php腳本的標簽中,所以后面跟開(kāi)頭一定要帶雙引號注意(為方便展示,此頁(yè)面其實(shí)只有幾十個(gè)內容都還在更新,我只貼了一部分截圖)代碼中其實(shí)包含了less腳本文件,以上截圖可以看出是通過(guò)less腳本把這些內容轉換為單行的less文件,并存入tabl標簽中,然后存入tabl標簽中的內容就轉換為wordpress的example.php,然后你在wordpress后臺登錄時(shí)系統自動(dòng)抓取頁(yè)面配置中的lat、lng的源代碼,我們通過(guò)lativ/lat文件,瀏覽器會(huì )獲取lat、lng頁(yè)面配置后wordpress的頁(yè)面源代碼后端就會(huì )抓取,也就是抓取所有頁(yè)面配置,所以wordpress服務(wù)器抓取就會(huì )抓取整個(gè)頁(yè)面,最后會(huì )轉換為php腳本文件發(fā)送給你,所以你懂的,你在瀏覽器輸入你要抓取的頁(yè)面名稱(chēng)后就會(huì )自動(dòng)發(fā)送至服務(wù)器,由服務(wù)器解析解析后發(fā)送至wordpress后臺,wordpress后臺會(huì )自動(dòng)更新頁(yè)面并提交給瀏覽器解析,返回給你要抓取的網(wǎng)頁(yè)。
  這個(gè)方法可以把模板的代碼轉換為wordpress的js代碼,解決靜態(tài)網(wǎng)頁(yè)抓取、seo、蜘蛛抓取難的問(wèn)題。有點(diǎn)復雜,等下有空慢慢上傳代碼~。 查看全部

  php抓取網(wǎng)頁(yè)指定內容,例如:我通過(guò)代理,抓取
  php抓取網(wǎng)頁(yè)指定內容,例如:我通過(guò)代理,抓取,網(wǎng)頁(yè)中只有當前用戶(hù)對應的地址,地址中的數字即是useragent所指定的網(wǎng)頁(yè)源碼,例如中文"將軍令",可以抓取。整個(gè)程序不需要任何插件。注意php項目不要在命名中使用任何的形容詞。例如redis不要命名為redis,要改為redis.phpphp這個(gè)命名是沒(méi)有任何意義的。例如開(kāi)發(fā)php,wordpress,你可以直接寫(xiě)phppvcn的網(wǎng)址,而不是cn。php的安裝步驟。
  
  php
  百度上有很多,php如何抓取,網(wǎng)頁(yè)如何抓取,我都看過(guò),wordpress官方網(wǎng)站上就有一個(gè)例子。
  
  php.看一下其中一個(gè)有一個(gè)示例。然后你就知道怎么做了。我用的就是.還要用一個(gè)第三方。百度_-php.你可以google。
  在瀏覽器輸入php:10.1.25.402:/wordpress/wp-content/wp-content/wp-content/2/10.1.25.402.zh-cn/看效果:首先使用less腳本安裝-php模板管理器-建立模板-wp-content/wp-content/2/10.1.25.402然后less腳本配置~/.less這段代碼在php腳本的標簽中,所以后面跟開(kāi)頭一定要帶雙引號注意(為方便展示,此頁(yè)面其實(shí)只有幾十個(gè)內容都還在更新,我只貼了一部分截圖)代碼中其實(shí)包含了less腳本文件,以上截圖可以看出是通過(guò)less腳本把這些內容轉換為單行的less文件,并存入tabl標簽中,然后存入tabl標簽中的內容就轉換為wordpress的example.php,然后你在wordpress后臺登錄時(shí)系統自動(dòng)抓取頁(yè)面配置中的lat、lng的源代碼,我們通過(guò)lativ/lat文件,瀏覽器會(huì )獲取lat、lng頁(yè)面配置后wordpress的頁(yè)面源代碼后端就會(huì )抓取,也就是抓取所有頁(yè)面配置,所以wordpress服務(wù)器抓取就會(huì )抓取整個(gè)頁(yè)面,最后會(huì )轉換為php腳本文件發(fā)送給你,所以你懂的,你在瀏覽器輸入你要抓取的頁(yè)面名稱(chēng)后就會(huì )自動(dòng)發(fā)送至服務(wù)器,由服務(wù)器解析解析后發(fā)送至wordpress后臺,wordpress后臺會(huì )自動(dòng)更新頁(yè)面并提交給瀏覽器解析,返回給你要抓取的網(wǎng)頁(yè)。
  這個(gè)方法可以把模板的代碼轉換為wordpress的js代碼,解決靜態(tài)網(wǎng)頁(yè)抓取、seo、蜘蛛抓取難的問(wèn)題。有點(diǎn)復雜,等下有空慢慢上傳代碼~。

php抓取網(wǎng)頁(yè)指定內容,具體的抓取方法(圖)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 297 次瀏覽 ? 2022-08-11 15:00 ? 來(lái)自相關(guān)話(huà)題

  php抓取網(wǎng)頁(yè)指定內容,具體的抓取方法(圖)
  php抓取網(wǎng)頁(yè)指定內容,具體的抓取方法如下:用戶(hù)名和密碼都是明文,因此我們只需要獲取到當前的php頁(yè)面。如果頁(yè)面不存在內容,可通過(guò)解析html文檔找到html元素,然后再去html中尋找相應的元素。1.首先抓取準備工作我們使用xpath來(lái)找到這個(gè)網(wǎng)頁(yè)中對應的html元素名,其中xpath就是我們今天的主角,text/plain標簽,我們將xpath中的*匹配值加到對應的值即可。
  
  xpath中的p和/p是不一樣的,如果我們想要獲取此類(lèi)網(wǎng)頁(yè)的內容,我們可以使用preg("//content/*")這樣做,但是postgrid.content=""//你可以在這里你獲取和指定不同的網(wǎng)頁(yè)源文件名稱(chēng),如果我們抓取一個(gè)網(wǎng)頁(yè),那么可以獲取其源文件名字符串(xpath中加startswith("")和/strong://body//,最大的區別是前者不是.而是[])就可以找到對應的網(wǎng)頁(yè)了。
  2.繼續準備工作我們抓取這個(gè)網(wǎng)頁(yè)并非獲取所有對應的內容,我們還需要看下上一步獲取的content中對應的html元素是什么,我們可以通過(guò)解析html文檔找到對應html元素名稱(chēng)(xpath中加startswith("")和/strong://body//這里和/strong://div//相同),就可以定位到我們要抓取的html網(wǎng)頁(yè)了。
  
  ps:xpath中p,text是相同的意思,但是后者是[]匹配所有的子元素,而前者是匹配指定的父元素。3.繼續準備工作現在我們已經(jīng)能找到我們想要的html網(wǎng)頁(yè)的內容了,那么我們就要拿出來(lái)它的xpath來(lái)解析這個(gè)html網(wǎng)頁(yè),要解析這個(gè)xpath的話(huà),我們必須寫(xiě)一個(gè)工具程序來(lái)解析這個(gè)xpath。我個(gè)人比較推薦easyconda管道,可以通過(guò)pipinstalleasyconda來(lái)安裝到easyconda主頁(yè)的下載。
  -installation.html#pip常用模塊:context定位weburl,即我們打開(kāi)的頁(yè)面,preg_replace匹配html元素,加強實(shí)用性。context_header定位postgrid中header的title值,如果我們還沒(méi)有指定(匹配該title值的網(wǎng)頁(yè)中不存在我們想要抓取的content),則不可以通過(guò)該方法找到我們想要的內容,然后再解析;匹配我們需要抓取的網(wǎng)頁(yè)源代碼中的content中的title值的方法。
  easycrawler這個(gè)包主要是管道包管理、context等,這個(gè)module在easyconda環(huán)境下可用。我們首先對html進(jìn)行正則匹配。首先通過(guò)正則來(lái)找到想要匹配的內容,例如:\he\togeto、\him\togeto等,可以通過(guò)我們剛才的代碼來(lái)顯示出來(lái)postgrid的模型是這樣,name是這個(gè)“json”數據的名字,content就是源文件名稱(chēng),或者我們可以通過(guò)前邊講過(guò)的filename表示當前頁(yè)面。 查看全部

  php抓取網(wǎng)頁(yè)指定內容,具體的抓取方法(圖)
  php抓取網(wǎng)頁(yè)指定內容,具體的抓取方法如下:用戶(hù)名和密碼都是明文,因此我們只需要獲取到當前的php頁(yè)面。如果頁(yè)面不存在內容,可通過(guò)解析html文檔找到html元素,然后再去html中尋找相應的元素。1.首先抓取準備工作我們使用xpath來(lái)找到這個(gè)網(wǎng)頁(yè)中對應的html元素名,其中xpath就是我們今天的主角,text/plain標簽,我們將xpath中的*匹配值加到對應的值即可。
  
  xpath中的p和/p是不一樣的,如果我們想要獲取此類(lèi)網(wǎng)頁(yè)的內容,我們可以使用preg("//content/*")這樣做,但是postgrid.content=""//你可以在這里你獲取和指定不同的網(wǎng)頁(yè)源文件名稱(chēng),如果我們抓取一個(gè)網(wǎng)頁(yè),那么可以獲取其源文件名字符串(xpath中加startswith("")和/strong://body//,最大的區別是前者不是.而是[])就可以找到對應的網(wǎng)頁(yè)了。
  2.繼續準備工作我們抓取這個(gè)網(wǎng)頁(yè)并非獲取所有對應的內容,我們還需要看下上一步獲取的content中對應的html元素是什么,我們可以通過(guò)解析html文檔找到對應html元素名稱(chēng)(xpath中加startswith("")和/strong://body//這里和/strong://div//相同),就可以定位到我們要抓取的html網(wǎng)頁(yè)了。
  
  ps:xpath中p,text是相同的意思,但是后者是[]匹配所有的子元素,而前者是匹配指定的父元素。3.繼續準備工作現在我們已經(jīng)能找到我們想要的html網(wǎng)頁(yè)的內容了,那么我們就要拿出來(lái)它的xpath來(lái)解析這個(gè)html網(wǎng)頁(yè),要解析這個(gè)xpath的話(huà),我們必須寫(xiě)一個(gè)工具程序來(lái)解析這個(gè)xpath。我個(gè)人比較推薦easyconda管道,可以通過(guò)pipinstalleasyconda來(lái)安裝到easyconda主頁(yè)的下載。
  -installation.html#pip常用模塊:context定位weburl,即我們打開(kāi)的頁(yè)面,preg_replace匹配html元素,加強實(shí)用性。context_header定位postgrid中header的title值,如果我們還沒(méi)有指定(匹配該title值的網(wǎng)頁(yè)中不存在我們想要抓取的content),則不可以通過(guò)該方法找到我們想要的內容,然后再解析;匹配我們需要抓取的網(wǎng)頁(yè)源代碼中的content中的title值的方法。
  easycrawler這個(gè)包主要是管道包管理、context等,這個(gè)module在easyconda環(huán)境下可用。我們首先對html進(jìn)行正則匹配。首先通過(guò)正則來(lái)找到想要匹配的內容,例如:\he\togeto、\him\togeto等,可以通過(guò)我們剛才的代碼來(lái)顯示出來(lái)postgrid的模型是這樣,name是這個(gè)“json”數據的名字,content就是源文件名稱(chēng),或者我們可以通過(guò)前邊講過(guò)的filename表示當前頁(yè)面。

樂(lè )語(yǔ)客小程序獲取頁(yè)面信息代碼及結果圖上

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 88 次瀏覽 ? 2022-07-30 01:05 ? 來(lái)自相關(guān)話(huà)題

  樂(lè )語(yǔ)客小程序獲取頁(yè)面信息代碼及結果圖上
  php抓取網(wǎng)頁(yè)指定內容舉例如下,在上圖示例中,我們想要獲取圖書(shū)房的名稱(chēng)信息。那么就需要下載下來(lái)一個(gè)頁(yè)面,如下圖:php獲取頁(yè)面信息代碼及結果圖上圖頁(yè)面相關(guān)內容已上傳至樂(lè )語(yǔ)客,請訪(fǎng)問(wèn)【libooklist.php】:或訪(fǎng)問(wèn)【libooklist.php】也可以使用樂(lè )語(yǔ)客的小程序搜索框,搜索“圖書(shū)館”進(jìn)入獲取內容,如下圖:樂(lè )語(yǔ)客小程序獲取圖書(shū)館名稱(chēng)對于不一定是掃描二維碼,不一定需要進(jìn)入對應網(wǎng)頁(yè),同樣可以獲取網(wǎng)頁(yè)上的內容,詳見(jiàn)下圖:獲取圖書(shū)館內部信息php如何抓取網(wǎng)頁(yè)上的代碼?常見(jiàn)的方法有兩種:一種是采用httpclient,獲取返回的http請求。
  
  另一種是getdata方法獲取頁(yè)面中的數據,舉例如下:常見(jiàn)的方法有兩種:一種是采用httpclient,獲取返回的http請求。另一種是getdata方法獲取頁(yè)面中的數據,如下圖:常見(jiàn)的方法有兩種:一種是采用httpclient,獲取返回的http請求。另一種是getdata方法獲取頁(yè)面中的數據,如下圖:。
  php調用封裝api:功能類(lèi)似.php(模塊一:爬蟲(chóng)模塊).php(功能類(lèi)似.php(二))
  
  動(dòng)手寫(xiě)下下面這個(gè)爬蟲(chóng)基本思路是從九牛圖對應內容分詞獲取關(guān)鍵字來(lái)實(shí)現爬蟲(chóng)功能代碼地址:
  不知道“php”這個(gè)標簽算不算。python爬蟲(chóng),
  既然邀請我了,所以我就來(lái)幫幫忙好了,看看有沒(méi)有人可以把這個(gè)列表爬下來(lái),以下是官方說(shuō)明, 查看全部

  樂(lè )語(yǔ)客小程序獲取頁(yè)面信息代碼及結果圖上
  php抓取網(wǎng)頁(yè)指定內容舉例如下,在上圖示例中,我們想要獲取圖書(shū)房的名稱(chēng)信息。那么就需要下載下來(lái)一個(gè)頁(yè)面,如下圖:php獲取頁(yè)面信息代碼及結果圖上圖頁(yè)面相關(guān)內容已上傳至樂(lè )語(yǔ)客,請訪(fǎng)問(wèn)【libooklist.php】:或訪(fǎng)問(wèn)【libooklist.php】也可以使用樂(lè )語(yǔ)客的小程序搜索框,搜索“圖書(shū)館”進(jìn)入獲取內容,如下圖:樂(lè )語(yǔ)客小程序獲取圖書(shū)館名稱(chēng)對于不一定是掃描二維碼,不一定需要進(jìn)入對應網(wǎng)頁(yè),同樣可以獲取網(wǎng)頁(yè)上的內容,詳見(jiàn)下圖:獲取圖書(shū)館內部信息php如何抓取網(wǎng)頁(yè)上的代碼?常見(jiàn)的方法有兩種:一種是采用httpclient,獲取返回的http請求。
  
  另一種是getdata方法獲取頁(yè)面中的數據,舉例如下:常見(jiàn)的方法有兩種:一種是采用httpclient,獲取返回的http請求。另一種是getdata方法獲取頁(yè)面中的數據,如下圖:常見(jiàn)的方法有兩種:一種是采用httpclient,獲取返回的http請求。另一種是getdata方法獲取頁(yè)面中的數據,如下圖:。
  php調用封裝api:功能類(lèi)似.php(模塊一:爬蟲(chóng)模塊).php(功能類(lèi)似.php(二))
  
  動(dòng)手寫(xiě)下下面這個(gè)爬蟲(chóng)基本思路是從九牛圖對應內容分詞獲取關(guān)鍵字來(lái)實(shí)現爬蟲(chóng)功能代碼地址:
  不知道“php”這個(gè)標簽算不算。python爬蟲(chóng),
  既然邀請我了,所以我就來(lái)幫幫忙好了,看看有沒(méi)有人可以把這個(gè)列表爬下來(lái),以下是官方說(shuō)明,

php抓取網(wǎng)頁(yè)指定內容的三種姿勢實(shí)現轉化主要分為以下三個(gè)方法(phpform_data方法)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 70 次瀏覽 ? 2022-07-06 20:09 ? 來(lái)自相關(guān)話(huà)題

  php抓取網(wǎng)頁(yè)指定內容的三種姿勢實(shí)現轉化主要分為以下三個(gè)方法(phpform_data方法)
  
  php抓取網(wǎng)頁(yè)指定內容的三種姿勢實(shí)現轉化主要分為以下三個(gè)方法(phpform_data方法)1.phpform_data方法{user_name:''authorization:''if[['error']]=='0'else'0'form_data_type:'image'else'image'}2.url_schema/urlencode_schema代碼如下:urlencode_schema參數如下:aliyun:400.122.16.x,imageurl:{'default_url':'/demo/','encoding':'utf-8'}以上四個(gè)參數,我們如果用base64編碼存儲圖片,可以填aliyun:400.122.16.xaliyun:400.122.16.x那么圖片就會(huì )存儲在400.122.16.x,因為我們希望這張圖片的url為400.122.16.x,這是我們用戶(hù)訪(fǎng)問(wèn)該頁(yè)面時(shí)所要傳遞的參數。
  
  我們可以根據圖片鏈接的key來(lái)返回圖片的url路徑,我們只需要寫(xiě)一個(gè)圖片鏈接的地址,然后配置圖片鏈接的encoding為aliyun:400.122.16.x,就可以獲取如下圖片的鏈接,每一個(gè)鏈接還可以通過(guò)encoding的值來(lái)指定圖片的格式:php代碼如下:${id}=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"];get('/photo',${id});從目錄里取圖片${id}=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","v","w","x","y","z"];get('/image',${id});從目錄里取圖片${id}=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","v","w","x","y","z"];get('/geometry',${id});從目錄里取圖片${id}=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","v","w","x","y","z"];get('/ul/a[1]/a{3}[2]',${id});從目錄里取圖片${id}=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y"。 查看全部

  php抓取網(wǎng)頁(yè)指定內容的三種姿勢實(shí)現轉化主要分為以下三個(gè)方法(phpform_data方法)
  
  php抓取網(wǎng)頁(yè)指定內容的三種姿勢實(shí)現轉化主要分為以下三個(gè)方法(phpform_data方法)1.phpform_data方法{user_name:''authorization:''if[['error']]=='0'else'0'form_data_type:'image'else'image'}2.url_schema/urlencode_schema代碼如下:urlencode_schema參數如下:aliyun:400.122.16.x,imageurl:{'default_url':'/demo/','encoding':'utf-8'}以上四個(gè)參數,我們如果用base64編碼存儲圖片,可以填aliyun:400.122.16.xaliyun:400.122.16.x那么圖片就會(huì )存儲在400.122.16.x,因為我們希望這張圖片的url為400.122.16.x,這是我們用戶(hù)訪(fǎng)問(wèn)該頁(yè)面時(shí)所要傳遞的參數。
  
  我們可以根據圖片鏈接的key來(lái)返回圖片的url路徑,我們只需要寫(xiě)一個(gè)圖片鏈接的地址,然后配置圖片鏈接的encoding為aliyun:400.122.16.x,就可以獲取如下圖片的鏈接,每一個(gè)鏈接還可以通過(guò)encoding的值來(lái)指定圖片的格式:php代碼如下:${id}=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"];get('/photo',${id});從目錄里取圖片${id}=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","v","w","x","y","z"];get('/image',${id});從目錄里取圖片${id}=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","v","w","x","y","z"];get('/geometry',${id});從目錄里取圖片${id}=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","v","w","x","y","z"];get('/ul/a[1]/a{3}[2]',${id});從目錄里取圖片${id}=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y"。

middlewares.post方法獲取需要的內容以及抓取所需的處理邏輯

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 80 次瀏覽 ? 2022-07-02 04:00 ? 來(lái)自相關(guān)話(huà)題

  middlewares.post方法獲取需要的內容以及抓取所需的處理邏輯
  
  php抓取網(wǎng)頁(yè)指定內容,然后自動(dòng)解析內容,比如看某人的網(wǎng)站抓取的分類(lèi)網(wǎng)頁(yè),然后看每個(gè)分類(lèi)下的站內鏈接,就知道該頁(yè)的那個(gè)小標題的鏈接可以抓,然后取出來(lái),用正則匹配,就能抽取這個(gè)頁(yè)內容。如果php抓取內容分頁(yè),就看分頁(yè)的內容鏈接就知道網(wǎng)頁(yè)可以往那個(gè)方向下的鏈接爬。
  
  f12,進(jìn)入調試面板,通過(guò)調用庫函數get、post,cookie,middlewares.get,middlewares.post方法獲取需要抓取的內容以及抓取所需的處理邏輯。ifthis.replace($_get['findstatus'],'1'):for$_get['findstatus']to$_server['http_post_connection']:if$_server['http_post_connection']!='1':returnelse:continue。
  需要知道抓取邏輯,關(guān)鍵詞,domain,域名,link,內容,一個(gè)不能少。抓取代碼如下://抓取首頁(yè),likeuseruser頁(yè)面上的相關(guān)html代碼獲取到后,需要去解析一下這些html代碼,去除冗余代碼,比如代碼中有user_agent,cookie,可以考慮去除!需要設置cookie對頁(yè)面的請求,或者抓取所需的內容采取加密算法對此處進(jìn)行處理!直接寫(xiě)代碼不過(guò)癮的話(huà),可以google“請求steam手柄位置”,即可通過(guò)python模擬實(shí)現!解決思路:代碼如下:#!/usr/bin/envpython#-*-coding:utf-8-*-fromrequestsimporthttp,httpsfrombs4importbeautifulsoupheaders={'user-agent':'mozilla/5.0(windowsnt6.1;win64;x64)applewebkit/537.36(khtml,likegecko)chrome/71.0.2740.152safari/537.36'}req=http.request('',headers=headers)get_content()。 查看全部

  middlewares.post方法獲取需要的內容以及抓取所需的處理邏輯
  
  php抓取網(wǎng)頁(yè)指定內容,然后自動(dòng)解析內容,比如看某人的網(wǎng)站抓取的分類(lèi)網(wǎng)頁(yè),然后看每個(gè)分類(lèi)下的站內鏈接,就知道該頁(yè)的那個(gè)小標題的鏈接可以抓,然后取出來(lái),用正則匹配,就能抽取這個(gè)頁(yè)內容。如果php抓取內容分頁(yè),就看分頁(yè)的內容鏈接就知道網(wǎng)頁(yè)可以往那個(gè)方向下的鏈接爬。
  
  f12,進(jìn)入調試面板,通過(guò)調用庫函數get、post,cookie,middlewares.get,middlewares.post方法獲取需要抓取的內容以及抓取所需的處理邏輯。ifthis.replace($_get['findstatus'],'1'):for$_get['findstatus']to$_server['http_post_connection']:if$_server['http_post_connection']!='1':returnelse:continue。
  需要知道抓取邏輯,關(guān)鍵詞,domain,域名,link,內容,一個(gè)不能少。抓取代碼如下://抓取首頁(yè),likeuseruser頁(yè)面上的相關(guān)html代碼獲取到后,需要去解析一下這些html代碼,去除冗余代碼,比如代碼中有user_agent,cookie,可以考慮去除!需要設置cookie對頁(yè)面的請求,或者抓取所需的內容采取加密算法對此處進(jìn)行處理!直接寫(xiě)代碼不過(guò)癮的話(huà),可以google“請求steam手柄位置”,即可通過(guò)python模擬實(shí)現!解決思路:代碼如下:#!/usr/bin/envpython#-*-coding:utf-8-*-fromrequestsimporthttp,httpsfrombs4importbeautifulsoupheaders={'user-agent':'mozilla/5.0(windowsnt6.1;win64;x64)applewebkit/537.36(khtml,likegecko)chrome/71.0.2740.152safari/537.36'}req=http.request('',headers=headers)get_content()。

我來(lái)教大家怎么用php抓取網(wǎng)頁(yè)指定內容(圖)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 78 次瀏覽 ? 2022-07-01 23:07 ? 來(lái)自相關(guān)話(huà)題

  我來(lái)教大家怎么用php抓取網(wǎng)頁(yè)指定內容(圖)
  php抓取網(wǎng)頁(yè)指定內容,我是一名反編譯工程師,我來(lái)教大家怎么用php抓取網(wǎng)頁(yè)內容,首先我們需要一個(gè)http服務(wù)器,來(lái)抓取網(wǎng)頁(yè)里面的內容。http服務(wù)器有一個(gè)環(huán)境要求:支持tcp和udp的都可以,我們可以用我們現有的vnc客戶(hù)端,去抓取網(wǎng)頁(yè),但是要做一些準備工作,這個(gè)和大家說(shuō)一下。準備工作:vnc下先一起創(chuàng )建一個(gè)vnc目錄,同時(shí)開(kāi)啟監聽(tīng)代理,ok.創(chuàng )建一個(gè)代理,然后掛載就可以抓取網(wǎng)頁(yè)了我用的是tomcat7,tomcat7是一個(gè)java平臺的中間層,提供了java和nginx在運行中所需要的額外的功能如果我們對代理有要求的話(huà),可以去了解一下nginx、apache等apache開(kāi)發(fā)者本身就是會(huì )有自己的私有代理。
  
  nginx提供了keepalive機制,當代理向瀏覽器發(fā)送http請求時(shí),會(huì )記錄這些流量,發(fā)送到自己的keepalivemaster,再由keepalivemaster轉發(fā)給瀏覽器來(lái)解析查看,這個(gè)在我們的開(kāi)發(fā)場(chǎng)景中會(huì )是很有用的,比如提供一個(gè)新用戶(hù)注冊功能在網(wǎng)頁(yè)上存儲一些數據、訪(fǎng)問(wèn)網(wǎng)頁(yè)的時(shí)候會(huì )把一些雜亂的請求收集起來(lái),比如判斷哪些是垃圾短信或者毒素等,或者建立一個(gè)日志文件,提交到os等等,都是有很有用的場(chǎng)景。
  我在研究jsp+php+vc+mysql的時(shí)候,有很多都是通過(guò)http代理來(lái)做的,我們只需要實(shí)現java端和php端即可,不用深入了解http的細節,我這里只是說(shuō)一下http這個(gè)機制對一些行業(yè)的幫助。然后第二步我們就是搭建phper開(kāi)發(fā)工具,我的開(kāi)發(fā)工具是我自己用tomcat開(kāi)發(fā)的,我下面只是通過(guò)一些示例來(lái)說(shuō)明,這些示例可以在我的博客中看到如何一步步的搭建一個(gè)反編譯工具。
  
  php開(kāi)發(fā)工具選擇介紹:tomcat7geforcememoryextractorweibo.io/tomcat-amtp-tamper-php-vswitchdubble-server.phpccliawaitgateway.stats.redirect_transport("http")windows下也可以直接在windows下安裝,一定要裝最新版本。
  下載地址,我這里用的是chembierconnector下載一個(gè)安裝:,這樣重啟到系統就可以有效識別php的url,然后我們可以開(kāi)始嘗試找一些網(wǎng)頁(yè)來(lái)進(jìn)行分析了。開(kāi)始找網(wǎng)頁(yè)分析第一步:首先,打開(kāi)開(kāi)發(fā)者工具,在開(kāi)發(fā)者工具那里會(huì )顯示一個(gè)關(guān)鍵詞,如上圖所示,下面我們我們點(diǎn)擊opensearch,開(kāi)始搜索我們需要抓取的網(wǎng)頁(yè)內容。
  在搜索框中輸入我們的目標網(wǎng)頁(yè)index.php和我們要搜索的關(guān)鍵詞,我們這里輸入了index.php,搜索結果如下,看到了這個(gè)頁(yè)面都在爬取什么內容,這里我們需要判斷一下這些內容是不是mysql庫里面的這些字段我們只需要一個(gè)個(gè)去讀取。打開(kāi)對應的mysql這個(gè)庫,對應的:lm。 查看全部

  我來(lái)教大家怎么用php抓取網(wǎng)頁(yè)指定內容(圖)
  php抓取網(wǎng)頁(yè)指定內容,我是一名反編譯工程師,我來(lái)教大家怎么用php抓取網(wǎng)頁(yè)內容,首先我們需要一個(gè)http服務(wù)器,來(lái)抓取網(wǎng)頁(yè)里面的內容。http服務(wù)器有一個(gè)環(huán)境要求:支持tcp和udp的都可以,我們可以用我們現有的vnc客戶(hù)端,去抓取網(wǎng)頁(yè),但是要做一些準備工作,這個(gè)和大家說(shuō)一下。準備工作:vnc下先一起創(chuàng )建一個(gè)vnc目錄,同時(shí)開(kāi)啟監聽(tīng)代理,ok.創(chuàng )建一個(gè)代理,然后掛載就可以抓取網(wǎng)頁(yè)了我用的是tomcat7,tomcat7是一個(gè)java平臺的中間層,提供了java和nginx在運行中所需要的額外的功能如果我們對代理有要求的話(huà),可以去了解一下nginx、apache等apache開(kāi)發(fā)者本身就是會(huì )有自己的私有代理。
  
  nginx提供了keepalive機制,當代理向瀏覽器發(fā)送http請求時(shí),會(huì )記錄這些流量,發(fā)送到自己的keepalivemaster,再由keepalivemaster轉發(fā)給瀏覽器來(lái)解析查看,這個(gè)在我們的開(kāi)發(fā)場(chǎng)景中會(huì )是很有用的,比如提供一個(gè)新用戶(hù)注冊功能在網(wǎng)頁(yè)上存儲一些數據、訪(fǎng)問(wèn)網(wǎng)頁(yè)的時(shí)候會(huì )把一些雜亂的請求收集起來(lái),比如判斷哪些是垃圾短信或者毒素等,或者建立一個(gè)日志文件,提交到os等等,都是有很有用的場(chǎng)景。
  我在研究jsp+php+vc+mysql的時(shí)候,有很多都是通過(guò)http代理來(lái)做的,我們只需要實(shí)現java端和php端即可,不用深入了解http的細節,我這里只是說(shuō)一下http這個(gè)機制對一些行業(yè)的幫助。然后第二步我們就是搭建phper開(kāi)發(fā)工具,我的開(kāi)發(fā)工具是我自己用tomcat開(kāi)發(fā)的,我下面只是通過(guò)一些示例來(lái)說(shuō)明,這些示例可以在我的博客中看到如何一步步的搭建一個(gè)反編譯工具。
  
  php開(kāi)發(fā)工具選擇介紹:tomcat7geforcememoryextractorweibo.io/tomcat-amtp-tamper-php-vswitchdubble-server.phpccliawaitgateway.stats.redirect_transport("http")windows下也可以直接在windows下安裝,一定要裝最新版本。
  下載地址,我這里用的是chembierconnector下載一個(gè)安裝:,這樣重啟到系統就可以有效識別php的url,然后我們可以開(kāi)始嘗試找一些網(wǎng)頁(yè)來(lái)進(jìn)行分析了。開(kāi)始找網(wǎng)頁(yè)分析第一步:首先,打開(kāi)開(kāi)發(fā)者工具,在開(kāi)發(fā)者工具那里會(huì )顯示一個(gè)關(guān)鍵詞,如上圖所示,下面我們我們點(diǎn)擊opensearch,開(kāi)始搜索我們需要抓取的網(wǎng)頁(yè)內容。
  在搜索框中輸入我們的目標網(wǎng)頁(yè)index.php和我們要搜索的關(guān)鍵詞,我們這里輸入了index.php,搜索結果如下,看到了這個(gè)頁(yè)面都在爬取什么內容,這里我們需要判斷一下這些內容是不是mysql庫里面的這些字段我們只需要一個(gè)個(gè)去讀取。打開(kāi)對應的mysql這個(gè)庫,對應的:lm。

php抓取網(wǎng)頁(yè)指定內容,需要internethttp1.1協(xié)議支持,抓取功能

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 85 次瀏覽 ? 2022-06-26 21:05 ? 來(lái)自相關(guān)話(huà)題

  php抓取網(wǎng)頁(yè)指定內容,需要internethttp1.1協(xié)議支持,抓取功能
  php抓取網(wǎng)頁(yè)指定內容,需要internethttp1.1協(xié)議支持,其中:一,字符重排編碼要做規定二,連接狀態(tài)檢查要建立好三,端口號要抓到且必須被加載最佳才可抓取四,即便發(fā)生連接失敗,也只有一次重新連接機會(huì )五,如果二連接完成后一直抓取失敗,
  ifttt,可以抓取你喜歡的動(dòng)漫的動(dòng)畫(huà)人物的動(dòng)畫(huà)鏡頭,還可以抓取你喜歡的電影或者電視劇的中的人物的動(dòng)畫(huà)鏡頭。其實(shí)videopro也有和php的requestlevel接口一樣的抓取功能,但是videopro需要用戶(hù)搭配ifttt使用,抓取動(dòng)畫(huà)的部分是一樣的。
  
  webprofilinganalysis
  balancepoolcachinganddatacollectoringassemblywithphplibframework,whichenablesanymanagedframeworkstoimprovecachingtime,crypto,andmultipleframeworksthataremoreneededtoimprovechangesfromtheframeworks。
  typessimilartopythonpoolcaching,libxml2internals,andrequests。whenyouusephp,youwillneedpackageswhichisallofthelibrariesforphp。whenyouareusingpython,theabsoluteframeworkisspecifictothepythonframework,andsothatthecompilermayignorechanges,compiling,orinitializingframeworks。
  sowhenyoudesignyourproject,theabsoluteframeworkwillchoosecompilerforphp。 查看全部

  php抓取網(wǎng)頁(yè)指定內容,需要internethttp1.1協(xié)議支持,抓取功能
  php抓取網(wǎng)頁(yè)指定內容,需要internethttp1.1協(xié)議支持,其中:一,字符重排編碼要做規定二,連接狀態(tài)檢查要建立好三,端口號要抓到且必須被加載最佳才可抓取四,即便發(fā)生連接失敗,也只有一次重新連接機會(huì )五,如果二連接完成后一直抓取失敗,
  ifttt,可以抓取你喜歡的動(dòng)漫的動(dòng)畫(huà)人物的動(dòng)畫(huà)鏡頭,還可以抓取你喜歡的電影或者電視劇的中的人物的動(dòng)畫(huà)鏡頭。其實(shí)videopro也有和php的requestlevel接口一樣的抓取功能,但是videopro需要用戶(hù)搭配ifttt使用,抓取動(dòng)畫(huà)的部分是一樣的。
  
  webprofilinganalysis
  balancepoolcachinganddatacollectoringassemblywithphplibframework,whichenablesanymanagedframeworkstoimprovecachingtime,crypto,andmultipleframeworksthataremoreneededtoimprovechangesfromtheframeworks。
  typessimilartopythonpoolcaching,libxml2internals,andrequests。whenyouusephp,youwillneedpackageswhichisallofthelibrariesforphp。whenyouareusingpython,theabsoluteframeworkisspecifictothepythonframework,andsothatthecompilermayignorechanges,compiling,orinitializingframeworks。
  sowhenyoudesignyourproject,theabsoluteframeworkwillchoosecompilerforphp。

php抓取網(wǎng)頁(yè)指定內容 常用的HTTP狀態(tài)碼

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 74 次瀏覽 ? 2022-06-25 00:50 ? 來(lái)自相關(guān)話(huà)題

  php抓取網(wǎng)頁(yè)指定內容 常用的HTTP狀態(tài)碼
  
  成功的狀態(tài)碼:
  200 – 服務(wù)器成功返回網(wǎng)頁(yè)
  304 – 未修改
  失敗的狀態(tài)碼:
  404 – 請求的網(wǎng)頁(yè)不存在
  503 – 服務(wù)器暫時(shí)不可用
  500 – 服務(wù)器內部錯誤
  下面的不是很常用,記住上面那幾個(gè)就ok了,有bug了再補充
  其他的狀態(tài)碼如下:
  1xx(臨時(shí)響應)
  用于表示臨時(shí)響應并需要請求者執行操作才能繼續的狀態(tài)代碼。
  100(Continue繼續)請求者應當繼續提出請求。服務(wù)器返回此代碼則意味著(zhù),服務(wù)器已收到了請求的第一部分,現正在等待接收其余部分。(HTTP 1.1新)
  101(Switching Protocols切換協(xié)議) 請求者已要求服務(wù)器切換協(xié)議,服務(wù)器已確認并準備進(jìn)行切換。(HTTP 1.1新)
  2xx(成功)
  用于表示服務(wù)器已成功處理了請求的狀態(tài)代碼。
  200(成功)服務(wù)器已成功處理了請求。通常,這表示服務(wù)器提供了請求的網(wǎng)頁(yè)。
  201(已創(chuàng )建)請求成功且服務(wù)器已創(chuàng )建了新的資源。
  202(已接受)服務(wù)器已接受了請求,但尚未對其進(jìn)行處理。
  203(非授權信息)服務(wù)器已成功處理了請求,但返回了可能來(lái)自另一來(lái)源的信息。
  204(無(wú)內容)服務(wù)器成功處理了請求,但未返回任何內容。
  205(重置內容)服務(wù)器成功處理了請求,但未返回任何內容。與 204 響應不同,此響應要求請求者重置文檔視圖(例如清除表單內容以輸入新內容)。
  206(部分內容)服務(wù)器成功處理了部分 GET 請求。
  3xx(已重定向)
  要完成請求,您需要進(jìn)一步進(jìn)行操作。通常,這些狀態(tài)代碼是永遠重定向的。Google 建議每次請求時(shí)使用的重定向要少于 5 個(gè)。
  300(多種選擇)服務(wù)器根據請求可執行多種操作。服務(wù)器可根據請求者 (User agent) 來(lái)選擇一項操作,或提供操作列表供請求者選擇。
  301(永久移動(dòng))請求的網(wǎng)頁(yè)已被永久移動(dòng)到新位置。服務(wù)器返回此響應(作為對 GET 或 HEAD 請求的響應)時(shí),會(huì )自動(dòng)將請求者轉到新位置。您應使用此代碼通知 Googlebot 某個(gè)網(wǎng)頁(yè)或網(wǎng)站已被永久移動(dòng)到新位置。
  302(臨時(shí)移動(dòng))服務(wù)器目前正從不同位置的網(wǎng)頁(yè)響應請求,但請求者應繼續使用原有位置來(lái)進(jìn)行以后的請求。此代碼與響應 GET 和 HEAD 請求的 301 代碼類(lèi)似,會(huì )自動(dòng)將請求者轉到不同的位置。但由于 Googlebot 會(huì )繼續抓取原有位置并將其編入索引,因此您不應使用此代碼來(lái)通知 Googlebot 某個(gè)頁(yè)面或網(wǎng)站已被移動(dòng)。
  303(查看其他位置)當請求者應對不同的位置進(jìn)行單獨的 GET 請求以檢索響應時(shí),服務(wù)器會(huì )返回此代碼。對于除 HEAD 請求之外的所有請求,服務(wù)器會(huì )自動(dòng)轉到其他位置。
  304(未修改)自從上次請求后,請求的網(wǎng)頁(yè)未被修改過(guò)。服務(wù)器返回此響應時(shí),不會(huì )返回網(wǎng)頁(yè)內容。
  305(使用代理)請求者只能使用代理訪(fǎng)問(wèn)請求的網(wǎng)頁(yè)。如果服務(wù)器返回此響應,那么,服務(wù)器還會(huì )指明請求者應當使用的代理。
  307(臨時(shí)重定向)服務(wù)器目前正從不同位置的網(wǎng)頁(yè)響應請求,但請求者應繼續使用原有位置來(lái)進(jìn)行以后的請求。此代碼與響應 GET 和 HEAD 請求的 301 代碼類(lèi)似,會(huì )自動(dòng)將請求者轉到不同的位置。但由于 Googlebot 會(huì )繼續抓取原有位置并將其編入索引,因此您不應使用此代碼來(lái)通知 Googlebot 某個(gè)頁(yè)面或網(wǎng)站已被移動(dòng)。
  4xx(請求錯誤)
  這些狀態(tài)代碼表示,請求可能出錯,已妨礙了服務(wù)器對請求的處理。
  400(錯誤請求)服務(wù)器不理解請求的語(yǔ)法。
  401(未授權)請求要求進(jìn)行身份驗證。登錄后,服務(wù)器可能會(huì )返回對頁(yè)面的此響應。
  403(已禁止)服務(wù)器拒絕請求。
  404(未找到)服務(wù)器找不到請求的網(wǎng)頁(yè)。例如,如果請求是針對服務(wù)器上不存在的網(wǎng)頁(yè)進(jìn)行的,那么,服務(wù)器通常會(huì )返回此代碼。
  405(方法禁用)禁用請求中所指定的方法。
  406(不接受)無(wú)法使用請求的內容特性來(lái)響應請求的網(wǎng)頁(yè)。
  407(需要代理授權)此狀態(tài)代碼與 401(未授權)類(lèi)似,但卻指定了請求者應當使用代理進(jìn)行授權。如果服務(wù)器返回此響應,那么,服務(wù)器還會(huì )指明請求者應當使用的代理。
  408(請求超時(shí))服務(wù)器等候請求時(shí)超時(shí)。
  409(沖突)服務(wù)器在完成請求時(shí)發(fā)生沖突。服務(wù)器必須包含有關(guān)響應中所發(fā)生的沖突的信息。服務(wù)器在響應與前一個(gè)請求相沖突的 PUT 請求時(shí)可能會(huì )返回此代碼,同時(shí)會(huì )提供兩個(gè)請求的差異列表。
  410(已刪除)如果請求的資源已被永久刪除,那么,服務(wù)器會(huì )返回此響應。該代碼與 404(未找到)代碼類(lèi)似,但在資源以前有但現在已經(jīng)不復存在的情況下,有時(shí)會(huì )替代 404 代碼出現。如果資源已被永久刪除,那么,您應當使用 301 代碼指定該資源的新位置。
  411(需要有效長(cháng)度)服務(wù)器不會(huì )接受包含無(wú)效內容長(cháng)度標頭字段的請求。
  412(未滿(mǎn)足前提條件)服務(wù)器未滿(mǎn)足請求者在請求中設置的其中一個(gè)前提條件。
  413(請求實(shí)體過(guò)大)服務(wù)器無(wú)法處理請求,因為請求實(shí)體過(guò)大,已超出服務(wù)器的處理能力。
  414(請求的 URI 過(guò)長(cháng))請求的 URI(通常為網(wǎng)址)過(guò)長(cháng),服務(wù)器無(wú)法進(jìn)行處理。
  415(不支持的媒體類(lèi)型)請求的格式不受請求頁(yè)面的支持。
  416(請求范圍不符合要求)如果請求是針對網(wǎng)頁(yè)的無(wú)效范圍進(jìn)行的,那么,服務(wù)器會(huì )返回此狀態(tài)代碼。
  417(未滿(mǎn)足期望值)服務(wù)器未滿(mǎn)足”期望”請求標頭字段的要求。
  5xx(服務(wù)器錯誤)
  這些狀態(tài)代碼表示,服務(wù)器在嘗試處理請求時(shí)發(fā)生內部錯誤。這些錯誤可能是服務(wù)器本身的錯誤,而不是請求出錯。
  500(服務(wù)器內部錯誤)服務(wù)器遇到錯誤,無(wú)法完成請求。
  501(尚未實(shí)施)服務(wù)器不具備完成請求的功能。例如,當服務(wù)器無(wú)法識別請求方法時(shí),服務(wù)器可能會(huì )返回此代碼。
  502(錯誤網(wǎng)關(guān))服務(wù)器作為網(wǎng)關(guān)或代理,從上游服務(wù)器收到了無(wú)效的響應。
  503(服務(wù)不可用)目前無(wú)法使用服務(wù)器(由于超載或進(jìn)行停機維護)。通常,這只是一種暫時(shí)的狀態(tài)。
  504(網(wǎng)關(guān)超時(shí))服務(wù)器作為網(wǎng)關(guān)或代理,未及時(shí)從上游服務(wù)器接收請求。 查看全部

  php抓取網(wǎng)頁(yè)指定內容 常用的HTTP狀態(tài)碼
  
  成功的狀態(tài)碼:
  200 – 服務(wù)器成功返回網(wǎng)頁(yè)
  304 – 未修改
  失敗的狀態(tài)碼:
  404 – 請求的網(wǎng)頁(yè)不存在
  503 – 服務(wù)器暫時(shí)不可用
  500 – 服務(wù)器內部錯誤
  下面的不是很常用,記住上面那幾個(gè)就ok了,有bug了再補充
  其他的狀態(tài)碼如下:
  1xx(臨時(shí)響應)
  用于表示臨時(shí)響應并需要請求者執行操作才能繼續的狀態(tài)代碼。
  100(Continue繼續)請求者應當繼續提出請求。服務(wù)器返回此代碼則意味著(zhù),服務(wù)器已收到了請求的第一部分,現正在等待接收其余部分。(HTTP 1.1新)
  101(Switching Protocols切換協(xié)議) 請求者已要求服務(wù)器切換協(xié)議,服務(wù)器已確認并準備進(jìn)行切換。(HTTP 1.1新)
  2xx(成功)
  用于表示服務(wù)器已成功處理了請求的狀態(tài)代碼。
  200(成功)服務(wù)器已成功處理了請求。通常,這表示服務(wù)器提供了請求的網(wǎng)頁(yè)。
  201(已創(chuàng )建)請求成功且服務(wù)器已創(chuàng )建了新的資源。
  202(已接受)服務(wù)器已接受了請求,但尚未對其進(jìn)行處理。
  203(非授權信息)服務(wù)器已成功處理了請求,但返回了可能來(lái)自另一來(lái)源的信息。
  204(無(wú)內容)服務(wù)器成功處理了請求,但未返回任何內容。
  205(重置內容)服務(wù)器成功處理了請求,但未返回任何內容。與 204 響應不同,此響應要求請求者重置文檔視圖(例如清除表單內容以輸入新內容)。
  206(部分內容)服務(wù)器成功處理了部分 GET 請求。
  3xx(已重定向)
  要完成請求,您需要進(jìn)一步進(jìn)行操作。通常,這些狀態(tài)代碼是永遠重定向的。Google 建議每次請求時(shí)使用的重定向要少于 5 個(gè)。
  300(多種選擇)服務(wù)器根據請求可執行多種操作。服務(wù)器可根據請求者 (User agent) 來(lái)選擇一項操作,或提供操作列表供請求者選擇。
  301(永久移動(dòng))請求的網(wǎng)頁(yè)已被永久移動(dòng)到新位置。服務(wù)器返回此響應(作為對 GET 或 HEAD 請求的響應)時(shí),會(huì )自動(dòng)將請求者轉到新位置。您應使用此代碼通知 Googlebot 某個(gè)網(wǎng)頁(yè)或網(wǎng)站已被永久移動(dòng)到新位置。
  302(臨時(shí)移動(dòng))服務(wù)器目前正從不同位置的網(wǎng)頁(yè)響應請求,但請求者應繼續使用原有位置來(lái)進(jìn)行以后的請求。此代碼與響應 GET 和 HEAD 請求的 301 代碼類(lèi)似,會(huì )自動(dòng)將請求者轉到不同的位置。但由于 Googlebot 會(huì )繼續抓取原有位置并將其編入索引,因此您不應使用此代碼來(lái)通知 Googlebot 某個(gè)頁(yè)面或網(wǎng)站已被移動(dòng)。
  303(查看其他位置)當請求者應對不同的位置進(jìn)行單獨的 GET 請求以檢索響應時(shí),服務(wù)器會(huì )返回此代碼。對于除 HEAD 請求之外的所有請求,服務(wù)器會(huì )自動(dòng)轉到其他位置。
  304(未修改)自從上次請求后,請求的網(wǎng)頁(yè)未被修改過(guò)。服務(wù)器返回此響應時(shí),不會(huì )返回網(wǎng)頁(yè)內容。
  305(使用代理)請求者只能使用代理訪(fǎng)問(wèn)請求的網(wǎng)頁(yè)。如果服務(wù)器返回此響應,那么,服務(wù)器還會(huì )指明請求者應當使用的代理。
  307(臨時(shí)重定向)服務(wù)器目前正從不同位置的網(wǎng)頁(yè)響應請求,但請求者應繼續使用原有位置來(lái)進(jìn)行以后的請求。此代碼與響應 GET 和 HEAD 請求的 301 代碼類(lèi)似,會(huì )自動(dòng)將請求者轉到不同的位置。但由于 Googlebot 會(huì )繼續抓取原有位置并將其編入索引,因此您不應使用此代碼來(lái)通知 Googlebot 某個(gè)頁(yè)面或網(wǎng)站已被移動(dòng)。
  4xx(請求錯誤)
  這些狀態(tài)代碼表示,請求可能出錯,已妨礙了服務(wù)器對請求的處理。
  400(錯誤請求)服務(wù)器不理解請求的語(yǔ)法。
  401(未授權)請求要求進(jìn)行身份驗證。登錄后,服務(wù)器可能會(huì )返回對頁(yè)面的此響應。
  403(已禁止)服務(wù)器拒絕請求。
  404(未找到)服務(wù)器找不到請求的網(wǎng)頁(yè)。例如,如果請求是針對服務(wù)器上不存在的網(wǎng)頁(yè)進(jìn)行的,那么,服務(wù)器通常會(huì )返回此代碼。
  405(方法禁用)禁用請求中所指定的方法。
  406(不接受)無(wú)法使用請求的內容特性來(lái)響應請求的網(wǎng)頁(yè)。
  407(需要代理授權)此狀態(tài)代碼與 401(未授權)類(lèi)似,但卻指定了請求者應當使用代理進(jìn)行授權。如果服務(wù)器返回此響應,那么,服務(wù)器還會(huì )指明請求者應當使用的代理。
  408(請求超時(shí))服務(wù)器等候請求時(shí)超時(shí)。
  409(沖突)服務(wù)器在完成請求時(shí)發(fā)生沖突。服務(wù)器必須包含有關(guān)響應中所發(fā)生的沖突的信息。服務(wù)器在響應與前一個(gè)請求相沖突的 PUT 請求時(shí)可能會(huì )返回此代碼,同時(shí)會(huì )提供兩個(gè)請求的差異列表。
  410(已刪除)如果請求的資源已被永久刪除,那么,服務(wù)器會(huì )返回此響應。該代碼與 404(未找到)代碼類(lèi)似,但在資源以前有但現在已經(jīng)不復存在的情況下,有時(shí)會(huì )替代 404 代碼出現。如果資源已被永久刪除,那么,您應當使用 301 代碼指定該資源的新位置。
  411(需要有效長(cháng)度)服務(wù)器不會(huì )接受包含無(wú)效內容長(cháng)度標頭字段的請求。
  412(未滿(mǎn)足前提條件)服務(wù)器未滿(mǎn)足請求者在請求中設置的其中一個(gè)前提條件。
  413(請求實(shí)體過(guò)大)服務(wù)器無(wú)法處理請求,因為請求實(shí)體過(guò)大,已超出服務(wù)器的處理能力。
  414(請求的 URI 過(guò)長(cháng))請求的 URI(通常為網(wǎng)址)過(guò)長(cháng),服務(wù)器無(wú)法進(jìn)行處理。
  415(不支持的媒體類(lèi)型)請求的格式不受請求頁(yè)面的支持。
  416(請求范圍不符合要求)如果請求是針對網(wǎng)頁(yè)的無(wú)效范圍進(jìn)行的,那么,服務(wù)器會(huì )返回此狀態(tài)代碼。
  417(未滿(mǎn)足期望值)服務(wù)器未滿(mǎn)足”期望”請求標頭字段的要求。
  5xx(服務(wù)器錯誤)
  這些狀態(tài)代碼表示,服務(wù)器在嘗試處理請求時(shí)發(fā)生內部錯誤。這些錯誤可能是服務(wù)器本身的錯誤,而不是請求出錯。
  500(服務(wù)器內部錯誤)服務(wù)器遇到錯誤,無(wú)法完成請求。
  501(尚未實(shí)施)服務(wù)器不具備完成請求的功能。例如,當服務(wù)器無(wú)法識別請求方法時(shí),服務(wù)器可能會(huì )返回此代碼。
  502(錯誤網(wǎng)關(guān))服務(wù)器作為網(wǎng)關(guān)或代理,從上游服務(wù)器收到了無(wú)效的響應。
  503(服務(wù)不可用)目前無(wú)法使用服務(wù)器(由于超載或進(jìn)行停機維護)。通常,這只是一種暫時(shí)的狀態(tài)。
  504(網(wǎng)關(guān)超時(shí))服務(wù)器作為網(wǎng)關(guān)或代理,未及時(shí)從上游服務(wù)器接收請求。

php抓取網(wǎng)頁(yè)指定內容 常用的HTTP狀態(tài)碼

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 106 次瀏覽 ? 2022-06-24 22:07 ? 來(lái)自相關(guān)話(huà)題

  php抓取網(wǎng)頁(yè)指定內容 常用的HTTP狀態(tài)碼
  
  成功的狀態(tài)碼:
  200 – 服務(wù)器成功返回網(wǎng)頁(yè)
  304 – 未修改
  失敗的狀態(tài)碼:
  404 – 請求的網(wǎng)頁(yè)不存在
  503 – 服務(wù)器暫時(shí)不可用
  500 – 服務(wù)器內部錯誤
  下面的不是很常用,記住上面那幾個(gè)就ok了,有bug了再補充
  其他的狀態(tài)碼如下:
  1xx(臨時(shí)響應)
  用于表示臨時(shí)響應并需要請求者執行操作才能繼續的狀態(tài)代碼。
  100(Continue繼續)請求者應當繼續提出請求。服務(wù)器返回此代碼則意味著(zhù),服務(wù)器已收到了請求的第一部分,現正在等待接收其余部分。(HTTP 1.1新)
  101(Switching Protocols切換協(xié)議) 請求者已要求服務(wù)器切換協(xié)議,服務(wù)器已確認并準備進(jìn)行切換。(HTTP 1.1新)
  2xx(成功)
  用于表示服務(wù)器已成功處理了請求的狀態(tài)代碼。
  200(成功)服務(wù)器已成功處理了請求。通常,這表示服務(wù)器提供了請求的網(wǎng)頁(yè)。
  201(已創(chuàng )建)請求成功且服務(wù)器已創(chuàng )建了新的資源。
  202(已接受)服務(wù)器已接受了請求,但尚未對其進(jìn)行處理。
  203(非授權信息)服務(wù)器已成功處理了請求,但返回了可能來(lái)自另一來(lái)源的信息。
  204(無(wú)內容)服務(wù)器成功處理了請求,但未返回任何內容。
  205(重置內容)服務(wù)器成功處理了請求,但未返回任何內容。與 204 響應不同,此響應要求請求者重置文檔視圖(例如清除表單內容以輸入新內容)。
  206(部分內容)服務(wù)器成功處理了部分 GET 請求。
  3xx(已重定向)
  要完成請求,您需要進(jìn)一步進(jìn)行操作。通常,這些狀態(tài)代碼是永遠重定向的。Google 建議每次請求時(shí)使用的重定向要少于 5 個(gè)。
  300(多種選擇)服務(wù)器根據請求可執行多種操作。服務(wù)器可根據請求者 (User agent) 來(lái)選擇一項操作,或提供操作列表供請求者選擇。
  301(永久移動(dòng))請求的網(wǎng)頁(yè)已被永久移動(dòng)到新位置。服務(wù)器返回此響應(作為對 GET 或 HEAD 請求的響應)時(shí),會(huì )自動(dòng)將請求者轉到新位置。您應使用此代碼通知 Googlebot 某個(gè)網(wǎng)頁(yè)或網(wǎng)站已被永久移動(dòng)到新位置。
  302(臨時(shí)移動(dòng))服務(wù)器目前正從不同位置的網(wǎng)頁(yè)響應請求,但請求者應繼續使用原有位置來(lái)進(jìn)行以后的請求。此代碼與響應 GET 和 HEAD 請求的 301 代碼類(lèi)似,會(huì )自動(dòng)將請求者轉到不同的位置。但由于 Googlebot 會(huì )繼續抓取原有位置并將其編入索引,因此您不應使用此代碼來(lái)通知 Googlebot 某個(gè)頁(yè)面或網(wǎng)站已被移動(dòng)。
  303(查看其他位置)當請求者應對不同的位置進(jìn)行單獨的 GET 請求以檢索響應時(shí),服務(wù)器會(huì )返回此代碼。對于除 HEAD 請求之外的所有請求,服務(wù)器會(huì )自動(dòng)轉到其他位置。
  304(未修改)自從上次請求后,請求的網(wǎng)頁(yè)未被修改過(guò)。服務(wù)器返回此響應時(shí),不會(huì )返回網(wǎng)頁(yè)內容。
  305(使用代理)請求者只能使用代理訪(fǎng)問(wèn)請求的網(wǎng)頁(yè)。如果服務(wù)器返回此響應,那么,服務(wù)器還會(huì )指明請求者應當使用的代理。
  307(臨時(shí)重定向)服務(wù)器目前正從不同位置的網(wǎng)頁(yè)響應請求,但請求者應繼續使用原有位置來(lái)進(jìn)行以后的請求。此代碼與響應 GET 和 HEAD 請求的 301 代碼類(lèi)似,會(huì )自動(dòng)將請求者轉到不同的位置。但由于 Googlebot 會(huì )繼續抓取原有位置并將其編入索引,因此您不應使用此代碼來(lái)通知 Googlebot 某個(gè)頁(yè)面或網(wǎng)站已被移動(dòng)。
  4xx(請求錯誤)
  這些狀態(tài)代碼表示,請求可能出錯,已妨礙了服務(wù)器對請求的處理。
  400(錯誤請求)服務(wù)器不理解請求的語(yǔ)法。
  401(未授權)請求要求進(jìn)行身份驗證。登錄后,服務(wù)器可能會(huì )返回對頁(yè)面的此響應。
  403(已禁止)服務(wù)器拒絕請求。
  404(未找到)服務(wù)器找不到請求的網(wǎng)頁(yè)。例如,如果請求是針對服務(wù)器上不存在的網(wǎng)頁(yè)進(jìn)行的,那么,服務(wù)器通常會(huì )返回此代碼。
  405(方法禁用)禁用請求中所指定的方法。
  406(不接受)無(wú)法使用請求的內容特性來(lái)響應請求的網(wǎng)頁(yè)。
  407(需要代理授權)此狀態(tài)代碼與 401(未授權)類(lèi)似,但卻指定了請求者應當使用代理進(jìn)行授權。如果服務(wù)器返回此響應,那么,服務(wù)器還會(huì )指明請求者應當使用的代理。
  408(請求超時(shí))服務(wù)器等候請求時(shí)超時(shí)。
  409(沖突)服務(wù)器在完成請求時(shí)發(fā)生沖突。服務(wù)器必須包含有關(guān)響應中所發(fā)生的沖突的信息。服務(wù)器在響應與前一個(gè)請求相沖突的 PUT 請求時(shí)可能會(huì )返回此代碼,同時(shí)會(huì )提供兩個(gè)請求的差異列表。
  410(已刪除)如果請求的資源已被永久刪除,那么,服務(wù)器會(huì )返回此響應。該代碼與 404(未找到)代碼類(lèi)似,但在資源以前有但現在已經(jīng)不復存在的情況下,有時(shí)會(huì )替代 404 代碼出現。如果資源已被永久刪除,那么,您應當使用 301 代碼指定該資源的新位置。
  411(需要有效長(cháng)度)服務(wù)器不會(huì )接受包含無(wú)效內容長(cháng)度標頭字段的請求。
  412(未滿(mǎn)足前提條件)服務(wù)器未滿(mǎn)足請求者在請求中設置的其中一個(gè)前提條件。
  413(請求實(shí)體過(guò)大)服務(wù)器無(wú)法處理請求,因為請求實(shí)體過(guò)大,已超出服務(wù)器的處理能力。
  414(請求的 URI 過(guò)長(cháng))請求的 URI(通常為網(wǎng)址)過(guò)長(cháng),服務(wù)器無(wú)法進(jìn)行處理。
  415(不支持的媒體類(lèi)型)請求的格式不受請求頁(yè)面的支持。
  416(請求范圍不符合要求)如果請求是針對網(wǎng)頁(yè)的無(wú)效范圍進(jìn)行的,那么,服務(wù)器會(huì )返回此狀態(tài)代碼。
  417(未滿(mǎn)足期望值)服務(wù)器未滿(mǎn)足”期望”請求標頭字段的要求。
  5xx(服務(wù)器錯誤)
  這些狀態(tài)代碼表示,服務(wù)器在嘗試處理請求時(shí)發(fā)生內部錯誤。這些錯誤可能是服務(wù)器本身的錯誤,而不是請求出錯。
  500(服務(wù)器內部錯誤)服務(wù)器遇到錯誤,無(wú)法完成請求。
  501(尚未實(shí)施)服務(wù)器不具備完成請求的功能。例如,當服務(wù)器無(wú)法識別請求方法時(shí),服務(wù)器可能會(huì )返回此代碼。
  502(錯誤網(wǎng)關(guān))服務(wù)器作為網(wǎng)關(guān)或代理,從上游服務(wù)器收到了無(wú)效的響應。
  503(服務(wù)不可用)目前無(wú)法使用服務(wù)器(由于超載或進(jìn)行停機維護)。通常,這只是一種暫時(shí)的狀態(tài)。
  504(網(wǎng)關(guān)超時(shí))服務(wù)器作為網(wǎng)關(guān)或代理,未及時(shí)從上游服務(wù)器接收請求。 查看全部

  php抓取網(wǎng)頁(yè)指定內容 常用的HTTP狀態(tài)碼
  
  成功的狀態(tài)碼:
  200 – 服務(wù)器成功返回網(wǎng)頁(yè)
  304 – 未修改
  失敗的狀態(tài)碼:
  404 – 請求的網(wǎng)頁(yè)不存在
  503 – 服務(wù)器暫時(shí)不可用
  500 – 服務(wù)器內部錯誤
  下面的不是很常用,記住上面那幾個(gè)就ok了,有bug了再補充
  其他的狀態(tài)碼如下:
  1xx(臨時(shí)響應)
  用于表示臨時(shí)響應并需要請求者執行操作才能繼續的狀態(tài)代碼。
  100(Continue繼續)請求者應當繼續提出請求。服務(wù)器返回此代碼則意味著(zhù),服務(wù)器已收到了請求的第一部分,現正在等待接收其余部分。(HTTP 1.1新)
  101(Switching Protocols切換協(xié)議) 請求者已要求服務(wù)器切換協(xié)議,服務(wù)器已確認并準備進(jìn)行切換。(HTTP 1.1新)
  2xx(成功)
  用于表示服務(wù)器已成功處理了請求的狀態(tài)代碼。
  200(成功)服務(wù)器已成功處理了請求。通常,這表示服務(wù)器提供了請求的網(wǎng)頁(yè)。
  201(已創(chuàng )建)請求成功且服務(wù)器已創(chuàng )建了新的資源。
  202(已接受)服務(wù)器已接受了請求,但尚未對其進(jìn)行處理。
  203(非授權信息)服務(wù)器已成功處理了請求,但返回了可能來(lái)自另一來(lái)源的信息。
  204(無(wú)內容)服務(wù)器成功處理了請求,但未返回任何內容。
  205(重置內容)服務(wù)器成功處理了請求,但未返回任何內容。與 204 響應不同,此響應要求請求者重置文檔視圖(例如清除表單內容以輸入新內容)。
  206(部分內容)服務(wù)器成功處理了部分 GET 請求。
  3xx(已重定向)
  要完成請求,您需要進(jìn)一步進(jìn)行操作。通常,這些狀態(tài)代碼是永遠重定向的。Google 建議每次請求時(shí)使用的重定向要少于 5 個(gè)。
  300(多種選擇)服務(wù)器根據請求可執行多種操作。服務(wù)器可根據請求者 (User agent) 來(lái)選擇一項操作,或提供操作列表供請求者選擇。
  301(永久移動(dòng))請求的網(wǎng)頁(yè)已被永久移動(dòng)到新位置。服務(wù)器返回此響應(作為對 GET 或 HEAD 請求的響應)時(shí),會(huì )自動(dòng)將請求者轉到新位置。您應使用此代碼通知 Googlebot 某個(gè)網(wǎng)頁(yè)或網(wǎng)站已被永久移動(dòng)到新位置。
  302(臨時(shí)移動(dòng))服務(wù)器目前正從不同位置的網(wǎng)頁(yè)響應請求,但請求者應繼續使用原有位置來(lái)進(jìn)行以后的請求。此代碼與響應 GET 和 HEAD 請求的 301 代碼類(lèi)似,會(huì )自動(dòng)將請求者轉到不同的位置。但由于 Googlebot 會(huì )繼續抓取原有位置并將其編入索引,因此您不應使用此代碼來(lái)通知 Googlebot 某個(gè)頁(yè)面或網(wǎng)站已被移動(dòng)。
  303(查看其他位置)當請求者應對不同的位置進(jìn)行單獨的 GET 請求以檢索響應時(shí),服務(wù)器會(huì )返回此代碼。對于除 HEAD 請求之外的所有請求,服務(wù)器會(huì )自動(dòng)轉到其他位置。
  304(未修改)自從上次請求后,請求的網(wǎng)頁(yè)未被修改過(guò)。服務(wù)器返回此響應時(shí),不會(huì )返回網(wǎng)頁(yè)內容。
  305(使用代理)請求者只能使用代理訪(fǎng)問(wèn)請求的網(wǎng)頁(yè)。如果服務(wù)器返回此響應,那么,服務(wù)器還會(huì )指明請求者應當使用的代理。
  307(臨時(shí)重定向)服務(wù)器目前正從不同位置的網(wǎng)頁(yè)響應請求,但請求者應繼續使用原有位置來(lái)進(jìn)行以后的請求。此代碼與響應 GET 和 HEAD 請求的 301 代碼類(lèi)似,會(huì )自動(dòng)將請求者轉到不同的位置。但由于 Googlebot 會(huì )繼續抓取原有位置并將其編入索引,因此您不應使用此代碼來(lái)通知 Googlebot 某個(gè)頁(yè)面或網(wǎng)站已被移動(dòng)。
  4xx(請求錯誤)
  這些狀態(tài)代碼表示,請求可能出錯,已妨礙了服務(wù)器對請求的處理。
  400(錯誤請求)服務(wù)器不理解請求的語(yǔ)法。
  401(未授權)請求要求進(jìn)行身份驗證。登錄后,服務(wù)器可能會(huì )返回對頁(yè)面的此響應。
  403(已禁止)服務(wù)器拒絕請求。
  404(未找到)服務(wù)器找不到請求的網(wǎng)頁(yè)。例如,如果請求是針對服務(wù)器上不存在的網(wǎng)頁(yè)進(jìn)行的,那么,服務(wù)器通常會(huì )返回此代碼。
  405(方法禁用)禁用請求中所指定的方法。
  406(不接受)無(wú)法使用請求的內容特性來(lái)響應請求的網(wǎng)頁(yè)。
  407(需要代理授權)此狀態(tài)代碼與 401(未授權)類(lèi)似,但卻指定了請求者應當使用代理進(jìn)行授權。如果服務(wù)器返回此響應,那么,服務(wù)器還會(huì )指明請求者應當使用的代理。
  408(請求超時(shí))服務(wù)器等候請求時(shí)超時(shí)。
  409(沖突)服務(wù)器在完成請求時(shí)發(fā)生沖突。服務(wù)器必須包含有關(guān)響應中所發(fā)生的沖突的信息。服務(wù)器在響應與前一個(gè)請求相沖突的 PUT 請求時(shí)可能會(huì )返回此代碼,同時(shí)會(huì )提供兩個(gè)請求的差異列表。
  410(已刪除)如果請求的資源已被永久刪除,那么,服務(wù)器會(huì )返回此響應。該代碼與 404(未找到)代碼類(lèi)似,但在資源以前有但現在已經(jīng)不復存在的情況下,有時(shí)會(huì )替代 404 代碼出現。如果資源已被永久刪除,那么,您應當使用 301 代碼指定該資源的新位置。
  411(需要有效長(cháng)度)服務(wù)器不會(huì )接受包含無(wú)效內容長(cháng)度標頭字段的請求。
  412(未滿(mǎn)足前提條件)服務(wù)器未滿(mǎn)足請求者在請求中設置的其中一個(gè)前提條件。
  413(請求實(shí)體過(guò)大)服務(wù)器無(wú)法處理請求,因為請求實(shí)體過(guò)大,已超出服務(wù)器的處理能力。
  414(請求的 URI 過(guò)長(cháng))請求的 URI(通常為網(wǎng)址)過(guò)長(cháng),服務(wù)器無(wú)法進(jìn)行處理。
  415(不支持的媒體類(lèi)型)請求的格式不受請求頁(yè)面的支持。
  416(請求范圍不符合要求)如果請求是針對網(wǎng)頁(yè)的無(wú)效范圍進(jìn)行的,那么,服務(wù)器會(huì )返回此狀態(tài)代碼。
  417(未滿(mǎn)足期望值)服務(wù)器未滿(mǎn)足”期望”請求標頭字段的要求。
  5xx(服務(wù)器錯誤)
  這些狀態(tài)代碼表示,服務(wù)器在嘗試處理請求時(shí)發(fā)生內部錯誤。這些錯誤可能是服務(wù)器本身的錯誤,而不是請求出錯。
  500(服務(wù)器內部錯誤)服務(wù)器遇到錯誤,無(wú)法完成請求。
  501(尚未實(shí)施)服務(wù)器不具備完成請求的功能。例如,當服務(wù)器無(wú)法識別請求方法時(shí),服務(wù)器可能會(huì )返回此代碼。
  502(錯誤網(wǎng)關(guān))服務(wù)器作為網(wǎng)關(guān)或代理,從上游服務(wù)器收到了無(wú)效的響應。
  503(服務(wù)不可用)目前無(wú)法使用服務(wù)器(由于超載或進(jìn)行停機維護)。通常,這只是一種暫時(shí)的狀態(tài)。
  504(網(wǎng)關(guān)超時(shí))服務(wù)器作為網(wǎng)關(guān)或代理,未及時(shí)從上游服務(wù)器接收請求。

php抓取網(wǎng)頁(yè)指定內容 常用的HTTP狀態(tài)碼

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 110 次瀏覽 ? 2022-06-21 16:54 ? 來(lái)自相關(guān)話(huà)題

  php抓取網(wǎng)頁(yè)指定內容 常用的HTTP狀態(tài)碼
  
  成功的狀態(tài)碼:
  200 – 服務(wù)器成功返回網(wǎng)頁(yè)
  304 – 未修改
  失敗的狀態(tài)碼:
  404 – 請求的網(wǎng)頁(yè)不存在
  503 – 服務(wù)器暫時(shí)不可用
  500 – 服務(wù)器內部錯誤
  下面的不是很常用,記住上面那幾個(gè)就ok了,有bug了再補充
  其他的狀態(tài)碼如下:
  1xx(臨時(shí)響應)
  用于表示臨時(shí)響應并需要請求者執行操作才能繼續的狀態(tài)代碼。
  100(Continue繼續)請求者應當繼續提出請求。服務(wù)器返回此代碼則意味著(zhù),服務(wù)器已收到了請求的第一部分,現正在等待接收其余部分。(HTTP 1.1新)
  101(Switching Protocols切換協(xié)議) 請求者已要求服務(wù)器切換協(xié)議,服務(wù)器已確認并準備進(jìn)行切換。(HTTP 1.1新)
  2xx(成功)
  用于表示服務(wù)器已成功處理了請求的狀態(tài)代碼。
  200(成功)服務(wù)器已成功處理了請求。通常,這表示服務(wù)器提供了請求的網(wǎng)頁(yè)。
  201(已創(chuàng )建)請求成功且服務(wù)器已創(chuàng )建了新的資源。
  202(已接受)服務(wù)器已接受了請求,但尚未對其進(jìn)行處理。
  203(非授權信息)服務(wù)器已成功處理了請求,但返回了可能來(lái)自另一來(lái)源的信息。
  204(無(wú)內容)服務(wù)器成功處理了請求,但未返回任何內容。
  205(重置內容)服務(wù)器成功處理了請求,但未返回任何內容。與 204 響應不同,此響應要求請求者重置文檔視圖(例如清除表單內容以輸入新內容)。
  206(部分內容)服務(wù)器成功處理了部分 GET 請求。
  3xx(已重定向)
  要完成請求,您需要進(jìn)一步進(jìn)行操作。通常,這些狀態(tài)代碼是永遠重定向的。Google 建議每次請求時(shí)使用的重定向要少于 5 個(gè)。
  300(多種選擇)服務(wù)器根據請求可執行多種操作。服務(wù)器可根據請求者 (User agent) 來(lái)選擇一項操作,或提供操作列表供請求者選擇。
  301(永久移動(dòng))請求的網(wǎng)頁(yè)已被永久移動(dòng)到新位置。服務(wù)器返回此響應(作為對 GET 或 HEAD 請求的響應)時(shí),會(huì )自動(dòng)將請求者轉到新位置。您應使用此代碼通知 Googlebot 某個(gè)網(wǎng)頁(yè)或網(wǎng)站已被永久移動(dòng)到新位置。
  302(臨時(shí)移動(dòng))服務(wù)器目前正從不同位置的網(wǎng)頁(yè)響應請求,但請求者應繼續使用原有位置來(lái)進(jìn)行以后的請求。此代碼與響應 GET 和 HEAD 請求的 301 代碼類(lèi)似,會(huì )自動(dòng)將請求者轉到不同的位置。但由于 Googlebot 會(huì )繼續抓取原有位置并將其編入索引,因此您不應使用此代碼來(lái)通知 Googlebot 某個(gè)頁(yè)面或網(wǎng)站已被移動(dòng)。
  303(查看其他位置)當請求者應對不同的位置進(jìn)行單獨的 GET 請求以檢索響應時(shí),服務(wù)器會(huì )返回此代碼。對于除 HEAD 請求之外的所有請求,服務(wù)器會(huì )自動(dòng)轉到其他位置。
  304(未修改)自從上次請求后,請求的網(wǎng)頁(yè)未被修改過(guò)。服務(wù)器返回此響應時(shí),不會(huì )返回網(wǎng)頁(yè)內容。
  305(使用代理)請求者只能使用代理訪(fǎng)問(wèn)請求的網(wǎng)頁(yè)。如果服務(wù)器返回此響應,那么,服務(wù)器還會(huì )指明請求者應當使用的代理。
  307(臨時(shí)重定向)服務(wù)器目前正從不同位置的網(wǎng)頁(yè)響應請求,但請求者應繼續使用原有位置來(lái)進(jìn)行以后的請求。此代碼與響應 GET 和 HEAD 請求的 301 代碼類(lèi)似,會(huì )自動(dòng)將請求者轉到不同的位置。但由于 Googlebot 會(huì )繼續抓取原有位置并將其編入索引,因此您不應使用此代碼來(lái)通知 Googlebot 某個(gè)頁(yè)面或網(wǎng)站已被移動(dòng)。
  4xx(請求錯誤)
  這些狀態(tài)代碼表示,請求可能出錯,已妨礙了服務(wù)器對請求的處理。
  400(錯誤請求)服務(wù)器不理解請求的語(yǔ)法。
  401(未授權)請求要求進(jìn)行身份驗證。登錄后,服務(wù)器可能會(huì )返回對頁(yè)面的此響應。
  403(已禁止)服務(wù)器拒絕請求。
  404(未找到)服務(wù)器找不到請求的網(wǎng)頁(yè)。例如,如果請求是針對服務(wù)器上不存在的網(wǎng)頁(yè)進(jìn)行的,那么,服務(wù)器通常會(huì )返回此代碼。
  405(方法禁用)禁用請求中所指定的方法。
  406(不接受)無(wú)法使用請求的內容特性來(lái)響應請求的網(wǎng)頁(yè)。
  407(需要代理授權)此狀態(tài)代碼與 401(未授權)類(lèi)似,但卻指定了請求者應當使用代理進(jìn)行授權。如果服務(wù)器返回此響應,那么,服務(wù)器還會(huì )指明請求者應當使用的代理。
  408(請求超時(shí))服務(wù)器等候請求時(shí)超時(shí)。
  409(沖突)服務(wù)器在完成請求時(shí)發(fā)生沖突。服務(wù)器必須包含有關(guān)響應中所發(fā)生的沖突的信息。服務(wù)器在響應與前一個(gè)請求相沖突的 PUT 請求時(shí)可能會(huì )返回此代碼,同時(shí)會(huì )提供兩個(gè)請求的差異列表。
  410(已刪除)如果請求的資源已被永久刪除,那么,服務(wù)器會(huì )返回此響應。該代碼與 404(未找到)代碼類(lèi)似,但在資源以前有但現在已經(jīng)不復存在的情況下,有時(shí)會(huì )替代 404 代碼出現。如果資源已被永久刪除,那么,您應當使用 301 代碼指定該資源的新位置。
  411(需要有效長(cháng)度)服務(wù)器不會(huì )接受包含無(wú)效內容長(cháng)度標頭字段的請求。
  412(未滿(mǎn)足前提條件)服務(wù)器未滿(mǎn)足請求者在請求中設置的其中一個(gè)前提條件。
  413(請求實(shí)體過(guò)大)服務(wù)器無(wú)法處理請求,因為請求實(shí)體過(guò)大,已超出服務(wù)器的處理能力。
  414(請求的 URI 過(guò)長(cháng))請求的 URI(通常為網(wǎng)址)過(guò)長(cháng),服務(wù)器無(wú)法進(jìn)行處理。
  415(不支持的媒體類(lèi)型)請求的格式不受請求頁(yè)面的支持。
  416(請求范圍不符合要求)如果請求是針對網(wǎng)頁(yè)的無(wú)效范圍進(jìn)行的,那么,服務(wù)器會(huì )返回此狀態(tài)代碼。
  417(未滿(mǎn)足期望值)服務(wù)器未滿(mǎn)足”期望”請求標頭字段的要求。
  5xx(服務(wù)器錯誤)
  這些狀態(tài)代碼表示,服務(wù)器在嘗試處理請求時(shí)發(fā)生內部錯誤。這些錯誤可能是服務(wù)器本身的錯誤,而不是請求出錯。
  500(服務(wù)器內部錯誤)服務(wù)器遇到錯誤,無(wú)法完成請求。
  501(尚未實(shí)施)服務(wù)器不具備完成請求的功能。例如,當服務(wù)器無(wú)法識別請求方法時(shí),服務(wù)器可能會(huì )返回此代碼。
  502(錯誤網(wǎng)關(guān))服務(wù)器作為網(wǎng)關(guān)或代理,從上游服務(wù)器收到了無(wú)效的響應。
  503(服務(wù)不可用)目前無(wú)法使用服務(wù)器(由于超載或進(jìn)行停機維護)。通常,這只是一種暫時(shí)的狀態(tài)。
  504(網(wǎng)關(guān)超時(shí))服務(wù)器作為網(wǎng)關(guān)或代理,未及時(shí)從上游服務(wù)器接收請求。 查看全部

  php抓取網(wǎng)頁(yè)指定內容 常用的HTTP狀態(tài)碼
  
  成功的狀態(tài)碼:
  200 – 服務(wù)器成功返回網(wǎng)頁(yè)
  304 – 未修改
  失敗的狀態(tài)碼:
  404 – 請求的網(wǎng)頁(yè)不存在
  503 – 服務(wù)器暫時(shí)不可用
  500 – 服務(wù)器內部錯誤
  下面的不是很常用,記住上面那幾個(gè)就ok了,有bug了再補充
  其他的狀態(tài)碼如下:
  1xx(臨時(shí)響應)
  用于表示臨時(shí)響應并需要請求者執行操作才能繼續的狀態(tài)代碼。
  100(Continue繼續)請求者應當繼續提出請求。服務(wù)器返回此代碼則意味著(zhù),服務(wù)器已收到了請求的第一部分,現正在等待接收其余部分。(HTTP 1.1新)
  101(Switching Protocols切換協(xié)議) 請求者已要求服務(wù)器切換協(xié)議,服務(wù)器已確認并準備進(jìn)行切換。(HTTP 1.1新)
  2xx(成功)
  用于表示服務(wù)器已成功處理了請求的狀態(tài)代碼。
  200(成功)服務(wù)器已成功處理了請求。通常,這表示服務(wù)器提供了請求的網(wǎng)頁(yè)。
  201(已創(chuàng )建)請求成功且服務(wù)器已創(chuàng )建了新的資源。
  202(已接受)服務(wù)器已接受了請求,但尚未對其進(jìn)行處理。
  203(非授權信息)服務(wù)器已成功處理了請求,但返回了可能來(lái)自另一來(lái)源的信息。
  204(無(wú)內容)服務(wù)器成功處理了請求,但未返回任何內容。
  205(重置內容)服務(wù)器成功處理了請求,但未返回任何內容。與 204 響應不同,此響應要求請求者重置文檔視圖(例如清除表單內容以輸入新內容)。
  206(部分內容)服務(wù)器成功處理了部分 GET 請求。
  3xx(已重定向)
  要完成請求,您需要進(jìn)一步進(jìn)行操作。通常,這些狀態(tài)代碼是永遠重定向的。Google 建議每次請求時(shí)使用的重定向要少于 5 個(gè)。
  300(多種選擇)服務(wù)器根據請求可執行多種操作。服務(wù)器可根據請求者 (User agent) 來(lái)選擇一項操作,或提供操作列表供請求者選擇。
  301(永久移動(dòng))請求的網(wǎng)頁(yè)已被永久移動(dòng)到新位置。服務(wù)器返回此響應(作為對 GET 或 HEAD 請求的響應)時(shí),會(huì )自動(dòng)將請求者轉到新位置。您應使用此代碼通知 Googlebot 某個(gè)網(wǎng)頁(yè)或網(wǎng)站已被永久移動(dòng)到新位置。
  302(臨時(shí)移動(dòng))服務(wù)器目前正從不同位置的網(wǎng)頁(yè)響應請求,但請求者應繼續使用原有位置來(lái)進(jìn)行以后的請求。此代碼與響應 GET 和 HEAD 請求的 301 代碼類(lèi)似,會(huì )自動(dòng)將請求者轉到不同的位置。但由于 Googlebot 會(huì )繼續抓取原有位置并將其編入索引,因此您不應使用此代碼來(lái)通知 Googlebot 某個(gè)頁(yè)面或網(wǎng)站已被移動(dòng)。
  303(查看其他位置)當請求者應對不同的位置進(jìn)行單獨的 GET 請求以檢索響應時(shí),服務(wù)器會(huì )返回此代碼。對于除 HEAD 請求之外的所有請求,服務(wù)器會(huì )自動(dòng)轉到其他位置。
  304(未修改)自從上次請求后,請求的網(wǎng)頁(yè)未被修改過(guò)。服務(wù)器返回此響應時(shí),不會(huì )返回網(wǎng)頁(yè)內容。
  305(使用代理)請求者只能使用代理訪(fǎng)問(wèn)請求的網(wǎng)頁(yè)。如果服務(wù)器返回此響應,那么,服務(wù)器還會(huì )指明請求者應當使用的代理。
  307(臨時(shí)重定向)服務(wù)器目前正從不同位置的網(wǎng)頁(yè)響應請求,但請求者應繼續使用原有位置來(lái)進(jìn)行以后的請求。此代碼與響應 GET 和 HEAD 請求的 301 代碼類(lèi)似,會(huì )自動(dòng)將請求者轉到不同的位置。但由于 Googlebot 會(huì )繼續抓取原有位置并將其編入索引,因此您不應使用此代碼來(lái)通知 Googlebot 某個(gè)頁(yè)面或網(wǎng)站已被移動(dòng)。
  4xx(請求錯誤)
  這些狀態(tài)代碼表示,請求可能出錯,已妨礙了服務(wù)器對請求的處理。
  400(錯誤請求)服務(wù)器不理解請求的語(yǔ)法。
  401(未授權)請求要求進(jìn)行身份驗證。登錄后,服務(wù)器可能會(huì )返回對頁(yè)面的此響應。
  403(已禁止)服務(wù)器拒絕請求。
  404(未找到)服務(wù)器找不到請求的網(wǎng)頁(yè)。例如,如果請求是針對服務(wù)器上不存在的網(wǎng)頁(yè)進(jìn)行的,那么,服務(wù)器通常會(huì )返回此代碼。
  405(方法禁用)禁用請求中所指定的方法。
  406(不接受)無(wú)法使用請求的內容特性來(lái)響應請求的網(wǎng)頁(yè)。
  407(需要代理授權)此狀態(tài)代碼與 401(未授權)類(lèi)似,但卻指定了請求者應當使用代理進(jìn)行授權。如果服務(wù)器返回此響應,那么,服務(wù)器還會(huì )指明請求者應當使用的代理。
  408(請求超時(shí))服務(wù)器等候請求時(shí)超時(shí)。
  409(沖突)服務(wù)器在完成請求時(shí)發(fā)生沖突。服務(wù)器必須包含有關(guān)響應中所發(fā)生的沖突的信息。服務(wù)器在響應與前一個(gè)請求相沖突的 PUT 請求時(shí)可能會(huì )返回此代碼,同時(shí)會(huì )提供兩個(gè)請求的差異列表。
  410(已刪除)如果請求的資源已被永久刪除,那么,服務(wù)器會(huì )返回此響應。該代碼與 404(未找到)代碼類(lèi)似,但在資源以前有但現在已經(jīng)不復存在的情況下,有時(shí)會(huì )替代 404 代碼出現。如果資源已被永久刪除,那么,您應當使用 301 代碼指定該資源的新位置。
  411(需要有效長(cháng)度)服務(wù)器不會(huì )接受包含無(wú)效內容長(cháng)度標頭字段的請求。
  412(未滿(mǎn)足前提條件)服務(wù)器未滿(mǎn)足請求者在請求中設置的其中一個(gè)前提條件。
  413(請求實(shí)體過(guò)大)服務(wù)器無(wú)法處理請求,因為請求實(shí)體過(guò)大,已超出服務(wù)器的處理能力。
  414(請求的 URI 過(guò)長(cháng))請求的 URI(通常為網(wǎng)址)過(guò)長(cháng),服務(wù)器無(wú)法進(jìn)行處理。
  415(不支持的媒體類(lèi)型)請求的格式不受請求頁(yè)面的支持。
  416(請求范圍不符合要求)如果請求是針對網(wǎng)頁(yè)的無(wú)效范圍進(jìn)行的,那么,服務(wù)器會(huì )返回此狀態(tài)代碼。
  417(未滿(mǎn)足期望值)服務(wù)器未滿(mǎn)足”期望”請求標頭字段的要求。
  5xx(服務(wù)器錯誤)
  這些狀態(tài)代碼表示,服務(wù)器在嘗試處理請求時(shí)發(fā)生內部錯誤。這些錯誤可能是服務(wù)器本身的錯誤,而不是請求出錯。
  500(服務(wù)器內部錯誤)服務(wù)器遇到錯誤,無(wú)法完成請求。
  501(尚未實(shí)施)服務(wù)器不具備完成請求的功能。例如,當服務(wù)器無(wú)法識別請求方法時(shí),服務(wù)器可能會(huì )返回此代碼。
  502(錯誤網(wǎng)關(guān))服務(wù)器作為網(wǎng)關(guān)或代理,從上游服務(wù)器收到了無(wú)效的響應。
  503(服務(wù)不可用)目前無(wú)法使用服務(wù)器(由于超載或進(jìn)行停機維護)。通常,這只是一種暫時(shí)的狀態(tài)。
  504(網(wǎng)關(guān)超時(shí))服務(wù)器作為網(wǎng)關(guān)或代理,未及時(shí)從上游服務(wù)器接收請求。

個(gè)人網(wǎng)站收錄數據提交,360,百度,搜狗

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 90 次瀏覽 ? 2022-05-26 18:15 ? 來(lái)自相關(guān)話(huà)題

  個(gè)人網(wǎng)站收錄數據提交,360,百度,搜狗
  前言
  我們個(gè)人的博客網(wǎng)站,每發(fā)布一篇新的文章。當然是希望各大搜索引擎能盡快進(jìn)行收錄。
  因為只有收錄了才有希望能夠被網(wǎng)友們搜索到。
  下面主要介紹一下,國內的幾個(gè)搜索平臺的收錄(ps:神馬搜索一直無(wú)法認證,我也無(wú)語(yǔ)了)
  關(guān)于收錄平臺我有一篇文章介紹過(guò),不太了解的話(huà)可以看看:自建網(wǎng)站,必須了解的各搜索網(wǎng)站的收錄平臺,以及seo概念的通俗解釋 ()
  介紹
  我們要提高搜索引擎對我們的收錄,就不能坐等爬蟲(chóng)爬取。否則速度比較慢。
  這個(gè)時(shí)候我們需要主動(dòng)將最新的文章的鏈接提供給各大搜索平臺。
  這個(gè)操作就是所謂的鏈接收錄了。
  1. 百度收錄 :
  百度主要有兩種:快速收錄和普通收錄。
  如果要開(kāi)通快速收錄,我們需要建立一個(gè)百度小程序,否則百度不給你權限。
  
  而普通收錄主要分為:
  上面的方法也是逐步降低使用門(mén)檻的。但是后果就是繁瑣,需要我們主動(dòng)進(jìn)行維護和提交。
  1.1 使用sitemap
  我們在自己的博客存儲一個(gè)sitemap文件。然后將該文件的鏈接告訴給百度。每一段時(shí)間更新一下該文檔。
  可以實(shí)現批量的收錄導入功能。
  百度會(huì )周期性的抓取檢查我們提交的Sitemap文件,對其中的鏈接進(jìn)行處理,但收錄速度慢于A(yíng)PI推送。
  sitemap的文檔格式主要有txt和xml 。也就是說(shuō)我們在服務(wù)器上創(chuàng )建一個(gè)xxx.txt或xml 文件然后將文件訪(fǎng)問(wèn)地址告訴百度
  就可實(shí)現sitemap收錄了。
  txt文本格式:
  http://www.example.com/repaste ... %3Bbr />http://www.example.com/repaste ... %3Bbr />http://www.example.com/repaste ... %3Bbr />
  xml文本格式:
  <br /><br /><br /> <br /> <br /> <br /> http://www.yoursite.com/yoursite.html<br /> <br /> 2009-12-14<br /> <br /> daily<br /> <br /> 0.8<br /> <br /> <br /> http://www.yoursite.com/yoursite2.html<br /> 2010-05-01<br /> daily<br /> 0.8<br /> <br /><br />
  其他的細節就不說(shuō)了。
  1.2.使用百度統計js,自動(dòng)提交收錄
  其實(shí)sitemap只是適用于已有大量網(wǎng)站,但是未進(jìn)行收錄的情況。
  我們不能每寫(xiě)一條文章發(fā)表,就弄一個(gè)sitemap文件吧。那也太復雜了。
  針對這種需求,百度統計JS實(shí)現了自動(dòng)收錄功能。也就是說(shuō)我們網(wǎng)站如果使用的百度js。那么當我們的頁(yè)面被訪(fǎng)問(wèn)的時(shí)候
  會(huì )自動(dòng)推送到百度收錄庫中等待百度進(jìn)行收錄。
  
  我現在使用的joe2 的主題也支持了自動(dòng)提交收錄,采用的是api提交方式。
  我們如果使用api收錄,然后再使用統計js進(jìn)行收錄。兩種重復提交不會(huì )有影響。我們可以放心使用。
  2. 360收錄:
  就我個(gè)人在360收錄上的使用來(lái)看,沒(méi)有百度收錄快。也許連搜狗搜索的收錄速度都比不上。
  
  在它的站長(cháng)平臺上也有三種收錄,
  
  我們能用的也就是sitemap收錄了。
  2.1 sitemap
  使用sitemap 的要求是:
  單個(gè)Sitemap文件:大小不超過(guò)10MB,且包含不超過(guò)5萬(wàn)個(gè)網(wǎng)址。如果網(wǎng)站所包含的網(wǎng)址超過(guò)5萬(wàn)個(gè),則可將列表分割成多個(gè)Sitemap文件,放在Sitemap索引中
  單個(gè)Sitemap索引文件:大小不能超過(guò)500M,如果超過(guò)請提交多個(gè)Sitemap索引文件接口
  您可以采用如下三種格式的文件向360搜索提交Sitemap,文件編碼可以是UTF-8或GBK:1)標準的XML格式文件 2)文本格式文件 3)Sitemap索引文件(可同時(shí)包含多個(gè)Sitemap文件)
  其實(shí)和百度的sitemap文件的要求差不多。
  xml文檔格式:
   <br /> <br /> <br /> <br /> <br /> <br /> http://www.xxxxxx.html/000000.html<br /> <br /> 2012-12-01<br /> <br /> daily<br /> <br /> 0.8<br /> <br /> <br /> http://www.xxxxxx.html/000001.html<br /> 2012-12-01<br /> daily<br /> 0.8<br /> <br /> <br />
  txt文件格式:
  http://www.xxxxxx.html/1015626 ... %3Bbr />http://www.xxxxxx.html/1015862 ... %3Bbr />http://www.xxxxxx.html/1016394 ... %3Bbr />
  索引文件格式:(適用于數據較多的情況下。)
   <br /> <br /> <br /> http://www.example.com/1.xml<br /> 2012-12-01<br /> <br /> <br /> http://www.example.com/2.xml<br /> 2012-12-01<br /> <br /> <br />
  上面的loc 是其他的sitempa文件對象。因為上面已經(jīng)說(shuō)了一個(gè)文件不能超過(guò)10M。5萬(wàn)條數據。
  3. 搜狗收錄:
  搜狗搜索收錄就更簡(jiǎn)陋了。它默認不支持sitemap收錄。需要我們自己主動(dòng)收錄。
  也就是說(shuō)我們需要手動(dòng)在它的管理臺上填寫(xiě)url進(jìn)行收錄。
  
  除非你的網(wǎng)站權重高,主動(dòng)找官方給你開(kāi)通sitemap收錄。否則現在是沒(méi)有的。
  然后我們在上面主動(dòng)提交鏈接的話(huà),每天只能提交20條url。
  
  直接將我們的url 復制上去就可以了。
  到這里,我們的收錄就提交完畢了。剩下的就是等待搜索平臺審核鏈接了。
  之后需要慢慢等待了,注意更新你的網(wǎng)站內容。否則搜索引擎會(huì )判斷網(wǎng)站質(zhì)量不行減少收錄。
  我們提交的鏈接也不一定會(huì )全部進(jìn)行收錄。搜索引擎的算法會(huì )過(guò)濾和檢測我們的鏈接指向的網(wǎng)站資源。如果內容質(zhì)量太差或者已經(jīng)網(wǎng)上已經(jīng)存在了大量的相同的資料,那么就會(huì )被搜索算法拋棄掉。
  參考資料
  百度統計升級網(wǎng)頁(yè)實(shí)時(shí)推送至搜索引擎功能,提升網(wǎng)頁(yè)抓取速度!【吧】_百度貼吧 ()
  平臺工具使用手冊_普通收錄_搜索學(xué)堂_百度搜索資源平臺 ()
  主動(dòng)收錄中的自動(dòng)推送出錯且影響到首頁(yè)打開(kāi)速度了_360社區
  360自動(dòng)收錄的代碼還有用嗎?_360社區
  sitemap提交_360搜索使用幫助 () 查看全部

  個(gè)人網(wǎng)站收錄數據提交,360,百度,搜狗
  前言
  我們個(gè)人的博客網(wǎng)站,每發(fā)布一篇新的文章。當然是希望各大搜索引擎能盡快進(jìn)行收錄。
  因為只有收錄了才有希望能夠被網(wǎng)友們搜索到。
  下面主要介紹一下,國內的幾個(gè)搜索平臺的收錄(ps:神馬搜索一直無(wú)法認證,我也無(wú)語(yǔ)了)
  關(guān)于收錄平臺我有一篇文章介紹過(guò),不太了解的話(huà)可以看看:自建網(wǎng)站,必須了解的各搜索網(wǎng)站的收錄平臺,以及seo概念的通俗解釋 ()
  介紹
  我們要提高搜索引擎對我們的收錄,就不能坐等爬蟲(chóng)爬取。否則速度比較慢。
  這個(gè)時(shí)候我們需要主動(dòng)將最新的文章的鏈接提供給各大搜索平臺。
  這個(gè)操作就是所謂的鏈接收錄了。
  1. 百度收錄 :
  百度主要有兩種:快速收錄和普通收錄。
  如果要開(kāi)通快速收錄,我們需要建立一個(gè)百度小程序,否則百度不給你權限。
  
  而普通收錄主要分為:
  上面的方法也是逐步降低使用門(mén)檻的。但是后果就是繁瑣,需要我們主動(dòng)進(jìn)行維護和提交。
  1.1 使用sitemap
  我們在自己的博客存儲一個(gè)sitemap文件。然后將該文件的鏈接告訴給百度。每一段時(shí)間更新一下該文檔。
  可以實(shí)現批量的收錄導入功能。
  百度會(huì )周期性的抓取檢查我們提交的Sitemap文件,對其中的鏈接進(jìn)行處理,但收錄速度慢于A(yíng)PI推送。
  sitemap的文檔格式主要有txt和xml 。也就是說(shuō)我們在服務(wù)器上創(chuàng )建一個(gè)xxx.txt或xml 文件然后將文件訪(fǎng)問(wèn)地址告訴百度
  就可實(shí)現sitemap收錄了。
  txt文本格式:
  http://www.example.com/repaste ... %3Bbr />http://www.example.com/repaste ... %3Bbr />http://www.example.com/repaste ... %3Bbr />
  xml文本格式:
  <br /><br /><br /> <br /> <br /> <br /> http://www.yoursite.com/yoursite.html<br /> <br /> 2009-12-14<br /> <br /> daily<br /> <br /> 0.8<br /> <br /> <br /> http://www.yoursite.com/yoursite2.html<br /> 2010-05-01<br /> daily<br /> 0.8<br /> <br /><br />
  其他的細節就不說(shuō)了。
  1.2.使用百度統計js,自動(dòng)提交收錄
  其實(shí)sitemap只是適用于已有大量網(wǎng)站,但是未進(jìn)行收錄的情況。
  我們不能每寫(xiě)一條文章發(fā)表,就弄一個(gè)sitemap文件吧。那也太復雜了。
  針對這種需求,百度統計JS實(shí)現了自動(dòng)收錄功能。也就是說(shuō)我們網(wǎng)站如果使用的百度js。那么當我們的頁(yè)面被訪(fǎng)問(wèn)的時(shí)候
  會(huì )自動(dòng)推送到百度收錄庫中等待百度進(jìn)行收錄。
  
  我現在使用的joe2 的主題也支持了自動(dòng)提交收錄,采用的是api提交方式。
  我們如果使用api收錄,然后再使用統計js進(jìn)行收錄。兩種重復提交不會(huì )有影響。我們可以放心使用。
  2. 360收錄:
  就我個(gè)人在360收錄上的使用來(lái)看,沒(méi)有百度收錄快。也許連搜狗搜索的收錄速度都比不上。
  
  在它的站長(cháng)平臺上也有三種收錄,
  
  我們能用的也就是sitemap收錄了。
  2.1 sitemap
  使用sitemap 的要求是:
  單個(gè)Sitemap文件:大小不超過(guò)10MB,且包含不超過(guò)5萬(wàn)個(gè)網(wǎng)址。如果網(wǎng)站所包含的網(wǎng)址超過(guò)5萬(wàn)個(gè),則可將列表分割成多個(gè)Sitemap文件,放在Sitemap索引中
  單個(gè)Sitemap索引文件:大小不能超過(guò)500M,如果超過(guò)請提交多個(gè)Sitemap索引文件接口
  您可以采用如下三種格式的文件向360搜索提交Sitemap,文件編碼可以是UTF-8或GBK:1)標準的XML格式文件 2)文本格式文件 3)Sitemap索引文件(可同時(shí)包含多個(gè)Sitemap文件)
  其實(shí)和百度的sitemap文件的要求差不多。
  xml文檔格式:
   <br /> <br /> <br /> <br /> <br /> <br /> http://www.xxxxxx.html/000000.html<br /> <br /> 2012-12-01<br /> <br /> daily<br /> <br /> 0.8<br /> <br /> <br /> http://www.xxxxxx.html/000001.html<br /> 2012-12-01<br /> daily<br /> 0.8<br /> <br /> <br />
  txt文件格式:
  http://www.xxxxxx.html/1015626 ... %3Bbr />http://www.xxxxxx.html/1015862 ... %3Bbr />http://www.xxxxxx.html/1016394 ... %3Bbr />
  索引文件格式:(適用于數據較多的情況下。)
   <br /> <br /> <br /> http://www.example.com/1.xml<br /> 2012-12-01<br /> <br /> <br /> http://www.example.com/2.xml<br /> 2012-12-01<br /> <br /> <br />
  上面的loc 是其他的sitempa文件對象。因為上面已經(jīng)說(shuō)了一個(gè)文件不能超過(guò)10M。5萬(wàn)條數據。
  3. 搜狗收錄:
  搜狗搜索收錄就更簡(jiǎn)陋了。它默認不支持sitemap收錄。需要我們自己主動(dòng)收錄。
  也就是說(shuō)我們需要手動(dòng)在它的管理臺上填寫(xiě)url進(jìn)行收錄。
  
  除非你的網(wǎng)站權重高,主動(dòng)找官方給你開(kāi)通sitemap收錄。否則現在是沒(méi)有的。
  然后我們在上面主動(dòng)提交鏈接的話(huà),每天只能提交20條url。
  
  直接將我們的url 復制上去就可以了。
  到這里,我們的收錄就提交完畢了。剩下的就是等待搜索平臺審核鏈接了。
  之后需要慢慢等待了,注意更新你的網(wǎng)站內容。否則搜索引擎會(huì )判斷網(wǎng)站質(zhì)量不行減少收錄。
  我們提交的鏈接也不一定會(huì )全部進(jìn)行收錄。搜索引擎的算法會(huì )過(guò)濾和檢測我們的鏈接指向的網(wǎng)站資源。如果內容質(zhì)量太差或者已經(jīng)網(wǎng)上已經(jīng)存在了大量的相同的資料,那么就會(huì )被搜索算法拋棄掉。
  參考資料
  百度統計升級網(wǎng)頁(yè)實(shí)時(shí)推送至搜索引擎功能,提升網(wǎng)頁(yè)抓取速度!【吧】_百度貼吧 ()
  平臺工具使用手冊_普通收錄_搜索學(xué)堂_百度搜索資源平臺 ()
  主動(dòng)收錄中的自動(dòng)推送出錯且影響到首頁(yè)打開(kāi)速度了_360社區
  360自動(dòng)收錄的代碼還有用嗎?_360社區
  sitemap提交_360搜索使用幫助 ()

【干貨】企業(yè)級Nginx Web服務(wù)優(yōu)化實(shí)戰(上)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 82 次瀏覽 ? 2022-05-20 20:15 ? 來(lái)自相關(guān)話(huà)題

  【干貨】企業(yè)級Nginx Web服務(wù)優(yōu)化實(shí)戰(上)

  server_tokens參數的官方說(shuō)明如下:syntax: server_tokens on|off; #此行為參數語(yǔ)法,on為開(kāi)啟狀態(tài),off為關(guān)閉狀態(tài)default: server_tokens on; #此行意思是不配置該參數,軟件默認情況的結果context:????http,server,location????#此行為server_tokens參數可以放置的位置參數作用:激活或禁止Nginx的版本信息顯示在報錯信息和Server的響應首部位置中。
  官方資料地址:
  配置完畢后保存,重新加載配置文件,再次通過(guò)curl查看,結果如下:
  [root@LNMP nginx]# curl -I 192.168.0.220HTTP/1.1 200 OKServer: nginx #版本號已經(jīng)消失Date: Wed, 23 Aug 2017 11:22:15 GMTContent-Type: text/html; charset=UTF-8Connection: keep-aliveX-Powered-By: PHP/5.3.28Link:?;?rel="https://api.w.org/"
  <p><br />
  此時(shí),瀏覽器的報錯提示中沒(méi)有了版本號,如下圖所示,修改成功。</p>
  
  1.2 更改源碼隱藏Nginx軟件名及版本號
  隱藏了Nginx版本號后,更進(jìn)一步,可以通過(guò)一些手段把Web服務(wù)軟件的名稱(chēng)也隱藏起來(lái),或者更改為其他Web服務(wù)軟件名以迷惑黑客。但軟件名字的隱藏修改,一般情況下不會(huì )有配置參數和入口,Nginx也不例外,這可能是由于商業(yè)及品牌展示等原因,軟件提供商不希望使用者把軟件名字隱藏起來(lái)。因此,此處需要更改Nginx源代碼,具體的解決方法如下:
  1.2.1 第一步:依次修改3個(gè)Nginx源碼文件。
  修改的第一個(gè)文件為nginx-1.6.3/src/core/nginx.h,如下:
  [root@LNMP ~]# cd /usr/src/nginx-1.6.2/src/core/[root@LNMP core]# ls -l nginx.h-rw-r--r--. 1 1001 1001 351 Sep 16 2014 nginx.h[root@LNMP core]# sed -n '13,17p' nginx.h#define NGINX_VERSION "1.6.2" #修改為想要顯示的版本號#define NGINX_VER "nginx/" NGINX_VERSION#將nginx修改為想要修改的軟件名稱(chēng)。#define NGINX_VAR "NGINX" #將nginx修改為想要修改的軟件名稱(chēng)#define?NGX_OLDPID_EXT?????".oldbin"
  修改后的結果如下:<br />
  [root@LNMP core]# sed -n '13,17p' nginx.h#define NGINX_VERSION "0.0.0.0"#define NGINX_VER "yunjisuan/" NGINX_VERSION<br />#define NGINX_VAR "YUNJISUAN"#define NGX_OLDPID_EXT ".oldbin"
  修改的第二個(gè)文件是nginx-1.6.3/src/http/ngx_http_header_filter_module.c的第49行,需要修改的字符串內容如下:
  <br />
  ls -l /usr/src/nginx-1.6.2/src/http/ngx_http_header_filter_module.c -rw-r--r--. 1 1001 1001 19321 Sep 16 2014 /usr/src/nginx-1.6.2/src/http/ngx_http_header_filter_module.c[root@LNMP http]# grep -n 'Server: nginx' ngx_http_header_filter_module.c 49:static?char?ngx_http_server_string[]?=?"Server:?nginx"?CRLF;???????????#修改本行結尾的nginx
  通過(guò)sed替換修改,后如下:<br />
  [root@LNMP http]# grep -n 'Server: nginx' ngx_http_header_filter_module.c 49:static char ngx_http_server_string[] = "Server: nginx" CRLF;[root@LNMP http]# sed -i 's#Server: nginx#Server: yunjisuan#g' ngx_http_header_filter_module.c [root@LNMP http]# grep -n 'Server: yunjisuan' ngx_http_header_filter_module.c 49:static?char?ngx_http_server_string[]?=?"Server:?yunjisuan"?CRLF;
  修改的第三個(gè)文件是nginx-1.6.3/src/http/nginx_http_special_response.c,對面頁(yè)面報錯時(shí),它會(huì )控制是否展開(kāi)敏感信息。這里輸出修改前的信息ngx_http_special_response.c中的第21~30行,如下:
  [root@LNMP http]# sed -n '21,30p' ngx_http_special_response.c static u_char ngx_http_error_full_tail[] ="" NGINX_VER "" CRLF #此行需要修改"" CRLF"" CRLF;<br />static u_char ngx_http_error_tail[] ="nginx" CRLF #此行需要修改""?CRLF
  修改后的結果如下:<br />
  [root@LNMP nginx-1.6.2]# sed -n '21,32p' src/http/ngx_http_special_response.c static u_char ngx_http_error_full_tail[] ="" NGINX_VER " (Mr.chen 2018-08-26)" CRLF #此行是定義對外展示的內容"" CRLF"" CRLF;<br /><br />static u_char ngx_http_error_tail[] ="yunjisuan" CRLF #此行將對外展示的Nginx名字更改為yunjisuan"" CRLF"" CRLF;
  1.2.2 第二步是修改后編輯軟件,使其生效
  修改后再編譯安裝軟件,如果是已經(jīng)安裝好的服務(wù),需要重新編譯Nginx,配好配置,啟動(dòng)服務(wù)。
  再次使瀏覽器出現404錯誤,然后看訪(fǎng)問(wèn)結果,如下圖所示:
  
  如上面所示:Nginx的軟件和版本名都被改掉了,并且加上了本人的大名。
  再看看Linux curl命令響應頭部信息,如下:
  [root@LNMP conf]# curl -I localhost/xxx/HTTP/1.1 404 Not FoundServer: yunjisuan/0.0.0.0 #也更改了Date: Wed, 23 Aug 2017 15:33:54 GMTContent-Type: text/htmlContent-Length: 196Connection: keep-alive
  1.3 更改Nginx服務(wù)的默認用戶(hù)<br />
  [root@LNMP conf]# cd /usr/local/nginx/conf/[root@LNMP conf]# grep "#user" nginx.conf.default#user nobody;
  為了防止黑客猜到這個(gè)Web服務(wù)的用戶(hù),我們需要更改成特殊的用戶(hù)名,例如nginx或特殊點(diǎn)的inca,但是這個(gè)用戶(hù)必須是系統里事先存在的,下面以nginx用戶(hù)為例進(jìn)行說(shuō)明。
 ?。?)為Nginx服務(wù)建立新用戶(hù)
  useradd nginx -s /sbin/nologin -M#不需要有系統登錄權限,應當禁止登陸。
 ?。?)配置Nginx服務(wù),讓其使用剛建立的nginx用戶(hù)<br />
  更改Nginx服務(wù)默認使用用戶(hù),方法有二:
  第一種:直接更改配置文件參數,將默認的#user nobody;改為如下內容:
  user nginx nginx;
  如果注釋或不設置上述參數,默認為nobody用戶(hù),不推薦使用nobody用戶(hù)名,最好采用一個(gè)普通用戶(hù),此處用大家習慣的,前面建立好的nginx用戶(hù)。
  第二種:直接在編譯nginx軟件時(shí)指定編譯的用戶(hù)和組,命令如下:
  ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module<br />#提示:#前文在編譯Nginx服務(wù)時(shí),就是這樣帶著(zhù)參數的,因此無(wú)論配置文件中是否加參數,默認都是nginx用戶(hù)。
 ?。?)檢查更改用戶(hù)的效果<br />
  重新加載配置后,檢查Nginx服務(wù)進(jìn)程的對應用戶(hù),如下:
  [root@LNMP conf]# ps -ef | grep nginx | grep -v greproot 52023 1 0 11:30 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginxnginx?????52024??52023??0?11:30??????????00:00:00?nginx:?worker?process
  <p><br />
  通過(guò)查看上述更改后的Nginx進(jìn)程,可以看到worker processes進(jìn)程對應的用戶(hù)都變成了nginx。所以,我們有理由得出結論,上述的兩種方法都可設置Nginx的worker進(jìn)程運行的用戶(hù)。當然,Nginx的主進(jìn)程還是以root身份運行的。</p>
  二,根據參數優(yōu)化Nginx服務(wù)性能2.1 優(yōu)化Nginx服務(wù)的worker進(jìn)程個(gè)數2.1.1 優(yōu)化Nginx進(jìn)程對應的配置
  #優(yōu)化Nginx進(jìn)程對應Nginx服務(wù)的配置參數如下:worker_processes 1; #指定了Nginx要開(kāi)啟的進(jìn)程數,結尾數字就是進(jìn)程個(gè)數<br />上述參數調整的是Nginx服務(wù)的worker進(jìn)程數,Nginx有Master進(jìn)程和worker進(jìn)程之分,Master為管理進(jìn)程,真正接待“顧客”的是worker進(jìn)程。
  <p><br /></p>
  2.1.2 優(yōu)化Nginx進(jìn)程個(gè)數的策略2.1.3 查看Web服務(wù)器CPU硬件資源信息
  下面介紹查看Linux服務(wù)器CPU總核數的方法:
 ?。?)通過(guò)/proc/cpuinfo可查看CPU個(gè)數及總核數。查看CPU總核數的示例如下:
  [root@LNMP ~]# grep processor /proc/cpuinfo processor : 0processor : 1processor : 2processor : 3[root@LNMP ~]# grep processor /proc/cpuinfo | wc -l4 #表示為1顆CPU四核[root@LNMP ~]# grep -c processor /proc/cpuinfo4 #表示為1顆CPU四核<br />#查看CPU總顆數示例如下:[root@LNMP ~]# grep "physical id" /proc/cpuinfo physical id : 0 #物理ID一致,同一顆CPUphysical id : 0 #物理ID一致,同一顆CPUphysical id : 0 #物理ID一致,同一顆CPUphysical id : 0 #物理ID一致,同一顆CPU[root@LNMP ~]# grep "physical id" /proc/cpuinfo | sort | uniq | wc -l1???????????????#去重復,表示1顆CPU
 ?。?)通過(guò)執行top命令,然后按數字1,即可顯示所有的CPU核數,如下:
  
  2.1.4 實(shí)踐修改Nginx配置
  假設服務(wù)器的CPU顆數為1顆,核數為4核,則初始的配置可通過(guò)查看默認的nginx.conf里的worker_processes數來(lái)了解,命令如下:
  [root@LNMP ~]# grep worker_processes /usr/local/nginx/conf/nginx.confworker_processes 1;[root@LNMP ~]# sed -i 's#worker_processes 1#worker_processes 4#' /usr/local/nginx/conf/nginx.conf[root@LNMP ~]# grep worker_processes /usr/local/nginx/conf/nginx.confworker_processes 4; #提示可以通過(guò)vi修改
  <br />
  #優(yōu)雅重啟Nginx,使修改生效,如下:[root@LNMP ~]# /usr/local/nginx/sbin/nginx -tnginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is oknginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful[root@LNMP ~]# /usr/local/nginx/sbin/nginx -s reload
  <br />
  #現在檢查修改后的worker進(jìn)程數量,如下:[root@LNMP ~]# ps -ef | grep "nginx" | grep -v greproot 1110 1 0 11:12 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginxnginx 1429 1110 0 11:33 ? 00:00:00 nginx: worker process nginx 1430 1110 0 11:33 ? 00:00:00 nginx: worker process nginx 1431 1110 0 11:33 ? 00:00:00 nginx: worker process nginx??????1432???1110??0?11:33??????????00:00:00?nginx:?worker?process
  從“worker_processes 4”可知,worker進(jìn)程數為4個(gè)。Nginx Master主進(jìn)程不包含在這個(gè)參數內,Nginx Master的主進(jìn)程為管理進(jìn)程,負責調度和管理worker進(jìn)程。
  有關(guān)worker_processes參數的官方說(shuō)明如下:
  syntax: worker_processes number; #此行為參數語(yǔ)法,number為數量default: worker_processes 1; #此行意思是不匹配該參數,軟件默認情況數量為1context: main; #此行為worker_processes參數可以放置的位置worker_processes為定義worker進(jìn)程數的數量,建議設置為CPU的核數或CPU核數*2,具體情況要根據實(shí)際的業(yè)務(wù)來(lái)選擇,因為這個(gè)參數,除了要和CPU核數匹配外,和硬盤(pán)存儲的數據以系統的負載也有關(guān),設置為CPU的個(gè)數或核數是一個(gè)好的起始配置。From:http://nginx.org/en/docs/ngx_core_module.html
  <p><br /></p>
  2.2 優(yōu)化綁定不同的Nginx進(jìn)程到不同的CPU上
  worker_processes 4;worker_cpu_affinity 0001 0010 0100 1000;<br />#worker_cpu_affinity就是配置Nginx進(jìn)程與CPU親和力的參數,即把不同的進(jìn)程分給不同的CPU處理。這里0001?0010?0100?1000是掩碼,分別代表第1,2,3,4核CPU,由于worker_processes進(jìn)程數為4,因此,上述配置會(huì )把每個(gè)進(jìn)程分配一核CPU處理,默認情況下進(jìn)程不會(huì )綁定任何CPU,參數位置為main段。
  四核和八核CPU服務(wù)器的參數配置參考如下:<br />
  #八核掩碼worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;<br />#四核掩碼worker_cpu_affinity 0001 0010 0100 1000;<br />worker_cpu_affinity 的作用是綁定不同的worker進(jìn)程數到一組CPU上。通過(guò)設置bitmask控制進(jìn)程允許使用的CPU,默認worker進(jìn)程不會(huì )綁定到任何CPU(自動(dòng)平均分配。)
  <p><br /></p>
  2.2.1 實(shí)驗環(huán)境準備主機名IP地址備注
  Nginx
  192.168.0.220
  nginxWeb
  測試機1
  192.168.0.240
  Webbench壓力測試
  測試機2
  192.168.0.245
  Webbench壓力測試
  #安裝webbenchtar xf webbench-1.5.tar.gz cd webbench-1.5mkdir /usr/local/manmake install cleanwhich webbench.
  虛擬機開(kāi)啟4核心<br />
  
  2.2.2 第一步:不綁定worker進(jìn)程進(jìn)行壓力測試
  #配置文件如下:(未綁定worker進(jìn)程)<br />
  [root@LNMP nginx]# cat conf/nginx.confworker_processes 4;#worker_cpu_affinity 0001 0010 0100 1000;events { worker_connections 10240;}http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name bbs.yunjisuan.com; location / { root html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }}
  #在NginxWeb上執行如下命令:<br />
  [root@LNMP nginx]# top -u nginxTasks: 120 total, 1 running, 119 sleeping, 0 stopped, 0 zombieCpu(s): 0.0%us, 0.2%sy, 0.0%ni, 99.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%stMem: 1004412k total, 911632k used, 92780k free, 6952k buffersSwap: 2031608k total, 0k used, 2031608k free, 749976k cached<br /> PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1454 nginx 20 0 49240 5640 468 S 0.0 0.6 0:00.00 nginx 1455 nginx 20 0 49240 5672 500 S 0.0 0.6 0:00.00 nginx 1456 nginx 20 0 49240 5672 500 S 0.0 0.6 0:00.00 nginx ??1457?nginx?????20???0?49240?5672??500?S??0.0??0.6???0:00.00?nginx??
  #在以上界面時(shí)按鍵盤(pán)的數值1鍵,出現如下界面:<br />
  top - 14:44:46 up 36 min, 1 user, load average: 0.00, 0.00, 0.00Tasks: 120 total, 1 running, 119 sleeping, 0 stopped, 0 zombieCpu0 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%stCpu1 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%stCpu2 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%stCpu3 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%stMem: 1004412k total, 911384k used, 93028k free, 6960k buffersSwap: 2031608k total, 0k used, 2031608k free, 749976k cached<br /> PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1454 nginx 20 0 49240 5640 468 S 0.0 0.6 0:00.00 nginx 1455 nginx 20 0 49240 5672 500 S 0.0 0.6 0:00.00 nginx 1456 nginx 20 0 49240 5672 500 S 0.0 0.6 0:00.00 nginx ??1457?nginx?????20???0?49240?5672??500?S??0.0??0.6???0:00.00?nginx
  在另外的兩臺測試機器上同時(shí)進(jìn)行壓力測試,命令如下:
  webbench -c 2000 -t 60 http://192.168.0.220/
  結果如下:
  
  2.2.3 第二步:綁定worker進(jìn)程進(jìn)行壓力測試
  #配置文件如下(綁定worker進(jìn)程)<br />
  [root@LNMP nginx]# cat conf/nginx.confworker_processes 4;worker_cpu_affinity 0001 0010 0100 1000; #修改本行events { worker_connections 1024;}http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name bbs.yunjisuan.com; location / { root html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }}
  在另外的兩臺測試機器上同時(shí)進(jìn)行壓力測試,命令如下:<br />
  webbench -c 2000 -t 60 http://192.168.0.220/
  結果如下:
  
  根據圖示,我們基本可以看出,平均綁定worker進(jìn)程和不綁定的實(shí)驗效果基本是一致的(CPU0是默認會(huì )被使用的)。原因在nginx在經(jīng)過(guò)不斷的優(yōu)化后,會(huì )自動(dòng)對worker進(jìn)程進(jìn)行動(dòng)態(tài)的平均分配。
  2.2.4 第三步:修改nginx配置,將所有worker進(jìn)程綁定到CPU3上
  #配置文件如下所示:<br />
  [root@LNMP nginx]# cat conf/nginx.confworker_processes 4;worker_cpu_affinity 1000 1000 1000 1000; #修改本行events { worker_connections 1024;}http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name bbs.yunjisuan.com; location / { root html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }}
  在另外的兩臺測試機器上同時(shí)進(jìn)行壓力測試,命令如下:
  webbench -c 2000 -t 60 http://192.168.0.220/
  結果如下:
  
  從上圖我們可以得知,worker進(jìn)程的壓力被集中分配到了CPU3上。(CPU0是默認被使用的)
  2.3 Nginx事件處理模型優(yōu)化
  #具體的配置參數如下:<br />
  events #events指令是設定Nginx的工作模式及連接數上限{ use epoll;#use是一個(gè)事件模塊指令,用來(lái)指定Nginx的工作模式。Nginx支持的工作模式有select,poll,kqueue,epoll,rtsig和/dev/poll。其中select和poll都是標準的工作模式,kqueue和epoll是高效的工作模式,不同的是epoll用在Linux平臺上,而kqueue用在BSD系統中。對于Linux系統Linux2.6+內核,推薦選擇epoll工作模式,這是高性能高并發(fā)的設置}
  根據Nginx官方文檔建議,也可以不指定事件處理模型,Nginx會(huì )自動(dòng)選擇最佳的事件處理模型服務(wù)。
  對于使用連接進(jìn)程的方法,通常不需要進(jìn)行任何設置,Nginx會(huì )自動(dòng)選擇最有效辦法。
  2.4 調整Nginx單個(gè)進(jìn)程允許的客戶(hù)端最大連接數
  接下來(lái),調整Nginx單個(gè)進(jìn)程允許的客戶(hù)端最大連接數,這個(gè)控制連接數的參數為work_connections。
  worker_connections的值要根據具體服務(wù)器性能和程序的內存使用量來(lái)指定(一個(gè)進(jìn)程啟動(dòng)使用的內存根據程序確定),如下:
  events #events指令是設定Nginx的工作模式和連接數上線(xiàn){ worker_connections 20480; #worker_connections也是個(gè)事件模塊指令,用于定義Nginx每個(gè)進(jìn)程的最大連接數,默認是1024.最大客戶(hù)端連接數由worker_processes和worker_connections決定,即Max_client= worker_processes*worker_connections。進(jìn)程的最大連接數受Linux系統進(jìn)程的最大打開(kāi)文件數限制,在執行操作系統命令“ulimit -HSn 65535”或配置相應文件后,worker_connections的設置才能生效。}
  下面是worker_connections的官方說(shuō)明<br />
  參數語(yǔ)法:worker_connections number
  默認配置:worker_connections 512
  放置位置:events
  說(shuō)明:
  worker_connections用來(lái)設置一個(gè)worker process支持的最大并發(fā)連接數,這個(gè)連接數包括了所有鏈接,例如:代理服務(wù)器的連接,客戶(hù)端的連接等,實(shí)際的并發(fā)連接數除了受worker_connections參數控制外,還和最大打開(kāi)文件數worker_rlimit_nofile有關(guān)(見(jiàn)下文),Nginx總并發(fā)連接=worker數量*worker_connections。
  參考資料:
  2.5 配置Nginx worker進(jìn)程最大打開(kāi)文件數
  接下來(lái),調整配置Nginx worker進(jìn)程的最大打開(kāi)文件數,這個(gè)控制連接數的參數為worker_rlimit_nofile。該參數的實(shí)際配置如下:
  worker_rlimit_nofile 65535;#最大打開(kāi)文件數,可設置為系統優(yōu)化后的ulimit -HSn的結果
  下面是worker_rlimit_nofile number的官方說(shuō)明:<br />
  參數語(yǔ)法:worker_rlimit_nofile number
  默認配置:無(wú)
  放置位置:主標簽段
  說(shuō)明:此參數的作用是改變worker processes能打開(kāi)的最大文件數
  參考資料:
  備注:
  Linux系統文件最大打開(kāi)數設置:ulimit -n 65535
  2.5.1 實(shí)驗環(huán)境準備主機名IP地址備注
  Nginx
  192.168.0.220
  nginxWeb
  測試機1
  192.168.0.240
  Webbench壓力測試
  測試機2
  192.168.0.245
  Webbench壓力測試
  2.5.2 修改nginx.conf配置文件
  [root@LNMP nginx]# cat conf/nginx.confworker_processes 1;#worker_cpu_affinity 0000 0010 0100 1000;#worker_rlimit_nofile 65535;events { worker_connections 1024;}http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name bbs.yunjisuan.com; location / { root html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }}
  先定1核1024連接數。同學(xué)們注意多開(kāi)幾個(gè)虛擬機進(jìn)行壓力測試。不然的話(huà),web服務(wù)器還沒(méi)出問(wèn)題,你測試服務(wù)器先down掉了。
  2.5.2 測試nginx服務(wù)連接數的極值
  #使用這個(gè)命令可以抓取nginx的連接數[root@LNMP nginx]# netstat -antp | grep nginx | wc -l554[root@LNMP nginx]# netstat -antp | grep nginx | wc -l471
  逐漸提高壓力,抓連接數,看看nginx啥時(shí)候down
  2.6 開(kāi)啟高效文件傳輸模式
 ?。?)設置參數:sendfile on;
  sendfile參數用于開(kāi)啟文件的高效傳輸模式。同時(shí)將tcp_nopush和tcp_nodelay兩個(gè)指令設置為on,可防止網(wǎng)絡(luò )及磁盤(pán)I/O阻塞,提升Nginx工作效率。
  #sendfile參數的官方說(shuō)明如下:syntax: sendfile on | off; #參數語(yǔ)法default: sendfile off; #參數默認大小context: http,server,location,if in location #可以放置的標簽段
  參數作用:
  激活或禁用sendfile()功能功能。sendfile()是作用于兩個(gè)文件描述符之間的數據拷貝函數,這個(gè)拷貝操作是在內核之中的,被稱(chēng)為“零拷貝”,sendfile()比read和write函數要高效很多,因為,read和write函數要把數據拷貝到應用層再進(jìn)行操作。相關(guān)控制參數還有sendfile_max_chunk,同學(xué)們可以執行查詢(xún)。細節見(jiàn)#sendfile
 ?。?)設置參數:tcp_nopush on;
  #tcp_nopush參數的官方說(shuō)明如下:syntax: tcp_nopush on | off; #參數語(yǔ)法default: tcp_nopush off; #參數默認大小context:????http,server,location????#可以放置的標簽段
  <p><br /></p>
  參數作用:?激活或禁用Linux上的TCP_CORK socket選項,此選項僅僅當開(kāi)啟sendfile時(shí)才生效,激活這個(gè)tcp_nopush參數可以允許把http response header和文件的開(kāi)始部分放在一個(gè)文件里發(fā)布,其積極的作用是減少網(wǎng)絡(luò )報文段的數量。細節見(jiàn)http://nginx.org/en/docs/http/ ... .html。
  2.7 優(yōu)化Nginx連接參數,調整連接超時(shí)時(shí)間
  2.7.1 什么是連接超時(shí)2.7.2 連接超時(shí)的作用
  簡(jiǎn)單的說(shuō),連接超時(shí)是服務(wù)的一種自我管理,自我保護的重要機制。
  2.7.3 連接超時(shí)帶來(lái)的問(wèn)題,以及不同程序連接設定知識2.7.4 Nginx連接超時(shí)的參數設置
 ?。?)設置參數:keepalive_timeout 60;
  用于設置客戶(hù)端連接保持會(huì )話(huà)的超時(shí)時(shí)間為60秒。超過(guò)這個(gè)時(shí)間,服務(wù)器會(huì )關(guān)閉該連接,此數值為參考值。
  keepalive_timeout參數的官方說(shuō)明如下:syntax: keepalive_timeout timeout [header_timeout] #參數語(yǔ)法default: keepalive_timeout 75s; #參數默認大小context: http,serverr,location #可以放置的標簽段
  參數作用:
 ?。?)設置參數:tcp_nodelay on;
  用于激活tcp_ondelay功能,提高I/O性能。
  #tcp_nodelay參數的官方說(shuō)明如下:syntax: tcp_nodelay on | off #參數語(yǔ)法default: tcp_nodelay on; #參數默認大小context: http,server,location #可以放置的標簽段
  參數作用:
  默認情況下當數據發(fā)送時(shí),內核并不會(huì )馬上發(fā)送,可能會(huì )等待更多的字節組成一個(gè)數據包,這樣可以提高I/O性能。但是,在每次只發(fā)送很少字節的業(yè)務(wù)場(chǎng)景中,使用tcp_nodelay功能,等待時(shí)間會(huì )比較長(cháng)。
  參數生效條件:
  激活或禁用TCP_NODELAY選項,當一個(gè)連接進(jìn)入keep-alive狀態(tài)時(shí)生效。細節見(jiàn)。
 ?。?)設置參數:client_header_timeout 15;
  用于設置讀取客戶(hù)端請求頭數據的超時(shí)時(shí)間。此處的數值15,其單位是秒,為經(jīng)驗參考值。
  #client_header_timeout參數的官方說(shuō)明如下:syntax: client_header_timeout time; #參數語(yǔ)法default: client_header_timeout 60s; #參數默認大小context: http,server #可以放置的標簽段
  參數作用:
  設置讀取客戶(hù)端請求頭數據的超時(shí)時(shí)間。如果超過(guò)這個(gè)時(shí)間,客戶(hù)端還沒(méi)有發(fā)送完整的header數據,服務(wù)器端將返回“Request time out (408)”錯誤,可指定一個(gè)超時(shí)時(shí)間,防止客戶(hù)端利用http協(xié)議進(jìn)行攻擊。細節見(jiàn):。
 ?。?)設置參數:client_body_timeout 15;
  用于設置讀取客戶(hù)端請求主體的超時(shí)時(shí)間,默認值60
  #client_body_timeout參數的官方說(shuō)明如下:syntax: client_body_timeout time; #參數語(yǔ)法default: client_body_timeout 60s; #默認60context: http,server,location #可以放置的標簽段
  參數作用:
  設置讀取客戶(hù)端請求主體的超時(shí)時(shí)間。這個(gè)超時(shí)僅僅為兩次成功的讀取操作之間的一個(gè)超時(shí),非請求整個(gè)主體數據的超時(shí)時(shí)間,如果在這個(gè)超時(shí)時(shí)間內,客戶(hù)端沒(méi)有發(fā)送任何數據,Nginx將返回“Request time out(408)”錯誤,默認值60,細節見(jiàn):
 ?。?)設置參數:send_timeout 25;
  用于指定響應客戶(hù)端的超時(shí)時(shí)間。這個(gè)超時(shí)僅限于兩個(gè)連接活動(dòng)之間的時(shí)間,如果超過(guò)這個(gè)時(shí)間,客戶(hù)端沒(méi)有任何活動(dòng),Nginx將會(huì )關(guān)閉連接,默認值為60秒,可以改為參考值25秒。
  #send_timeout參數的官方說(shuō)明如下:syntax: send_timeout time; #參數語(yǔ)法default: send_timeout 60s; #默認值60context: http,server,location #可以放置的標簽段
  參數作用: 查看全部

  【干貨】企業(yè)級Nginx Web服務(wù)優(yōu)化實(shí)戰(上)

  server_tokens參數的官方說(shuō)明如下:syntax: server_tokens on|off; #此行為參數語(yǔ)法,on為開(kāi)啟狀態(tài),off為關(guān)閉狀態(tài)default: server_tokens on; #此行意思是不配置該參數,軟件默認情況的結果context:????http,server,location????#此行為server_tokens參數可以放置的位置參數作用:激活或禁止Nginx的版本信息顯示在報錯信息和Server的響應首部位置中。
  官方資料地址:
  配置完畢后保存,重新加載配置文件,再次通過(guò)curl查看,結果如下:
  [root@LNMP nginx]# curl -I 192.168.0.220HTTP/1.1 200 OKServer: nginx #版本號已經(jīng)消失Date: Wed, 23 Aug 2017 11:22:15 GMTContent-Type: text/html; charset=UTF-8Connection: keep-aliveX-Powered-By: PHP/5.3.28Link:?;?rel="https://api.w.org/"
  <p><br />
  此時(shí),瀏覽器的報錯提示中沒(méi)有了版本號,如下圖所示,修改成功。</p>
  
  1.2 更改源碼隱藏Nginx軟件名及版本號
  隱藏了Nginx版本號后,更進(jìn)一步,可以通過(guò)一些手段把Web服務(wù)軟件的名稱(chēng)也隱藏起來(lái),或者更改為其他Web服務(wù)軟件名以迷惑黑客。但軟件名字的隱藏修改,一般情況下不會(huì )有配置參數和入口,Nginx也不例外,這可能是由于商業(yè)及品牌展示等原因,軟件提供商不希望使用者把軟件名字隱藏起來(lái)。因此,此處需要更改Nginx源代碼,具體的解決方法如下:
  1.2.1 第一步:依次修改3個(gè)Nginx源碼文件。
  修改的第一個(gè)文件為nginx-1.6.3/src/core/nginx.h,如下:
  [root@LNMP ~]# cd /usr/src/nginx-1.6.2/src/core/[root@LNMP core]# ls -l nginx.h-rw-r--r--. 1 1001 1001 351 Sep 16 2014 nginx.h[root@LNMP core]# sed -n '13,17p' nginx.h#define NGINX_VERSION "1.6.2" #修改為想要顯示的版本號#define NGINX_VER "nginx/" NGINX_VERSION#將nginx修改為想要修改的軟件名稱(chēng)。#define NGINX_VAR "NGINX" #將nginx修改為想要修改的軟件名稱(chēng)#define?NGX_OLDPID_EXT?????".oldbin"
  修改后的結果如下:<br />
  [root@LNMP core]# sed -n '13,17p' nginx.h#define NGINX_VERSION "0.0.0.0"#define NGINX_VER "yunjisuan/" NGINX_VERSION<br />#define NGINX_VAR "YUNJISUAN"#define NGX_OLDPID_EXT ".oldbin"
  修改的第二個(gè)文件是nginx-1.6.3/src/http/ngx_http_header_filter_module.c的第49行,需要修改的字符串內容如下:
  <br />
  ls -l /usr/src/nginx-1.6.2/src/http/ngx_http_header_filter_module.c -rw-r--r--. 1 1001 1001 19321 Sep 16 2014 /usr/src/nginx-1.6.2/src/http/ngx_http_header_filter_module.c[root@LNMP http]# grep -n 'Server: nginx' ngx_http_header_filter_module.c 49:static?char?ngx_http_server_string[]?=?"Server:?nginx"?CRLF;???????????#修改本行結尾的nginx
  通過(guò)sed替換修改,后如下:<br />
  [root@LNMP http]# grep -n 'Server: nginx' ngx_http_header_filter_module.c 49:static char ngx_http_server_string[] = "Server: nginx" CRLF;[root@LNMP http]# sed -i 's#Server: nginx#Server: yunjisuan#g' ngx_http_header_filter_module.c [root@LNMP http]# grep -n 'Server: yunjisuan' ngx_http_header_filter_module.c 49:static?char?ngx_http_server_string[]?=?"Server:?yunjisuan"?CRLF;
  修改的第三個(gè)文件是nginx-1.6.3/src/http/nginx_http_special_response.c,對面頁(yè)面報錯時(shí),它會(huì )控制是否展開(kāi)敏感信息。這里輸出修改前的信息ngx_http_special_response.c中的第21~30行,如下:
  [root@LNMP http]# sed -n '21,30p' ngx_http_special_response.c static u_char ngx_http_error_full_tail[] ="" NGINX_VER "" CRLF #此行需要修改"" CRLF"" CRLF;<br />static u_char ngx_http_error_tail[] ="nginx" CRLF #此行需要修改""?CRLF
  修改后的結果如下:<br />
  [root@LNMP nginx-1.6.2]# sed -n '21,32p' src/http/ngx_http_special_response.c static u_char ngx_http_error_full_tail[] ="" NGINX_VER " (Mr.chen 2018-08-26)" CRLF #此行是定義對外展示的內容"" CRLF"" CRLF;<br /><br />static u_char ngx_http_error_tail[] ="yunjisuan" CRLF #此行將對外展示的Nginx名字更改為yunjisuan"" CRLF"" CRLF;
  1.2.2 第二步是修改后編輯軟件,使其生效
  修改后再編譯安裝軟件,如果是已經(jīng)安裝好的服務(wù),需要重新編譯Nginx,配好配置,啟動(dòng)服務(wù)。
  再次使瀏覽器出現404錯誤,然后看訪(fǎng)問(wèn)結果,如下圖所示:
  
  如上面所示:Nginx的軟件和版本名都被改掉了,并且加上了本人的大名。
  再看看Linux curl命令響應頭部信息,如下:
  [root@LNMP conf]# curl -I localhost/xxx/HTTP/1.1 404 Not FoundServer: yunjisuan/0.0.0.0 #也更改了Date: Wed, 23 Aug 2017 15:33:54 GMTContent-Type: text/htmlContent-Length: 196Connection: keep-alive
  1.3 更改Nginx服務(wù)的默認用戶(hù)<br />
  [root@LNMP conf]# cd /usr/local/nginx/conf/[root@LNMP conf]# grep "#user" nginx.conf.default#user nobody;
  為了防止黑客猜到這個(gè)Web服務(wù)的用戶(hù),我們需要更改成特殊的用戶(hù)名,例如nginx或特殊點(diǎn)的inca,但是這個(gè)用戶(hù)必須是系統里事先存在的,下面以nginx用戶(hù)為例進(jìn)行說(shuō)明。
 ?。?)為Nginx服務(wù)建立新用戶(hù)
  useradd nginx -s /sbin/nologin -M#不需要有系統登錄權限,應當禁止登陸。
  (2)配置Nginx服務(wù),讓其使用剛建立的nginx用戶(hù)<br />
  更改Nginx服務(wù)默認使用用戶(hù),方法有二:
  第一種:直接更改配置文件參數,將默認的#user nobody;改為如下內容:
  user nginx nginx;
  如果注釋或不設置上述參數,默認為nobody用戶(hù),不推薦使用nobody用戶(hù)名,最好采用一個(gè)普通用戶(hù),此處用大家習慣的,前面建立好的nginx用戶(hù)。
  第二種:直接在編譯nginx軟件時(shí)指定編譯的用戶(hù)和組,命令如下:
  ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module<br />#提示:#前文在編譯Nginx服務(wù)時(shí),就是這樣帶著(zhù)參數的,因此無(wú)論配置文件中是否加參數,默認都是nginx用戶(hù)。
  (3)檢查更改用戶(hù)的效果<br />
  重新加載配置后,檢查Nginx服務(wù)進(jìn)程的對應用戶(hù),如下:
  [root@LNMP conf]# ps -ef | grep nginx | grep -v greproot 52023 1 0 11:30 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginxnginx?????52024??52023??0?11:30??????????00:00:00?nginx:?worker?process
  <p><br />
  通過(guò)查看上述更改后的Nginx進(jìn)程,可以看到worker processes進(jìn)程對應的用戶(hù)都變成了nginx。所以,我們有理由得出結論,上述的兩種方法都可設置Nginx的worker進(jìn)程運行的用戶(hù)。當然,Nginx的主進(jìn)程還是以root身份運行的。</p>
  二,根據參數優(yōu)化Nginx服務(wù)性能2.1 優(yōu)化Nginx服務(wù)的worker進(jìn)程個(gè)數2.1.1 優(yōu)化Nginx進(jìn)程對應的配置
  #優(yōu)化Nginx進(jìn)程對應Nginx服務(wù)的配置參數如下:worker_processes 1; #指定了Nginx要開(kāi)啟的進(jìn)程數,結尾數字就是進(jìn)程個(gè)數<br />上述參數調整的是Nginx服務(wù)的worker進(jìn)程數,Nginx有Master進(jìn)程和worker進(jìn)程之分,Master為管理進(jìn)程,真正接待“顧客”的是worker進(jìn)程。
  <p><br /></p>
  2.1.2 優(yōu)化Nginx進(jìn)程個(gè)數的策略2.1.3 查看Web服務(wù)器CPU硬件資源信息
  下面介紹查看Linux服務(wù)器CPU總核數的方法:
 ?。?)通過(guò)/proc/cpuinfo可查看CPU個(gè)數及總核數。查看CPU總核數的示例如下:
  [root@LNMP ~]# grep processor /proc/cpuinfo processor : 0processor : 1processor : 2processor : 3[root@LNMP ~]# grep processor /proc/cpuinfo | wc -l4 #表示為1顆CPU四核[root@LNMP ~]# grep -c processor /proc/cpuinfo4 #表示為1顆CPU四核<br />#查看CPU總顆數示例如下:[root@LNMP ~]# grep "physical id" /proc/cpuinfo physical id : 0 #物理ID一致,同一顆CPUphysical id : 0 #物理ID一致,同一顆CPUphysical id : 0 #物理ID一致,同一顆CPUphysical id : 0 #物理ID一致,同一顆CPU[root@LNMP ~]# grep "physical id" /proc/cpuinfo | sort | uniq | wc -l1???????????????#去重復,表示1顆CPU
 ?。?)通過(guò)執行top命令,然后按數字1,即可顯示所有的CPU核數,如下:
  
  2.1.4 實(shí)踐修改Nginx配置
  假設服務(wù)器的CPU顆數為1顆,核數為4核,則初始的配置可通過(guò)查看默認的nginx.conf里的worker_processes數來(lái)了解,命令如下:
  [root@LNMP ~]# grep worker_processes /usr/local/nginx/conf/nginx.confworker_processes 1;[root@LNMP ~]# sed -i 's#worker_processes 1#worker_processes 4#' /usr/local/nginx/conf/nginx.conf[root@LNMP ~]# grep worker_processes /usr/local/nginx/conf/nginx.confworker_processes 4; #提示可以通過(guò)vi修改
  <br />
  #優(yōu)雅重啟Nginx,使修改生效,如下:[root@LNMP ~]# /usr/local/nginx/sbin/nginx -tnginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is oknginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful[root@LNMP ~]# /usr/local/nginx/sbin/nginx -s reload
  <br />
  #現在檢查修改后的worker進(jìn)程數量,如下:[root@LNMP ~]# ps -ef | grep "nginx" | grep -v greproot 1110 1 0 11:12 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginxnginx 1429 1110 0 11:33 ? 00:00:00 nginx: worker process nginx 1430 1110 0 11:33 ? 00:00:00 nginx: worker process nginx 1431 1110 0 11:33 ? 00:00:00 nginx: worker process nginx??????1432???1110??0?11:33??????????00:00:00?nginx:?worker?process
  從“worker_processes 4”可知,worker進(jìn)程數為4個(gè)。Nginx Master主進(jìn)程不包含在這個(gè)參數內,Nginx Master的主進(jìn)程為管理進(jìn)程,負責調度和管理worker進(jìn)程。
  有關(guān)worker_processes參數的官方說(shuō)明如下:
  syntax: worker_processes number; #此行為參數語(yǔ)法,number為數量default: worker_processes 1; #此行意思是不匹配該參數,軟件默認情況數量為1context: main; #此行為worker_processes參數可以放置的位置worker_processes為定義worker進(jìn)程數的數量,建議設置為CPU的核數或CPU核數*2,具體情況要根據實(shí)際的業(yè)務(wù)來(lái)選擇,因為這個(gè)參數,除了要和CPU核數匹配外,和硬盤(pán)存儲的數據以系統的負載也有關(guān),設置為CPU的個(gè)數或核數是一個(gè)好的起始配置。From:http://nginx.org/en/docs/ngx_core_module.html
  <p><br /></p>
  2.2 優(yōu)化綁定不同的Nginx進(jìn)程到不同的CPU上
  worker_processes 4;worker_cpu_affinity 0001 0010 0100 1000;<br />#worker_cpu_affinity就是配置Nginx進(jìn)程與CPU親和力的參數,即把不同的進(jìn)程分給不同的CPU處理。這里0001?0010?0100?1000是掩碼,分別代表第1,2,3,4核CPU,由于worker_processes進(jìn)程數為4,因此,上述配置會(huì )把每個(gè)進(jìn)程分配一核CPU處理,默認情況下進(jìn)程不會(huì )綁定任何CPU,參數位置為main段。
  四核和八核CPU服務(wù)器的參數配置參考如下:<br />
  #八核掩碼worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;<br />#四核掩碼worker_cpu_affinity 0001 0010 0100 1000;<br />worker_cpu_affinity 的作用是綁定不同的worker進(jìn)程數到一組CPU上。通過(guò)設置bitmask控制進(jìn)程允許使用的CPU,默認worker進(jìn)程不會(huì )綁定到任何CPU(自動(dòng)平均分配。)
  <p><br /></p>
  2.2.1 實(shí)驗環(huán)境準備主機名IP地址備注
  Nginx
  192.168.0.220
  nginxWeb
  測試機1
  192.168.0.240
  Webbench壓力測試
  測試機2
  192.168.0.245
  Webbench壓力測試
  #安裝webbenchtar xf webbench-1.5.tar.gz cd webbench-1.5mkdir /usr/local/manmake install cleanwhich webbench.
  虛擬機開(kāi)啟4核心<br />
  
  2.2.2 第一步:不綁定worker進(jìn)程進(jìn)行壓力測試
  #配置文件如下:(未綁定worker進(jìn)程)<br />
  [root@LNMP nginx]# cat conf/nginx.confworker_processes 4;#worker_cpu_affinity 0001 0010 0100 1000;events { worker_connections 10240;}http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name bbs.yunjisuan.com; location / { root html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }}
  #在NginxWeb上執行如下命令:<br />
  [root@LNMP nginx]# top -u nginxTasks: 120 total, 1 running, 119 sleeping, 0 stopped, 0 zombieCpu(s): 0.0%us, 0.2%sy, 0.0%ni, 99.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%stMem: 1004412k total, 911632k used, 92780k free, 6952k buffersSwap: 2031608k total, 0k used, 2031608k free, 749976k cached<br /> PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1454 nginx 20 0 49240 5640 468 S 0.0 0.6 0:00.00 nginx 1455 nginx 20 0 49240 5672 500 S 0.0 0.6 0:00.00 nginx 1456 nginx 20 0 49240 5672 500 S 0.0 0.6 0:00.00 nginx ??1457?nginx?????20???0?49240?5672??500?S??0.0??0.6???0:00.00?nginx??
  #在以上界面時(shí)按鍵盤(pán)的數值1鍵,出現如下界面:<br />
  top - 14:44:46 up 36 min, 1 user, load average: 0.00, 0.00, 0.00Tasks: 120 total, 1 running, 119 sleeping, 0 stopped, 0 zombieCpu0 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%stCpu1 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%stCpu2 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%stCpu3 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%stMem: 1004412k total, 911384k used, 93028k free, 6960k buffersSwap: 2031608k total, 0k used, 2031608k free, 749976k cached<br /> PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1454 nginx 20 0 49240 5640 468 S 0.0 0.6 0:00.00 nginx 1455 nginx 20 0 49240 5672 500 S 0.0 0.6 0:00.00 nginx 1456 nginx 20 0 49240 5672 500 S 0.0 0.6 0:00.00 nginx ??1457?nginx?????20???0?49240?5672??500?S??0.0??0.6???0:00.00?nginx
  在另外的兩臺測試機器上同時(shí)進(jìn)行壓力測試,命令如下:
  webbench -c 2000 -t 60 http://192.168.0.220/
  結果如下:
  
  2.2.3 第二步:綁定worker進(jìn)程進(jìn)行壓力測試
  #配置文件如下(綁定worker進(jìn)程)<br />
  [root@LNMP nginx]# cat conf/nginx.confworker_processes 4;worker_cpu_affinity 0001 0010 0100 1000; #修改本行events { worker_connections 1024;}http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name bbs.yunjisuan.com; location / { root html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }}
  在另外的兩臺測試機器上同時(shí)進(jìn)行壓力測試,命令如下:<br />
  webbench -c 2000 -t 60 http://192.168.0.220/
  結果如下:
  
  根據圖示,我們基本可以看出,平均綁定worker進(jìn)程和不綁定的實(shí)驗效果基本是一致的(CPU0是默認會(huì )被使用的)。原因在nginx在經(jīng)過(guò)不斷的優(yōu)化后,會(huì )自動(dòng)對worker進(jìn)程進(jìn)行動(dòng)態(tài)的平均分配。
  2.2.4 第三步:修改nginx配置,將所有worker進(jìn)程綁定到CPU3上
  #配置文件如下所示:<br />
  [root@LNMP nginx]# cat conf/nginx.confworker_processes 4;worker_cpu_affinity 1000 1000 1000 1000; #修改本行events { worker_connections 1024;}http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name bbs.yunjisuan.com; location / { root html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }}
  在另外的兩臺測試機器上同時(shí)進(jìn)行壓力測試,命令如下:
  webbench -c 2000 -t 60 http://192.168.0.220/
  結果如下:
  
  從上圖我們可以得知,worker進(jìn)程的壓力被集中分配到了CPU3上。(CPU0是默認被使用的)
  2.3 Nginx事件處理模型優(yōu)化
  #具體的配置參數如下:<br />
  events #events指令是設定Nginx的工作模式及連接數上限{ use epoll;#use是一個(gè)事件模塊指令,用來(lái)指定Nginx的工作模式。Nginx支持的工作模式有select,poll,kqueue,epoll,rtsig和/dev/poll。其中select和poll都是標準的工作模式,kqueue和epoll是高效的工作模式,不同的是epoll用在Linux平臺上,而kqueue用在BSD系統中。對于Linux系統Linux2.6+內核,推薦選擇epoll工作模式,這是高性能高并發(fā)的設置}
  根據Nginx官方文檔建議,也可以不指定事件處理模型,Nginx會(huì )自動(dòng)選擇最佳的事件處理模型服務(wù)。
  對于使用連接進(jìn)程的方法,通常不需要進(jìn)行任何設置,Nginx會(huì )自動(dòng)選擇最有效辦法。
  2.4 調整Nginx單個(gè)進(jìn)程允許的客戶(hù)端最大連接數
  接下來(lái),調整Nginx單個(gè)進(jìn)程允許的客戶(hù)端最大連接數,這個(gè)控制連接數的參數為work_connections。
  worker_connections的值要根據具體服務(wù)器性能和程序的內存使用量來(lái)指定(一個(gè)進(jìn)程啟動(dòng)使用的內存根據程序確定),如下:
  events #events指令是設定Nginx的工作模式和連接數上線(xiàn){ worker_connections 20480; #worker_connections也是個(gè)事件模塊指令,用于定義Nginx每個(gè)進(jìn)程的最大連接數,默認是1024.最大客戶(hù)端連接數由worker_processes和worker_connections決定,即Max_client= worker_processes*worker_connections。進(jìn)程的最大連接數受Linux系統進(jìn)程的最大打開(kāi)文件數限制,在執行操作系統命令“ulimit -HSn 65535”或配置相應文件后,worker_connections的設置才能生效。}
  下面是worker_connections的官方說(shuō)明<br />
  參數語(yǔ)法:worker_connections number
  默認配置:worker_connections 512
  放置位置:events
  說(shuō)明:
  worker_connections用來(lái)設置一個(gè)worker process支持的最大并發(fā)連接數,這個(gè)連接數包括了所有鏈接,例如:代理服務(wù)器的連接,客戶(hù)端的連接等,實(shí)際的并發(fā)連接數除了受worker_connections參數控制外,還和最大打開(kāi)文件數worker_rlimit_nofile有關(guān)(見(jiàn)下文),Nginx總并發(fā)連接=worker數量*worker_connections。
  參考資料:
  2.5 配置Nginx worker進(jìn)程最大打開(kāi)文件數
  接下來(lái),調整配置Nginx worker進(jìn)程的最大打開(kāi)文件數,這個(gè)控制連接數的參數為worker_rlimit_nofile。該參數的實(shí)際配置如下:
  worker_rlimit_nofile 65535;#最大打開(kāi)文件數,可設置為系統優(yōu)化后的ulimit -HSn的結果
  下面是worker_rlimit_nofile number的官方說(shuō)明:<br />
  參數語(yǔ)法:worker_rlimit_nofile number
  默認配置:無(wú)
  放置位置:主標簽段
  說(shuō)明:此參數的作用是改變worker processes能打開(kāi)的最大文件數
  參考資料:
  備注:
  Linux系統文件最大打開(kāi)數設置:ulimit -n 65535
  2.5.1 實(shí)驗環(huán)境準備主機名IP地址備注
  Nginx
  192.168.0.220
  nginxWeb
  測試機1
  192.168.0.240
  Webbench壓力測試
  測試機2
  192.168.0.245
  Webbench壓力測試
  2.5.2 修改nginx.conf配置文件
  [root@LNMP nginx]# cat conf/nginx.confworker_processes 1;#worker_cpu_affinity 0000 0010 0100 1000;#worker_rlimit_nofile 65535;events { worker_connections 1024;}http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name bbs.yunjisuan.com; location / { root html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }}
  先定1核1024連接數。同學(xué)們注意多開(kāi)幾個(gè)虛擬機進(jìn)行壓力測試。不然的話(huà),web服務(wù)器還沒(méi)出問(wèn)題,你測試服務(wù)器先down掉了。
  2.5.2 測試nginx服務(wù)連接數的極值
  #使用這個(gè)命令可以抓取nginx的連接數[root@LNMP nginx]# netstat -antp | grep nginx | wc -l554[root@LNMP nginx]# netstat -antp | grep nginx | wc -l471
  逐漸提高壓力,抓連接數,看看nginx啥時(shí)候down
  2.6 開(kāi)啟高效文件傳輸模式
 ?。?)設置參數:sendfile on;
  sendfile參數用于開(kāi)啟文件的高效傳輸模式。同時(shí)將tcp_nopush和tcp_nodelay兩個(gè)指令設置為on,可防止網(wǎng)絡(luò )及磁盤(pán)I/O阻塞,提升Nginx工作效率。
  #sendfile參數的官方說(shuō)明如下:syntax: sendfile on | off; #參數語(yǔ)法default: sendfile off; #參數默認大小context: http,server,location,if in location #可以放置的標簽段
  參數作用:
  激活或禁用sendfile()功能功能。sendfile()是作用于兩個(gè)文件描述符之間的數據拷貝函數,這個(gè)拷貝操作是在內核之中的,被稱(chēng)為“零拷貝”,sendfile()比read和write函數要高效很多,因為,read和write函數要把數據拷貝到應用層再進(jìn)行操作。相關(guān)控制參數還有sendfile_max_chunk,同學(xué)們可以執行查詢(xún)。細節見(jiàn)#sendfile
 ?。?)設置參數:tcp_nopush on;
  #tcp_nopush參數的官方說(shuō)明如下:syntax: tcp_nopush on | off; #參數語(yǔ)法default: tcp_nopush off; #參數默認大小context:????http,server,location????#可以放置的標簽段
  <p><br /></p>
  參數作用:?激活或禁用Linux上的TCP_CORK socket選項,此選項僅僅當開(kāi)啟sendfile時(shí)才生效,激活這個(gè)tcp_nopush參數可以允許把http response header和文件的開(kāi)始部分放在一個(gè)文件里發(fā)布,其積極的作用是減少網(wǎng)絡(luò )報文段的數量。細節見(jiàn)http://nginx.org/en/docs/http/ ... .html。
  2.7 優(yōu)化Nginx連接參數,調整連接超時(shí)時(shí)間
  2.7.1 什么是連接超時(shí)2.7.2 連接超時(shí)的作用
  簡(jiǎn)單的說(shuō),連接超時(shí)是服務(wù)的一種自我管理,自我保護的重要機制。
  2.7.3 連接超時(shí)帶來(lái)的問(wèn)題,以及不同程序連接設定知識2.7.4 Nginx連接超時(shí)的參數設置
 ?。?)設置參數:keepalive_timeout 60;
  用于設置客戶(hù)端連接保持會(huì )話(huà)的超時(shí)時(shí)間為60秒。超過(guò)這個(gè)時(shí)間,服務(wù)器會(huì )關(guān)閉該連接,此數值為參考值。
  keepalive_timeout參數的官方說(shuō)明如下:syntax: keepalive_timeout timeout [header_timeout] #參數語(yǔ)法default: keepalive_timeout 75s; #參數默認大小context: http,serverr,location #可以放置的標簽段
  參數作用:
 ?。?)設置參數:tcp_nodelay on;
  用于激活tcp_ondelay功能,提高I/O性能。
  #tcp_nodelay參數的官方說(shuō)明如下:syntax: tcp_nodelay on | off #參數語(yǔ)法default: tcp_nodelay on; #參數默認大小context: http,server,location #可以放置的標簽段
  參數作用:
  默認情況下當數據發(fā)送時(shí),內核并不會(huì )馬上發(fā)送,可能會(huì )等待更多的字節組成一個(gè)數據包,這樣可以提高I/O性能。但是,在每次只發(fā)送很少字節的業(yè)務(wù)場(chǎng)景中,使用tcp_nodelay功能,等待時(shí)間會(huì )比較長(cháng)。
  參數生效條件:
  激活或禁用TCP_NODELAY選項,當一個(gè)連接進(jìn)入keep-alive狀態(tài)時(shí)生效。細節見(jiàn)。
 ?。?)設置參數:client_header_timeout 15;
  用于設置讀取客戶(hù)端請求頭數據的超時(shí)時(shí)間。此處的數值15,其單位是秒,為經(jīng)驗參考值。
  #client_header_timeout參數的官方說(shuō)明如下:syntax: client_header_timeout time; #參數語(yǔ)法default: client_header_timeout 60s; #參數默認大小context: http,server #可以放置的標簽段
  參數作用:
  設置讀取客戶(hù)端請求頭數據的超時(shí)時(shí)間。如果超過(guò)這個(gè)時(shí)間,客戶(hù)端還沒(méi)有發(fā)送完整的header數據,服務(wù)器端將返回“Request time out (408)”錯誤,可指定一個(gè)超時(shí)時(shí)間,防止客戶(hù)端利用http協(xié)議進(jìn)行攻擊。細節見(jiàn):。
 ?。?)設置參數:client_body_timeout 15;
  用于設置讀取客戶(hù)端請求主體的超時(shí)時(shí)間,默認值60
  #client_body_timeout參數的官方說(shuō)明如下:syntax: client_body_timeout time; #參數語(yǔ)法default: client_body_timeout 60s; #默認60context: http,server,location #可以放置的標簽段
  參數作用:
  設置讀取客戶(hù)端請求主體的超時(shí)時(shí)間。這個(gè)超時(shí)僅僅為兩次成功的讀取操作之間的一個(gè)超時(shí),非請求整個(gè)主體數據的超時(shí)時(shí)間,如果在這個(gè)超時(shí)時(shí)間內,客戶(hù)端沒(méi)有發(fā)送任何數據,Nginx將返回“Request time out(408)”錯誤,默認值60,細節見(jiàn):
 ?。?)設置參數:send_timeout 25;
  用于指定響應客戶(hù)端的超時(shí)時(shí)間。這個(gè)超時(shí)僅限于兩個(gè)連接活動(dòng)之間的時(shí)間,如果超過(guò)這個(gè)時(shí)間,客戶(hù)端沒(méi)有任何活動(dòng),Nginx將會(huì )關(guān)閉連接,默認值為60秒,可以改為參考值25秒。
  #send_timeout參數的官方說(shuō)明如下:syntax: send_timeout time; #參數語(yǔ)法default: send_timeout 60s; #默認值60context: http,server,location #可以放置的標簽段
  參數作用:

php抓取網(wǎng)頁(yè)指定內容,獲取新浪微博ip地址的地址

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 186 次瀏覽 ? 2022-05-09 14:08 ? 來(lái)自相關(guān)話(huà)題

  php抓取網(wǎng)頁(yè)指定內容,獲取新浪微博ip地址的地址
  php抓取網(wǎng)頁(yè)指定內容,可以使用gmail的特定接口,如國內新浪微博api接口。
  一、抓取注冊郵箱ip地址抓取注冊郵箱ip地址的地址如下,填寫(xiě)完成后,php解析郵箱地址數據(獲取其label)就可以獲取到其ip地址。通過(guò)gmail獲取每個(gè)國家的ip地址,我們可以把這些國家的ip地址進(jìn)行數據交換。就可以構建一個(gè)社交網(wǎng)絡(luò )的圖譜。舉個(gè)例子:比如我們獲取了美國的圖譜之后,我們再把這些圖譜同步到國內,然后注冊新浪微博,就可以獲取新浪微博的粉絲的郵箱地址和密碼了。
  二、批量抓取微博圖譜將獲取到的圖譜批量地寫(xiě)成*.jpg格式,然后用php或其他語(yǔ)言把圖譜文件解析出來(lái)。抓取圖譜的類(lèi)、名、地址都寫(xiě)到文件里,php解析文件的函數使用的是getpid方法,getpid返回的label與地址參數label對應,如下圖中的str_link。就可以把整個(gè)圖譜庫批量地編號好,后續對象、各個(gè)url進(jìn)行g(shù)etpid方法調用。
  三、批量抓取feed列表php獲取feed列表后,我們可以將feed獲取好的鏈接用javascript進(jìn)行操作,因為ie瀏覽器本身是帶有廣告的,如果沒(méi)有ie瀏覽器也可以進(jìn)行抓取,這個(gè)非瀏覽器地址不推薦使用,圖片傳輸可以使用。phpdiv中引入javascript就可以實(shí)現對網(wǎng)頁(yè)的操作操作javascript對cookie進(jìn)行操作后,返回的內容就是我們想要獲取的圖譜信息。
  四、圖片地址獲取php獲取圖片地址后,可以用scrapy的輪詢(xún)技術(shù)進(jìn)行抓取,效率也比較高。還可以在程序中,同時(shí)存在多個(gè)圖片地址,然后給他們分別編號,然后getpid方法獲取,不僅提高抓取速度,還節省了線(xiàn)路和網(wǎng)絡(luò )資源。效果如下,
  五、爬取其他網(wǎng)站數據打開(kāi)國內數據競價(jià)平臺(實(shí)時(shí)競價(jià)平臺)ip代理,獲取ip和頭像。打開(kāi)href="",返回ip返回頭像可以獲取出來(lái)。php爬蟲(chóng)在爬取其他網(wǎng)站數據時(shí),我們可以使用上面在gmail獲取圖譜里面獲取的信息,并再寫(xiě)入到循環(huán)中。
  六、爬取海外數據海外的數據太多,并且數據很好爬取,為了一一爬取數據,都需要單獨編號命名。我們可以使用leap瀏覽器,獲取頭像,進(jìn)行編號。php解析html的地址是‘/ajax/user-agent-set-cookie-id’,這里的id是我們在gmail獲取到的ip值,http/1.1,而user-agent-set-cookie-id為:gmail,可以使用數據庫表-id/set-cookie-id的方式獲取,默認值應該是8123474。
  這里的1-10好多爬蟲(chóng)都獲取的不對應,第一個(gè)0和9都有爬取過(guò)。這些都可以單獨獲取的。在爬取國內的數據時(shí),一個(gè)爬蟲(chóng)一個(gè)爬。 查看全部

  php抓取網(wǎng)頁(yè)指定內容,獲取新浪微博ip地址的地址
  php抓取網(wǎng)頁(yè)指定內容,可以使用gmail的特定接口,如國內新浪微博api接口。
  一、抓取注冊郵箱ip地址抓取注冊郵箱ip地址的地址如下,填寫(xiě)完成后,php解析郵箱地址數據(獲取其label)就可以獲取到其ip地址。通過(guò)gmail獲取每個(gè)國家的ip地址,我們可以把這些國家的ip地址進(jìn)行數據交換。就可以構建一個(gè)社交網(wǎng)絡(luò )的圖譜。舉個(gè)例子:比如我們獲取了美國的圖譜之后,我們再把這些圖譜同步到國內,然后注冊新浪微博,就可以獲取新浪微博的粉絲的郵箱地址和密碼了。
  二、批量抓取微博圖譜將獲取到的圖譜批量地寫(xiě)成*.jpg格式,然后用php或其他語(yǔ)言把圖譜文件解析出來(lái)。抓取圖譜的類(lèi)、名、地址都寫(xiě)到文件里,php解析文件的函數使用的是getpid方法,getpid返回的label與地址參數label對應,如下圖中的str_link。就可以把整個(gè)圖譜庫批量地編號好,后續對象、各個(gè)url進(jìn)行g(shù)etpid方法調用。
  三、批量抓取feed列表php獲取feed列表后,我們可以將feed獲取好的鏈接用javascript進(jìn)行操作,因為ie瀏覽器本身是帶有廣告的,如果沒(méi)有ie瀏覽器也可以進(jìn)行抓取,這個(gè)非瀏覽器地址不推薦使用,圖片傳輸可以使用。phpdiv中引入javascript就可以實(shí)現對網(wǎng)頁(yè)的操作操作javascript對cookie進(jìn)行操作后,返回的內容就是我們想要獲取的圖譜信息。
  四、圖片地址獲取php獲取圖片地址后,可以用scrapy的輪詢(xún)技術(shù)進(jìn)行抓取,效率也比較高。還可以在程序中,同時(shí)存在多個(gè)圖片地址,然后給他們分別編號,然后getpid方法獲取,不僅提高抓取速度,還節省了線(xiàn)路和網(wǎng)絡(luò )資源。效果如下,
  五、爬取其他網(wǎng)站數據打開(kāi)國內數據競價(jià)平臺(實(shí)時(shí)競價(jià)平臺)ip代理,獲取ip和頭像。打開(kāi)href="",返回ip返回頭像可以獲取出來(lái)。php爬蟲(chóng)在爬取其他網(wǎng)站數據時(shí),我們可以使用上面在gmail獲取圖譜里面獲取的信息,并再寫(xiě)入到循環(huán)中。
  六、爬取海外數據海外的數據太多,并且數據很好爬取,為了一一爬取數據,都需要單獨編號命名。我們可以使用leap瀏覽器,獲取頭像,進(jìn)行編號。php解析html的地址是‘/ajax/user-agent-set-cookie-id’,這里的id是我們在gmail獲取到的ip值,http/1.1,而user-agent-set-cookie-id為:gmail,可以使用數據庫表-id/set-cookie-id的方式獲取,默認值應該是8123474。
  這里的1-10好多爬蟲(chóng)都獲取的不對應,第一個(gè)0和9都有爬取過(guò)。這些都可以單獨獲取的。在爬取國內的數據時(shí),一個(gè)爬蟲(chóng)一個(gè)爬。

運用Python實(shí)現WordPress網(wǎng)站大規模自動(dòng)化發(fā)布文章(附源碼版)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 138 次瀏覽 ? 2022-05-08 14:43 ? 來(lái)自相關(guān)話(huà)題

  運用Python實(shí)現WordPress網(wǎng)站大規模自動(dòng)化發(fā)布文章(附源碼版)
  很多用WordPress建站的朋友都有這樣的苦惱,網(wǎng)站建好了,沒(méi)有時(shí)間自己寫(xiě)文章,慢慢就荒廢了,還有的朋友在瀏覽器收集好多喜歡的博客網(wǎng)站地址,因為收集的網(wǎng)址太多太雜,從此也很少點(diǎn)開(kāi)看。其實(shí)只要幾行代碼我們就可以完全利用Python和WordPress建一個(gè)屬于自己的文章抓取站點(diǎn)。主要是運用python newspaper xmlrpc 模塊編寫(xiě)實(shí)現網(wǎng)頁(yè)爬蟲(chóng),通過(guò)正則匹配爬取網(wǎng)頁(yè)內容后,用xmlrpc自動(dòng)發(fā)布到WordPress部署的網(wǎng)站。然后采用crond定時(shí)抓取。
  
  代碼開(kāi)源在github:運用Python實(shí)現WordPress網(wǎng)站大規模自動(dòng)化發(fā)布文章
  第一部分:抓取目標頁(yè)面的文章
  #得到html的源碼
def gethtml(url1):
? ?#偽裝瀏覽器頭部
? ?headers = {
? ? ? 'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'
}
? ?req = urllib2.Request(
? ?url = url1,
? ?headers = headers
? ?)
? ?html = urllib2.urlopen(req).read()
? ?return html
#得到目標url源碼
code1 = gethtml('https://www.baidu.com')#示例
#提取內容
content1 = re.findall('(.*)',code1)#示例
#追加記錄采集來(lái)的內容
f1 = open('contents1.txt','a+')
#讀取txt中的內容
exist1 = f1.read()
  
  第二部分:通過(guò)xmlrpc發(fā)送文章到WordPress
  def sends():
? ?for i in range(len(content1)):
? ? ? ?u=content1[i][0]
? ? ? ?url='https://www.baidu.com'+u
? ? ? ?a=Article(url,language='zh')
? ? ? ?a.download()
? ? ? ?a.parse()
? ? ? ?dst=a.text
? ? ? ?title=a.title
? ? ? ?#鏈接WordPress,輸入xmlrpc鏈接,后臺賬號密碼
? ? ? ?wp = Client('http://www.python-cn.com/xmlrpc.php','username','password')
? ? ? ?post = WordPressPost()
? ? ? ?post.title = title
? ? ? ?post.content = dst
? ? ? ?post.post_status = 'publish'
? ? ? ?#發(fā)送到WordPress
? ? ? ?wp.call(NewPost(post))
? ? ? ?time.sleep(3)
? ? ? ?print 'posts updates'
  
  最后,通過(guò)crontab定時(shí)運行程序,采集指定文章發(fā)送的WordPress
  0 12 * * 2 /usr/bin/python /home/workspace/python-cn/python-cn.py
  后續橙哥將詳細寫(xiě)出newspaper抓取文章、WordPress xmlrpc配置等細節和代碼的具體解釋?zhuān)唧w請關(guān)注微信公眾號:Python中文社區
  Python中文社區(),致力于成為國內最好的Python開(kāi)發(fā)者學(xué)習交流平臺,這里有關(guān)于Python的國內外最新消息,每日推送有趣有料的技術(shù)干貨和社區動(dòng)態(tài)。歡迎長(cháng)按以下二維碼掃描關(guān)注!
   查看全部

  運用Python實(shí)現WordPress網(wǎng)站大規模自動(dòng)化發(fā)布文章(附源碼版)
  很多用WordPress建站的朋友都有這樣的苦惱,網(wǎng)站建好了,沒(méi)有時(shí)間自己寫(xiě)文章,慢慢就荒廢了,還有的朋友在瀏覽器收集好多喜歡的博客網(wǎng)站地址,因為收集的網(wǎng)址太多太雜,從此也很少點(diǎn)開(kāi)看。其實(shí)只要幾行代碼我們就可以完全利用Python和WordPress建一個(gè)屬于自己的文章抓取站點(diǎn)。主要是運用python newspaper xmlrpc 模塊編寫(xiě)實(shí)現網(wǎng)頁(yè)爬蟲(chóng),通過(guò)正則匹配爬取網(wǎng)頁(yè)內容后,用xmlrpc自動(dòng)發(fā)布到WordPress部署的網(wǎng)站。然后采用crond定時(shí)抓取。
  
  代碼開(kāi)源在github:運用Python實(shí)現WordPress網(wǎng)站大規模自動(dòng)化發(fā)布文章
  第一部分:抓取目標頁(yè)面的文章
  #得到html的源碼
def gethtml(url1):
? ?#偽裝瀏覽器頭部
? ?headers = {
? ? ? 'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'
}
? ?req = urllib2.Request(
? ?url = url1,
? ?headers = headers
? ?)
? ?html = urllib2.urlopen(req).read()
? ?return html
#得到目標url源碼
code1 = gethtml('https://www.baidu.com')#示例
#提取內容
content1 = re.findall('(.*)',code1)#示例
#追加記錄采集來(lái)的內容
f1 = open('contents1.txt','a+')
#讀取txt中的內容
exist1 = f1.read()
  
  第二部分:通過(guò)xmlrpc發(fā)送文章到WordPress
  def sends():
? ?for i in range(len(content1)):
? ? ? ?u=content1[i][0]
? ? ? ?url='https://www.baidu.com'+u
? ? ? ?a=Article(url,language='zh')
? ? ? ?a.download()
? ? ? ?a.parse()
? ? ? ?dst=a.text
? ? ? ?title=a.title
? ? ? ?#鏈接WordPress,輸入xmlrpc鏈接,后臺賬號密碼
? ? ? ?wp = Client('http://www.python-cn.com/xmlrpc.php','username','password')
? ? ? ?post = WordPressPost()
? ? ? ?post.title = title
? ? ? ?post.content = dst
? ? ? ?post.post_status = 'publish'
? ? ? ?#發(fā)送到WordPress
? ? ? ?wp.call(NewPost(post))
? ? ? ?time.sleep(3)
? ? ? ?print 'posts updates'
  
  最后,通過(guò)crontab定時(shí)運行程序,采集指定文章發(fā)送的WordPress
  0 12 * * 2 /usr/bin/python /home/workspace/python-cn/python-cn.py
  后續橙哥將詳細寫(xiě)出newspaper抓取文章、WordPress xmlrpc配置等細節和代碼的具體解釋?zhuān)唧w請關(guān)注微信公眾號:Python中文社區
  Python中文社區(),致力于成為國內最好的Python開(kāi)發(fā)者學(xué)習交流平臺,這里有關(guān)于Python的國內外最新消息,每日推送有趣有料的技術(shù)干貨和社區動(dòng)態(tài)。歡迎長(cháng)按以下二維碼掃描關(guān)注!
  

php抓取網(wǎng)頁(yè)指定內容(輸入curl命令)(2)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 110 次瀏覽 ? 2022-05-08 13:01 ? 來(lái)自相關(guān)話(huà)題

  php抓取網(wǎng)頁(yè)指定內容(輸入curl命令)(2)
  php抓取網(wǎng)頁(yè)指定內容(輸入curl命令)我們網(wǎng)頁(yè)中一般有域名對應的ip,可以抓取ip對應的頁(yè)面的內容,網(wǎng)頁(yè)都是html文檔,可以從html文檔找到這樣一段代碼:/*@location="。"/**location。href="chrome">**@varispluginhistory=newhttp("/");httpget"chrome"//請求建議這樣帶上ispluginhistory代表當前端口是否為9000[1]。
  */ispluginhistory。length=1;//獲取請求頭ispluginhistory。target="_blank";//抓取target標簽內容httpget"chrome"//帶有target標簽,“chrome”網(wǎng)址不需要帶有域名*/httpget"chrome"//帶有target標簽,“chrome”網(wǎng)址不需要帶有域名*/ispluginhistory。
  maxvalue=1;//alert(ispluginhistory。maxvalue);有了上面的代碼我們就可以抓取【chrome網(wǎng)址】,并將href="chrome"拿下來(lái),curl命令這么做:ispluginhistory。length=1;//alert(ispluginhistory。maxvalue);//獲取請求頭ispluginhistory。
  target="_blank";//獲取target標簽內容ispluginhistory。maxvalue=1;//alert(ispluginhistory。maxvalue);抓取標準頁(yè)面的標準代碼:echo"";?>if(!strtoclose($doc)){echo"\n";}$doc->str_as_string($url);?>?>根據上面我們實(shí)現過(guò)程,我們就能大致地知道怎么抓取域名為9000端口,響應為404的頁(yè)面,但是如果php5以上的話(huà),再用到上面的functiongetch。 查看全部

  php抓取網(wǎng)頁(yè)指定內容(輸入curl命令)(2)
  php抓取網(wǎng)頁(yè)指定內容(輸入curl命令)我們網(wǎng)頁(yè)中一般有域名對應的ip,可以抓取ip對應的頁(yè)面的內容,網(wǎng)頁(yè)都是html文檔,可以從html文檔找到這樣一段代碼:/*@location="。"/**location。href="chrome">**@varispluginhistory=newhttp("/");httpget"chrome"//請求建議這樣帶上ispluginhistory代表當前端口是否為9000[1]。
  */ispluginhistory。length=1;//獲取請求頭ispluginhistory。target="_blank";//抓取target標簽內容httpget"chrome"//帶有target標簽,“chrome”網(wǎng)址不需要帶有域名*/httpget"chrome"//帶有target標簽,“chrome”網(wǎng)址不需要帶有域名*/ispluginhistory。
  maxvalue=1;//alert(ispluginhistory。maxvalue);有了上面的代碼我們就可以抓取【chrome網(wǎng)址】,并將href="chrome"拿下來(lái),curl命令這么做:ispluginhistory。length=1;//alert(ispluginhistory。maxvalue);//獲取請求頭ispluginhistory。
  target="_blank";//獲取target標簽內容ispluginhistory。maxvalue=1;//alert(ispluginhistory。maxvalue);抓取標準頁(yè)面的標準代碼:echo"";?>if(!strtoclose($doc)){echo"\n";}$doc->str_as_string($url);?>?>根據上面我們實(shí)現過(guò)程,我們就能大致地知道怎么抓取域名為9000端口,響應為404的頁(yè)面,但是如果php5以上的話(huà),再用到上面的functiongetch。

解決方案:Google搜索引擎基礎知識

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 129 次瀏覽 ? 2022-09-23 19:17 ? 來(lái)自相關(guān)話(huà)題

  解決方案:Google搜索引擎基礎知識
  抓取過(guò)程從以前抓取的內容的 URL 列表和 網(wǎng)站 所有者提供的站點(diǎn)地圖開(kāi)始。在訪(fǎng)問(wèn)這些 網(wǎng)站 時(shí),我們的爬蟲(chóng)會(huì )使用 網(wǎng)站 上的鏈接來(lái)探索其他網(wǎng)頁(yè)。該軟件特別注意新的 網(wǎng)站s、對現有 網(wǎng)站s 的更改以及斷開(kāi)的鏈接。計算機程序確定要抓取哪個(gè) 網(wǎng)站、多久抓取一次以及從每個(gè) 網(wǎng)站 抓取多少頁(yè)。
  為了讓 網(wǎng)站所有者能夠更詳細地指定 Google 如何抓取他們的 網(wǎng)站,我們引入了 Search Console:網(wǎng)站所有者可以向我們提供有關(guān)如何處理其網(wǎng)頁(yè)的詳細說(shuō)明,請求重新抓取,或使用 robots.txt 文件完全禁止抓取工具抓取其 網(wǎng)站。 Google 絕不會(huì )接受網(wǎng)站為更頻繁地抓取而付費 - 我們?yōu)樗芯W(wǎng)站提供相同的工具,以確保為我們的用戶(hù)提供最佳搜索結果。
  
  通過(guò)抓取查找信息
  網(wǎng)絡(luò )就像一個(gè)不斷擴大的圖書(shū)館,擁有數十億本書(shū),但沒(méi)有中央記錄管理系統。我們使用一種稱(chēng)為網(wǎng)絡(luò )爬蟲(chóng)的軟件來(lái)發(fā)現可供公眾訪(fǎng)問(wèn)的網(wǎng)頁(yè)。爬蟲(chóng)查看網(wǎng)頁(yè)并跟蹤指向這些頁(yè)面的鏈接,就好像您正在瀏覽網(wǎng)絡(luò )上的內容一樣。這些爬蟲(chóng)會(huì )遍歷每個(gè)鏈接并將每個(gè)頁(yè)面的數據返回到 Google 的服務(wù)器。
  通過(guò)索引組織信息
  
  當爬蟲(chóng)找到頁(yè)面時(shí),我們的系統會(huì )像瀏覽器一樣呈現頁(yè)面內容。我們記錄關(guān)鍵信號(從關(guān)鍵字到 網(wǎng)站新鮮度),然后在 Google 搜索索引中跟蹤所有這些信號。
  Google 的搜索索引收錄數千億個(gè)網(wǎng)頁(yè),這些網(wǎng)頁(yè)的大小遠遠超過(guò) 1 億 GB。這就像一本書(shū)后面的索引 - 每個(gè)索引頁(yè)面上出現的每個(gè)單詞都有一個(gè)條目。當一個(gè)頁(yè)面被索引時(shí),它被添加到它收錄的所有術(shù)語(yǔ)的條目中。
  借助知識圖譜,我們將繼續超越關(guān)鍵字匹配,以更好地了解您關(guān)心的人物、地點(diǎn)和事物。為此,我們不僅組織有關(guān)網(wǎng)頁(yè)的信息,還組織其他類(lèi)型的信息。如今,Google 搜索不僅可以幫助您在大型圖書(shū)館中搜索數以百萬(wàn)計的書(shū)籍,查找當地公交公司的路線(xiàn)和時(shí)刻表,還可以幫助您瀏覽來(lái)自世界銀行等公共來(lái)源的數據。
  知識和經(jīng)驗:網(wǎng)站優(yōu)化的五大基礎知識
  首先,搜索引擎優(yōu)化以用戶(hù)的搜索體驗為中心。通過(guò)提高網(wǎng)頁(yè)層次,建立合理的網(wǎng)站鏈接結構/目錄結構,建立外部鏈接,豐富網(wǎng)站的內容和表達方式,使網(wǎng)站的設計符合搜索規則引擎,友好并在搜索引擎上獲得高排名權重。
  其次,原創(chuàng ) 和高度相關(guān)的 文章 優(yōu)化對 網(wǎng)站 的好處。我們常說(shuō)網(wǎng)站優(yōu)化內容為王,搜索引擎愛(ài)原創(chuàng )文章,說(shuō)白了原創(chuàng )文章意思一樣文章@ &gt; 百度搜索是獨一無(wú)二的。繼續寫(xiě)出優(yōu)秀的原創(chuàng )文章可以快速提升排名。
  
  三、我們通常說(shuō)一個(gè)適合網(wǎng)站優(yōu)化的網(wǎng)站有以下幾個(gè)元素:是靜態(tài)的URL,網(wǎng)站頁(yè)面標題關(guān)鍵詞和描述不支持單獨設置,網(wǎng)站的結構是否足夠扁平,鏈接深度是否足夠淺,內部鏈接是否流暢等等?,F在很多 cms 系統都很好地處理了這些問(wèn)題,所以這不是一個(gè)非常困難的點(diǎn)。
  四、通過(guò)網(wǎng)站地圖,搜索引擎可以快速了解你網(wǎng)站總共有多少頁(yè)面,并快速爬取。會(huì )有蜘蛛無(wú)法爬取的情況,因為目錄結構太復雜。. 網(wǎng)站地圖的主要目的是增加收錄的數量。
  
  第五,外部鏈接為王。搜索引擎決定一個(gè)頁(yè)面是否有價(jià)值以及是否應該給予更高排名的最重要因素之一是有多少高質(zhì)量的外部鏈接指向該頁(yè)面。大多數網(wǎng)站的主頁(yè)底部或右側都有一個(gè)鏈接欄。友情鏈接是一個(gè)十字架,你鏈接我,我鏈接你。最好只在首頁(yè)有友情鏈接(這里指的是小網(wǎng)站)。使用外部鏈接將權重傳遞給目標站點(diǎn)。使用內部鏈接合理分配權重流量。所以當我們有高質(zhì)量的原創(chuàng )文章的時(shí)候,我們還需要為頁(yè)面創(chuàng )建一些高質(zhì)量的外鏈。
  SEO優(yōu)化工作需要做很久才能看到效果。只有做好基礎工作,積累一點(diǎn)點(diǎn),不斷優(yōu)化網(wǎng)站的內容,緊貼用戶(hù)需求,網(wǎng)站才會(huì )有不錯的排名。 查看全部

  解決方案:Google搜索引擎基礎知識
  抓取過(guò)程從以前抓取的內容的 URL 列表和 網(wǎng)站 所有者提供的站點(diǎn)地圖開(kāi)始。在訪(fǎng)問(wèn)這些 網(wǎng)站 時(shí),我們的爬蟲(chóng)會(huì )使用 網(wǎng)站 上的鏈接來(lái)探索其他網(wǎng)頁(yè)。該軟件特別注意新的 網(wǎng)站s、對現有 網(wǎng)站s 的更改以及斷開(kāi)的鏈接。計算機程序確定要抓取哪個(gè) 網(wǎng)站、多久抓取一次以及從每個(gè) 網(wǎng)站 抓取多少頁(yè)。
  為了讓 網(wǎng)站所有者能夠更詳細地指定 Google 如何抓取他們的 網(wǎng)站,我們引入了 Search Console:網(wǎng)站所有者可以向我們提供有關(guān)如何處理其網(wǎng)頁(yè)的詳細說(shuō)明,請求重新抓取,或使用 robots.txt 文件完全禁止抓取工具抓取其 網(wǎng)站。 Google 絕不會(huì )接受網(wǎng)站為更頻繁地抓取而付費 - 我們?yōu)樗芯W(wǎng)站提供相同的工具,以確保為我們的用戶(hù)提供最佳搜索結果。
  
  通過(guò)抓取查找信息
  網(wǎng)絡(luò )就像一個(gè)不斷擴大的圖書(shū)館,擁有數十億本書(shū),但沒(méi)有中央記錄管理系統。我們使用一種稱(chēng)為網(wǎng)絡(luò )爬蟲(chóng)的軟件來(lái)發(fā)現可供公眾訪(fǎng)問(wèn)的網(wǎng)頁(yè)。爬蟲(chóng)查看網(wǎng)頁(yè)并跟蹤指向這些頁(yè)面的鏈接,就好像您正在瀏覽網(wǎng)絡(luò )上的內容一樣。這些爬蟲(chóng)會(huì )遍歷每個(gè)鏈接并將每個(gè)頁(yè)面的數據返回到 Google 的服務(wù)器。
  通過(guò)索引組織信息
  
  當爬蟲(chóng)找到頁(yè)面時(shí),我們的系統會(huì )像瀏覽器一樣呈現頁(yè)面內容。我們記錄關(guān)鍵信號(從關(guān)鍵字到 網(wǎng)站新鮮度),然后在 Google 搜索索引中跟蹤所有這些信號。
  Google 的搜索索引收錄數千億個(gè)網(wǎng)頁(yè),這些網(wǎng)頁(yè)的大小遠遠超過(guò) 1 億 GB。這就像一本書(shū)后面的索引 - 每個(gè)索引頁(yè)面上出現的每個(gè)單詞都有一個(gè)條目。當一個(gè)頁(yè)面被索引時(shí),它被添加到它收錄的所有術(shù)語(yǔ)的條目中。
  借助知識圖譜,我們將繼續超越關(guān)鍵字匹配,以更好地了解您關(guān)心的人物、地點(diǎn)和事物。為此,我們不僅組織有關(guān)網(wǎng)頁(yè)的信息,還組織其他類(lèi)型的信息。如今,Google 搜索不僅可以幫助您在大型圖書(shū)館中搜索數以百萬(wàn)計的書(shū)籍,查找當地公交公司的路線(xiàn)和時(shí)刻表,還可以幫助您瀏覽來(lái)自世界銀行等公共來(lái)源的數據。
  知識和經(jīng)驗:網(wǎng)站優(yōu)化的五大基礎知識
  首先,搜索引擎優(yōu)化以用戶(hù)的搜索體驗為中心。通過(guò)提高網(wǎng)頁(yè)層次,建立合理的網(wǎng)站鏈接結構/目錄結構,建立外部鏈接,豐富網(wǎng)站的內容和表達方式,使網(wǎng)站的設計符合搜索規則引擎,友好并在搜索引擎上獲得高排名權重。
  其次,原創(chuàng ) 和高度相關(guān)的 文章 優(yōu)化對 網(wǎng)站 的好處。我們常說(shuō)網(wǎng)站優(yōu)化內容為王,搜索引擎愛(ài)原創(chuàng )文章,說(shuō)白了原創(chuàng )文章意思一樣文章@ &gt; 百度搜索是獨一無(wú)二的。繼續寫(xiě)出優(yōu)秀的原創(chuàng )文章可以快速提升排名。
  
  三、我們通常說(shuō)一個(gè)適合網(wǎng)站優(yōu)化的網(wǎng)站有以下幾個(gè)元素:是靜態(tài)的URL,網(wǎng)站頁(yè)面標題關(guān)鍵詞和描述不支持單獨設置,網(wǎng)站的結構是否足夠扁平,鏈接深度是否足夠淺,內部鏈接是否流暢等等?,F在很多 cms 系統都很好地處理了這些問(wèn)題,所以這不是一個(gè)非常困難的點(diǎn)。
  四、通過(guò)網(wǎng)站地圖,搜索引擎可以快速了解你網(wǎng)站總共有多少頁(yè)面,并快速爬取。會(huì )有蜘蛛無(wú)法爬取的情況,因為目錄結構太復雜。. 網(wǎng)站地圖的主要目的是增加收錄的數量。
  
  第五,外部鏈接為王。搜索引擎決定一個(gè)頁(yè)面是否有價(jià)值以及是否應該給予更高排名的最重要因素之一是有多少高質(zhì)量的外部鏈接指向該頁(yè)面。大多數網(wǎng)站的主頁(yè)底部或右側都有一個(gè)鏈接欄。友情鏈接是一個(gè)十字架,你鏈接我,我鏈接你。最好只在首頁(yè)有友情鏈接(這里指的是小網(wǎng)站)。使用外部鏈接將權重傳遞給目標站點(diǎn)。使用內部鏈接合理分配權重流量。所以當我們有高質(zhì)量的原創(chuàng )文章的時(shí)候,我們還需要為頁(yè)面創(chuàng )建一些高質(zhì)量的外鏈。
  SEO優(yōu)化工作需要做很久才能看到效果。只有做好基礎工作,積累一點(diǎn)點(diǎn),不斷優(yōu)化網(wǎng)站的內容,緊貼用戶(hù)需求,網(wǎng)站才會(huì )有不錯的排名。

php抓取網(wǎng)頁(yè)指定內容,包括返回的正則表達式內容

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 103 次瀏覽 ? 2022-09-16 00:03 ? 來(lái)自相關(guān)話(huà)題

  php抓取網(wǎng)頁(yè)指定內容,包括返回的正則表達式內容
  php抓取網(wǎng)頁(yè)指定內容,包括返回的正則表達式內容,爬蟲(chóng)爬取的json數據,以及在jsp頁(yè)面上修改html代碼都是最基本的,不深入。
  一、requests相關(guān)用法
  1.post請求post請求是xmlhttprequest對象的重要方法,stdout是jsonp請求的核心,jsonp請求支持string、bytes、bytebuffer、text等格式的請求內容。
  
  1.
  1、post方法post請求一般以put方法將數據包含在對象或數據包中,更多的參數需要通過(guò)stdout字符串攜帶。
  2、get方法get包含四種方法:get(scheme,url,path,timeout)其中第一個(gè)參數表示scheme,是根據你請求的服務(wù)器類(lèi)型決定的,一般情況下請求的服務(wù)器是flash/webkit(原來(lái)activex對象自身)等就選擇stream(flash),反之就選get。
  3、postman.js中的get請求,是基于以前的server.post(path,url,path)三個(gè)參數決定,請求address,url,path(status,name,port)。之前生成的get請求記錄是保存在sqlite數據庫中。
  
  4、postman.js中的post請求是基于jsonp(請求參數傳遞header,返回response),請求參數中多出一個(gè)或多個(gè)字段表示是對請求參數的設置,默認為none(空字段);另外請求參數也可以傳入request對象的私有屬性(如.text或.request),則請求會(huì )被解析為有關(guān)http請求的規范格式,可以作為結果集返回,方便組合并進(jìn)行多種格式轉換。1.。
  5、server.post(scheme,url,path,timeout)設置請求參數,對scheme參數,在中script標簽中嵌入get請求(get(scheme,url,path,timeout)),請求返回的結果會(huì )被轉發(fā),header一個(gè)script標簽中只能指定一個(gè)字段表示請求參數,對于成對數組參數,可以用for循環(huán)獲取字段值或用list()函數返回成對的字段值。
  對于scheme一般以"./"開(kāi)頭,scheme也不需要指定一個(gè)url,可以在中通過(guò)dom模塊中的navigatordirectory屬性獲取。對于url,可以在中dom模塊中的navigatordirectory屬性中獲取。對于path參數,通過(guò)標簽的src屬性獲取路徑,如<a>.html</a>.txt。對于timeout一般以標簽下的scope屬性設置,作用為等待請求返回。1.。
  6、server。postmessage(scheme,url,path,timeout)實(shí)現請求參數的map格式,用來(lái)自定義參數,例如。html{"location":""},用來(lái)指定請求的服務(wù)器名稱(chēng)以及timeout參數,實(shí)現多次請求的相互識別,如://用來(lái)指定服務(wù)器名稱(chēng)multipart/form-dataaction=""//自定義請求參數//。 查看全部

  php抓取網(wǎng)頁(yè)指定內容,包括返回的正則表達式內容
  php抓取網(wǎng)頁(yè)指定內容,包括返回的正則表達式內容,爬蟲(chóng)爬取的json數據,以及在jsp頁(yè)面上修改html代碼都是最基本的,不深入。
  一、requests相關(guān)用法
  1.post請求post請求是xmlhttprequest對象的重要方法,stdout是jsonp請求的核心,jsonp請求支持string、bytes、bytebuffer、text等格式的請求內容。
  
  1.
  1、post方法post請求一般以put方法將數據包含在對象或數據包中,更多的參數需要通過(guò)stdout字符串攜帶。
  2、get方法get包含四種方法:get(scheme,url,path,timeout)其中第一個(gè)參數表示scheme,是根據你請求的服務(wù)器類(lèi)型決定的,一般情況下請求的服務(wù)器是flash/webkit(原來(lái)activex對象自身)等就選擇stream(flash),反之就選get。
  3、postman.js中的get請求,是基于以前的server.post(path,url,path)三個(gè)參數決定,請求address,url,path(status,name,port)。之前生成的get請求記錄是保存在sqlite數據庫中。
  
  4、postman.js中的post請求是基于jsonp(請求參數傳遞header,返回response),請求參數中多出一個(gè)或多個(gè)字段表示是對請求參數的設置,默認為none(空字段);另外請求參數也可以傳入request對象的私有屬性(如.text或.request),則請求會(huì )被解析為有關(guān)http請求的規范格式,可以作為結果集返回,方便組合并進(jìn)行多種格式轉換。1.。
  5、server.post(scheme,url,path,timeout)設置請求參數,對scheme參數,在中script標簽中嵌入get請求(get(scheme,url,path,timeout)),請求返回的結果會(huì )被轉發(fā),header一個(gè)script標簽中只能指定一個(gè)字段表示請求參數,對于成對數組參數,可以用for循環(huán)獲取字段值或用list()函數返回成對的字段值。
  對于scheme一般以"./"開(kāi)頭,scheme也不需要指定一個(gè)url,可以在中通過(guò)dom模塊中的navigatordirectory屬性獲取。對于url,可以在中dom模塊中的navigatordirectory屬性中獲取。對于path參數,通過(guò)標簽的src屬性獲取路徑,如<a>.html</a>.txt。對于timeout一般以標簽下的scope屬性設置,作用為等待請求返回。1.。
  6、server。postmessage(scheme,url,path,timeout)實(shí)現請求參數的map格式,用來(lái)自定義參數,例如。html{"location":""},用來(lái)指定請求的服務(wù)器名稱(chēng)以及timeout參數,實(shí)現多次請求的相互識別,如://用來(lái)指定服務(wù)器名稱(chēng)multipart/form-dataaction=""//自定義請求參數//。

php抓取網(wǎng)頁(yè)指定內容有4種方法,用scrapy框架搭建web應用

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 86 次瀏覽 ? 2022-08-23 09:02 ? 來(lái)自相關(guān)話(huà)題

  php抓取網(wǎng)頁(yè)指定內容有4種方法,用scrapy框架搭建web應用
  php抓取網(wǎng)頁(yè)指定內容有4種方法,
  1、用scrapy框架搭建web應用;
  2、用selenium來(lái)抓取網(wǎng)頁(yè);
  
  3、python轉php;
  4、爬蟲(chóng)spider;今天介紹的就是用python轉php架構網(wǎng)頁(yè)上的代碼,主要針對是scrapy,
  1、scrapy和selenium代碼架構不同,需要額外寫(xiě)很多代碼,因為它是java語(yǔ)言的,
  2、scrapy無(wú)法實(shí)現很多html標簽;
  
  3、當點(diǎn)擊特定元素時(shí),
  4、好了,下面介紹如何用scrapy生成網(wǎng)頁(yè),
  4)applewebkit/537。36(khtml,likegecko)chrome/43。2681。142safari/537。36'}mypage=requests。get(url,headers=headers)login_url=""forpinheaders['post']:form_url=p['user-agent']。
  match(form_url)ifrequests。post(form_url,headers=headers)。status_code:form_url=form_url+requests。urlopen(form_url)。read()。decode('utf-8')mypage。encoding='utf-8'else:form_url=mypage。
  encodingelifselenium。open()。readstream()。encoding=='utf-8':mypage。encoding='utf-8'mypage。decode('utf-8')d=requests。get(form_url,headers=headers)。decode('utf-8')print(mypage。html)詳細代碼及實(shí)例請參考:。 查看全部

  php抓取網(wǎng)頁(yè)指定內容有4種方法,用scrapy框架搭建web應用
  php抓取網(wǎng)頁(yè)指定內容有4種方法,
  1、用scrapy框架搭建web應用;
  2、用selenium來(lái)抓取網(wǎng)頁(yè);
  
  3、python轉php;
  4、爬蟲(chóng)spider;今天介紹的就是用python轉php架構網(wǎng)頁(yè)上的代碼,主要針對是scrapy,
  1、scrapy和selenium代碼架構不同,需要額外寫(xiě)很多代碼,因為它是java語(yǔ)言的,
  2、scrapy無(wú)法實(shí)現很多html標簽;
  
  3、當點(diǎn)擊特定元素時(shí),
  4、好了,下面介紹如何用scrapy生成網(wǎng)頁(yè),
  4)applewebkit/537。36(khtml,likegecko)chrome/43。2681。142safari/537。36'}mypage=requests。get(url,headers=headers)login_url=""forpinheaders['post']:form_url=p['user-agent']。
  match(form_url)ifrequests。post(form_url,headers=headers)。status_code:form_url=form_url+requests。urlopen(form_url)。read()。decode('utf-8')mypage。encoding='utf-8'else:form_url=mypage。
  encodingelifselenium。open()。readstream()。encoding=='utf-8':mypage。encoding='utf-8'mypage。decode('utf-8')d=requests。get(form_url,headers=headers)。decode('utf-8')print(mypage。html)詳細代碼及實(shí)例請參考:。

php抓取網(wǎng)頁(yè)指定內容、動(dòng)態(tài)演示、頁(yè)面細節分析等等

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 88 次瀏覽 ? 2022-08-19 01:02 ? 來(lái)自相關(guān)話(huà)題

  php抓取網(wǎng)頁(yè)指定內容、動(dòng)態(tài)演示、頁(yè)面細節分析等等
  php抓取網(wǎng)頁(yè)指定內容、動(dòng)態(tài)演示、頁(yè)面細節分析等等,如果你需要php抓取功能的話(huà),
  h5框架的話(huà),當然小黑盒了,多線(xiàn)程腳本,自動(dòng)抓取內容,還是一個(gè)良心的框架,一個(gè)沒(méi)用過(guò)的第三方框架,都可以設置自動(dòng)抓取,這點(diǎn)小黑盒簡(jiǎn)直不要太贊。
  
  1.源碼加密可以提高性能有php,python的2.如果用框架寫(xiě)的話(huà),對于短鏈接,速度沒(méi)提高,如果放大鏈接2倍速度會(huì )進(jìn)步不少3.反向代理,可以緩解服務(wù)器壓力,
  安利sq,不僅具有"動(dòng)態(tài)演示"功能,還能提供你用手機、電腦一鍵抓取微信公眾號圖文消息,一鍵抓取b站視頻圖片、音樂(lè )、文章等內容。
  木螞蟻動(dòng)態(tài)演示功能蠻不錯的.
  
  phpstorm的模版支持,
  php的phpstorm或者vscode
  用過(guò)一些代理軟件,但有的有限制,像百度vpn小站的原理是用某種高效率帶寬做到簡(jiǎn)單編程服務(wù)器p2p,然后由aws等云提供統一的加速服務(wù),可以看一下解釋如下:從該圖中可以看出,網(wǎng)址-api選項,提供了訪(fǎng)問(wèn)phpstorm內部分享的代理,也就是真正在你機器上的代理,本地訪(fǎng)問(wèn),則是選中phpstorm,訪(fǎng)問(wèn)-api,依然是要通過(guò)服務(wù)器;但我感覺(jué)實(shí)際上phpstorm是一個(gè)擴展性非常強的后端代理(也算代理功能吧),可以手動(dòng)輸入ip和端口訪(fǎng)問(wèn)某些頁(yè)面,如下:(截圖僅供參考)當然,如果訪(fǎng)問(wèn)某些特定的頁(yè)面,有可能訪(fǎng)問(wèn)不了??傊?,可以用,但作用非常有限,小黑盒不錯,不過(guò)得去手動(dòng)添加代理,自己斟酌吧~。 查看全部

  php抓取網(wǎng)頁(yè)指定內容、動(dòng)態(tài)演示、頁(yè)面細節分析等等
  php抓取網(wǎng)頁(yè)指定內容、動(dòng)態(tài)演示、頁(yè)面細節分析等等,如果你需要php抓取功能的話(huà),
  h5框架的話(huà),當然小黑盒了,多線(xiàn)程腳本,自動(dòng)抓取內容,還是一個(gè)良心的框架,一個(gè)沒(méi)用過(guò)的第三方框架,都可以設置自動(dòng)抓取,這點(diǎn)小黑盒簡(jiǎn)直不要太贊。
  
  1.源碼加密可以提高性能有php,python的2.如果用框架寫(xiě)的話(huà),對于短鏈接,速度沒(méi)提高,如果放大鏈接2倍速度會(huì )進(jìn)步不少3.反向代理,可以緩解服務(wù)器壓力,
  安利sq,不僅具有"動(dòng)態(tài)演示"功能,還能提供你用手機、電腦一鍵抓取微信公眾號圖文消息,一鍵抓取b站視頻圖片、音樂(lè )、文章等內容。
  木螞蟻動(dòng)態(tài)演示功能蠻不錯的.
  
  phpstorm的模版支持,
  php的phpstorm或者vscode
  用過(guò)一些代理軟件,但有的有限制,像百度vpn小站的原理是用某種高效率帶寬做到簡(jiǎn)單編程服務(wù)器p2p,然后由aws等云提供統一的加速服務(wù),可以看一下解釋如下:從該圖中可以看出,網(wǎng)址-api選項,提供了訪(fǎng)問(wèn)phpstorm內部分享的代理,也就是真正在你機器上的代理,本地訪(fǎng)問(wèn),則是選中phpstorm,訪(fǎng)問(wèn)-api,依然是要通過(guò)服務(wù)器;但我感覺(jué)實(shí)際上phpstorm是一個(gè)擴展性非常強的后端代理(也算代理功能吧),可以手動(dòng)輸入ip和端口訪(fǎng)問(wèn)某些頁(yè)面,如下:(截圖僅供參考)當然,如果訪(fǎng)問(wèn)某些特定的頁(yè)面,有可能訪(fǎng)問(wèn)不了??傊?,可以用,但作用非常有限,小黑盒不錯,不過(guò)得去手動(dòng)添加代理,自己斟酌吧~。

php抓取網(wǎng)頁(yè)指定內容 常用的HTTP狀態(tài)碼

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 101 次瀏覽 ? 2022-08-17 18:53 ? 來(lái)自相關(guān)話(huà)題

  php抓取網(wǎng)頁(yè)指定內容 常用的HTTP狀態(tài)碼
  成功的狀態(tài)碼:
  200 – 服務(wù)器成功返回網(wǎng)頁(yè)
  304 – 未修改
  失敗的狀態(tài)碼:
  404 – 請求的網(wǎng)頁(yè)不存在
  503 – 服務(wù)器暫時(shí)不可用
  500 – 服務(wù)器內部錯誤
  下面的不是很常用,記住上面那幾個(gè)就ok了,有bug了再補充
  其他的狀態(tài)碼如下:
  1xx(臨時(shí)響應)
  用于表示臨時(shí)響應并需要請求者執行操作才能繼續的狀態(tài)代碼。
  100(Continue繼續)請求者應當繼續提出請求。服務(wù)器返回此代碼則意味著(zhù),服務(wù)器已收到了請求的第一部分,現正在等待接收其余部分。(HTTP 1.1新)
  101(Switching Protocols切換協(xié)議) 請求者已要求服務(wù)器切換協(xié)議,服務(wù)器已確認并準備進(jìn)行切換。(HTTP 1.1新)
  2xx(成功)
  用于表示服務(wù)器已成功處理了請求的狀態(tài)代碼。
  200(成功)服務(wù)器已成功處理了請求。通常,這表示服務(wù)器提供了請求的網(wǎng)頁(yè)。
  201(已創(chuàng )建)請求成功且服務(wù)器已創(chuàng )建了新的資源。
  202(已接受)服務(wù)器已接受了請求,但尚未對其進(jìn)行處理。
  
  203(非授權信息)服務(wù)器已成功處理了請求,但返回了可能來(lái)自另一來(lái)源的信息。
  204(無(wú)內容)服務(wù)器成功處理了請求,但未返回任何內容。
  205(重置內容)服務(wù)器成功處理了請求,但未返回任何內容。與 204 響應不同,此響應要求請求者重置文檔視圖(例如清除表單內容以輸入新內容)。
  206(部分內容)服務(wù)器成功處理了部分 GET 請求。
  3xx(已重定向)
  要完成請求,您需要進(jìn)一步進(jìn)行操作。通常,這些狀態(tài)代碼是永遠重定向的。Google 建議每次請求時(shí)使用的重定向要少于 5 個(gè)。
  300(多種選擇)服務(wù)器根據請求可執行多種操作。服務(wù)器可根據請求者 (User agent) 來(lái)選擇一項操作,或提供操作列表供請求者選擇。
  301(永久移動(dòng))請求的網(wǎng)頁(yè)已被永久移動(dòng)到新位置。服務(wù)器返回此響應(作為對 GET 或 HEAD 請求的響應)時(shí),會(huì )自動(dòng)將請求者轉到新位置。您應使用此代碼通知 Googlebot 某個(gè)網(wǎng)頁(yè)或網(wǎng)站已被永久移動(dòng)到新位置。
  302(臨時(shí)移動(dòng))服務(wù)器目前正從不同位置的網(wǎng)頁(yè)響應請求,但請求者應繼續使用原有位置來(lái)進(jìn)行以后的請求。此代碼與響應 GET 和 HEAD 請求的 301 代碼類(lèi)似,會(huì )自動(dòng)將請求者轉到不同的位置。但由于 Googlebot 會(huì )繼續抓取原有位置并將其編入索引,因此您不應使用此代碼來(lái)通知 Googlebot 某個(gè)頁(yè)面或網(wǎng)站已被移動(dòng)。
  303(查看其他位置)當請求者應對不同的位置進(jìn)行單獨的 GET 請求以檢索響應時(shí),服務(wù)器會(huì )返回此代碼。對于除 HEAD 請求之外的所有請求,服務(wù)器會(huì )自動(dòng)轉到其他位置。
  304(未修改)自從上次請求后,請求的網(wǎng)頁(yè)未被修改過(guò)。服務(wù)器返回此響應時(shí),不會(huì )返回網(wǎng)頁(yè)內容。
  305(使用代理)請求者只能使用代理訪(fǎng)問(wèn)請求的網(wǎng)頁(yè)。如果服務(wù)器返回此響應,那么,服務(wù)器還會(huì )指明請求者應當使用的代理。
  307(臨時(shí)重定向)服務(wù)器目前正從不同位置的網(wǎng)頁(yè)響應請求,但請求者應繼續使用原有位置來(lái)進(jìn)行以后的請求。此代碼與響應 GET 和 HEAD 請求的 301 代碼類(lèi)似,會(huì )自動(dòng)將請求者轉到不同的位置。但由于 Googlebot 會(huì )繼續抓取原有位置并將其編入索引,因此您不應使用此代碼來(lái)通知 Googlebot 某個(gè)頁(yè)面或網(wǎng)站已被移動(dòng)。
  4xx(請求錯誤)
  這些狀態(tài)代碼表示,請求可能出錯,已妨礙了服務(wù)器對請求的處理。
  400(錯誤請求)服務(wù)器不理解請求的語(yǔ)法。
  401(未授權)請求要求進(jìn)行身份驗證。登錄后,服務(wù)器可能會(huì )返回對頁(yè)面的此響應。
  403(已禁止)服務(wù)器拒絕請求。
  404(未找到)服務(wù)器找不到請求的網(wǎng)頁(yè)。例如,如果請求是針對服務(wù)器上不存在的網(wǎng)頁(yè)進(jìn)行的,那么,服務(wù)器通常會(huì )返回此代碼。
  
  405(方法禁用)禁用請求中所指定的方法。
  406(不接受)無(wú)法使用請求的內容特性來(lái)響應請求的網(wǎng)頁(yè)。
  407(需要代理授權)此狀態(tài)代碼與 401(未授權)類(lèi)似,但卻指定了請求者應當使用代理進(jìn)行授權。如果服務(wù)器返回此響應,那么,服務(wù)器還會(huì )指明請求者應當使用的代理。
  408(請求超時(shí))服務(wù)器等候請求時(shí)超時(shí)。
  409(沖突)服務(wù)器在完成請求時(shí)發(fā)生沖突。服務(wù)器必須包含有關(guān)響應中所發(fā)生的沖突的信息。服務(wù)器在響應與前一個(gè)請求相沖突的 PUT 請求時(shí)可能會(huì )返回此代碼,同時(shí)會(huì )提供兩個(gè)請求的差異列表。
  410(已刪除)如果請求的資源已被永久刪除,那么,服務(wù)器會(huì )返回此響應。該代碼與 404(未找到)代碼類(lèi)似,但在資源以前有但現在已經(jīng)不復存在的情況下,有時(shí)會(huì )替代 404 代碼出現。如果資源已被永久刪除,那么,您應當使用 301 代碼指定該資源的新位置。
  411(需要有效長(cháng)度)服務(wù)器不會(huì )接受包含無(wú)效內容長(cháng)度標頭字段的請求。
  412(未滿(mǎn)足前提條件)服務(wù)器未滿(mǎn)足請求者在請求中設置的其中一個(gè)前提條件。
  413(請求實(shí)體過(guò)大)服務(wù)器無(wú)法處理請求,因為請求實(shí)體過(guò)大,已超出服務(wù)器的處理能力。
  414(請求的 URI 過(guò)長(cháng))請求的 URI(通常為網(wǎng)址)過(guò)長(cháng),服務(wù)器無(wú)法進(jìn)行處理。
  415(不支持的媒體類(lèi)型)請求的格式不受請求頁(yè)面的支持。
  416(請求范圍不符合要求)如果請求是針對網(wǎng)頁(yè)的無(wú)效范圍進(jìn)行的,那么,服務(wù)器會(huì )返回此狀態(tài)代碼。
  417(未滿(mǎn)足期望值)服務(wù)器未滿(mǎn)足”期望”請求標頭字段的要求。
  5xx(服務(wù)器錯誤)
  這些狀態(tài)代碼表示,服務(wù)器在嘗試處理請求時(shí)發(fā)生內部錯誤。這些錯誤可能是服務(wù)器本身的錯誤,而不是請求出錯。
  500(服務(wù)器內部錯誤)服務(wù)器遇到錯誤,無(wú)法完成請求。
  501(尚未實(shí)施)服務(wù)器不具備完成請求的功能。例如,當服務(wù)器無(wú)法識別請求方法時(shí),服務(wù)器可能會(huì )返回此代碼。
  502(錯誤網(wǎng)關(guān))服務(wù)器作為網(wǎng)關(guān)或代理,從上游服務(wù)器收到了無(wú)效的響應。
  503(服務(wù)不可用)目前無(wú)法使用服務(wù)器(由于超載或進(jìn)行停機維護)。通常,這只是一種暫時(shí)的狀態(tài)。
  504(網(wǎng)關(guān)超時(shí))服務(wù)器作為網(wǎng)關(guān)或代理,未及時(shí)從上游服務(wù)器接收請求。 查看全部

  php抓取網(wǎng)頁(yè)指定內容 常用的HTTP狀態(tài)碼
  成功的狀態(tài)碼:
  200 – 服務(wù)器成功返回網(wǎng)頁(yè)
  304 – 未修改
  失敗的狀態(tài)碼:
  404 – 請求的網(wǎng)頁(yè)不存在
  503 – 服務(wù)器暫時(shí)不可用
  500 – 服務(wù)器內部錯誤
  下面的不是很常用,記住上面那幾個(gè)就ok了,有bug了再補充
  其他的狀態(tài)碼如下:
  1xx(臨時(shí)響應)
  用于表示臨時(shí)響應并需要請求者執行操作才能繼續的狀態(tài)代碼。
  100(Continue繼續)請求者應當繼續提出請求。服務(wù)器返回此代碼則意味著(zhù),服務(wù)器已收到了請求的第一部分,現正在等待接收其余部分。(HTTP 1.1新)
  101(Switching Protocols切換協(xié)議) 請求者已要求服務(wù)器切換協(xié)議,服務(wù)器已確認并準備進(jìn)行切換。(HTTP 1.1新)
  2xx(成功)
  用于表示服務(wù)器已成功處理了請求的狀態(tài)代碼。
  200(成功)服務(wù)器已成功處理了請求。通常,這表示服務(wù)器提供了請求的網(wǎng)頁(yè)。
  201(已創(chuàng )建)請求成功且服務(wù)器已創(chuàng )建了新的資源。
  202(已接受)服務(wù)器已接受了請求,但尚未對其進(jìn)行處理。
  
  203(非授權信息)服務(wù)器已成功處理了請求,但返回了可能來(lái)自另一來(lái)源的信息。
  204(無(wú)內容)服務(wù)器成功處理了請求,但未返回任何內容。
  205(重置內容)服務(wù)器成功處理了請求,但未返回任何內容。與 204 響應不同,此響應要求請求者重置文檔視圖(例如清除表單內容以輸入新內容)。
  206(部分內容)服務(wù)器成功處理了部分 GET 請求。
  3xx(已重定向)
  要完成請求,您需要進(jìn)一步進(jìn)行操作。通常,這些狀態(tài)代碼是永遠重定向的。Google 建議每次請求時(shí)使用的重定向要少于 5 個(gè)。
  300(多種選擇)服務(wù)器根據請求可執行多種操作。服務(wù)器可根據請求者 (User agent) 來(lái)選擇一項操作,或提供操作列表供請求者選擇。
  301(永久移動(dòng))請求的網(wǎng)頁(yè)已被永久移動(dòng)到新位置。服務(wù)器返回此響應(作為對 GET 或 HEAD 請求的響應)時(shí),會(huì )自動(dòng)將請求者轉到新位置。您應使用此代碼通知 Googlebot 某個(gè)網(wǎng)頁(yè)或網(wǎng)站已被永久移動(dòng)到新位置。
  302(臨時(shí)移動(dòng))服務(wù)器目前正從不同位置的網(wǎng)頁(yè)響應請求,但請求者應繼續使用原有位置來(lái)進(jìn)行以后的請求。此代碼與響應 GET 和 HEAD 請求的 301 代碼類(lèi)似,會(huì )自動(dòng)將請求者轉到不同的位置。但由于 Googlebot 會(huì )繼續抓取原有位置并將其編入索引,因此您不應使用此代碼來(lái)通知 Googlebot 某個(gè)頁(yè)面或網(wǎng)站已被移動(dòng)。
  303(查看其他位置)當請求者應對不同的位置進(jìn)行單獨的 GET 請求以檢索響應時(shí),服務(wù)器會(huì )返回此代碼。對于除 HEAD 請求之外的所有請求,服務(wù)器會(huì )自動(dòng)轉到其他位置。
  304(未修改)自從上次請求后,請求的網(wǎng)頁(yè)未被修改過(guò)。服務(wù)器返回此響應時(shí),不會(huì )返回網(wǎng)頁(yè)內容。
  305(使用代理)請求者只能使用代理訪(fǎng)問(wèn)請求的網(wǎng)頁(yè)。如果服務(wù)器返回此響應,那么,服務(wù)器還會(huì )指明請求者應當使用的代理。
  307(臨時(shí)重定向)服務(wù)器目前正從不同位置的網(wǎng)頁(yè)響應請求,但請求者應繼續使用原有位置來(lái)進(jìn)行以后的請求。此代碼與響應 GET 和 HEAD 請求的 301 代碼類(lèi)似,會(huì )自動(dòng)將請求者轉到不同的位置。但由于 Googlebot 會(huì )繼續抓取原有位置并將其編入索引,因此您不應使用此代碼來(lái)通知 Googlebot 某個(gè)頁(yè)面或網(wǎng)站已被移動(dòng)。
  4xx(請求錯誤)
  這些狀態(tài)代碼表示,請求可能出錯,已妨礙了服務(wù)器對請求的處理。
  400(錯誤請求)服務(wù)器不理解請求的語(yǔ)法。
  401(未授權)請求要求進(jìn)行身份驗證。登錄后,服務(wù)器可能會(huì )返回對頁(yè)面的此響應。
  403(已禁止)服務(wù)器拒絕請求。
  404(未找到)服務(wù)器找不到請求的網(wǎng)頁(yè)。例如,如果請求是針對服務(wù)器上不存在的網(wǎng)頁(yè)進(jìn)行的,那么,服務(wù)器通常會(huì )返回此代碼。
  
  405(方法禁用)禁用請求中所指定的方法。
  406(不接受)無(wú)法使用請求的內容特性來(lái)響應請求的網(wǎng)頁(yè)。
  407(需要代理授權)此狀態(tài)代碼與 401(未授權)類(lèi)似,但卻指定了請求者應當使用代理進(jìn)行授權。如果服務(wù)器返回此響應,那么,服務(wù)器還會(huì )指明請求者應當使用的代理。
  408(請求超時(shí))服務(wù)器等候請求時(shí)超時(shí)。
  409(沖突)服務(wù)器在完成請求時(shí)發(fā)生沖突。服務(wù)器必須包含有關(guān)響應中所發(fā)生的沖突的信息。服務(wù)器在響應與前一個(gè)請求相沖突的 PUT 請求時(shí)可能會(huì )返回此代碼,同時(shí)會(huì )提供兩個(gè)請求的差異列表。
  410(已刪除)如果請求的資源已被永久刪除,那么,服務(wù)器會(huì )返回此響應。該代碼與 404(未找到)代碼類(lèi)似,但在資源以前有但現在已經(jīng)不復存在的情況下,有時(shí)會(huì )替代 404 代碼出現。如果資源已被永久刪除,那么,您應當使用 301 代碼指定該資源的新位置。
  411(需要有效長(cháng)度)服務(wù)器不會(huì )接受包含無(wú)效內容長(cháng)度標頭字段的請求。
  412(未滿(mǎn)足前提條件)服務(wù)器未滿(mǎn)足請求者在請求中設置的其中一個(gè)前提條件。
  413(請求實(shí)體過(guò)大)服務(wù)器無(wú)法處理請求,因為請求實(shí)體過(guò)大,已超出服務(wù)器的處理能力。
  414(請求的 URI 過(guò)長(cháng))請求的 URI(通常為網(wǎng)址)過(guò)長(cháng),服務(wù)器無(wú)法進(jìn)行處理。
  415(不支持的媒體類(lèi)型)請求的格式不受請求頁(yè)面的支持。
  416(請求范圍不符合要求)如果請求是針對網(wǎng)頁(yè)的無(wú)效范圍進(jìn)行的,那么,服務(wù)器會(huì )返回此狀態(tài)代碼。
  417(未滿(mǎn)足期望值)服務(wù)器未滿(mǎn)足”期望”請求標頭字段的要求。
  5xx(服務(wù)器錯誤)
  這些狀態(tài)代碼表示,服務(wù)器在嘗試處理請求時(shí)發(fā)生內部錯誤。這些錯誤可能是服務(wù)器本身的錯誤,而不是請求出錯。
  500(服務(wù)器內部錯誤)服務(wù)器遇到錯誤,無(wú)法完成請求。
  501(尚未實(shí)施)服務(wù)器不具備完成請求的功能。例如,當服務(wù)器無(wú)法識別請求方法時(shí),服務(wù)器可能會(huì )返回此代碼。
  502(錯誤網(wǎng)關(guān))服務(wù)器作為網(wǎng)關(guān)或代理,從上游服務(wù)器收到了無(wú)效的響應。
  503(服務(wù)不可用)目前無(wú)法使用服務(wù)器(由于超載或進(jìn)行停機維護)。通常,這只是一種暫時(shí)的狀態(tài)。
  504(網(wǎng)關(guān)超時(shí))服務(wù)器作為網(wǎng)關(guān)或代理,未及時(shí)從上游服務(wù)器接收請求。

php抓取網(wǎng)頁(yè)指定內容,例如:我通過(guò)代理,抓取

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 75 次瀏覽 ? 2022-08-12 13:24 ? 來(lái)自相關(guān)話(huà)題

  php抓取網(wǎng)頁(yè)指定內容,例如:我通過(guò)代理,抓取
  php抓取網(wǎng)頁(yè)指定內容,例如:我通過(guò)代理,抓取,網(wǎng)頁(yè)中只有當前用戶(hù)對應的地址,地址中的數字即是useragent所指定的網(wǎng)頁(yè)源碼,例如中文"將軍令",可以抓取。整個(gè)程序不需要任何插件。注意php項目不要在命名中使用任何的形容詞。例如redis不要命名為redis,要改為redis.phpphp這個(gè)命名是沒(méi)有任何意義的。例如開(kāi)發(fā)php,wordpress,你可以直接寫(xiě)phppvcn的網(wǎng)址,而不是cn。php的安裝步驟。
  
  php
  百度上有很多,php如何抓取,網(wǎng)頁(yè)如何抓取,我都看過(guò),wordpress官方網(wǎng)站上就有一個(gè)例子。
  
  php.看一下其中一個(gè)有一個(gè)示例。然后你就知道怎么做了。我用的就是.還要用一個(gè)第三方。百度_-php.你可以google。
  在瀏覽器輸入php:10.1.25.402:/wordpress/wp-content/wp-content/wp-content/2/10.1.25.402.zh-cn/看效果:首先使用less腳本安裝-php模板管理器-建立模板-wp-content/wp-content/2/10.1.25.402然后less腳本配置~/.less這段代碼在php腳本的標簽中,所以后面跟開(kāi)頭一定要帶雙引號注意(為方便展示,此頁(yè)面其實(shí)只有幾十個(gè)內容都還在更新,我只貼了一部分截圖)代碼中其實(shí)包含了less腳本文件,以上截圖可以看出是通過(guò)less腳本把這些內容轉換為單行的less文件,并存入tabl標簽中,然后存入tabl標簽中的內容就轉換為wordpress的example.php,然后你在wordpress后臺登錄時(shí)系統自動(dòng)抓取頁(yè)面配置中的lat、lng的源代碼,我們通過(guò)lativ/lat文件,瀏覽器會(huì )獲取lat、lng頁(yè)面配置后wordpress的頁(yè)面源代碼后端就會(huì )抓取,也就是抓取所有頁(yè)面配置,所以wordpress服務(wù)器抓取就會(huì )抓取整個(gè)頁(yè)面,最后會(huì )轉換為php腳本文件發(fā)送給你,所以你懂的,你在瀏覽器輸入你要抓取的頁(yè)面名稱(chēng)后就會(huì )自動(dòng)發(fā)送至服務(wù)器,由服務(wù)器解析解析后發(fā)送至wordpress后臺,wordpress后臺會(huì )自動(dòng)更新頁(yè)面并提交給瀏覽器解析,返回給你要抓取的網(wǎng)頁(yè)。
  這個(gè)方法可以把模板的代碼轉換為wordpress的js代碼,解決靜態(tài)網(wǎng)頁(yè)抓取、seo、蜘蛛抓取難的問(wèn)題。有點(diǎn)復雜,等下有空慢慢上傳代碼~。 查看全部

  php抓取網(wǎng)頁(yè)指定內容,例如:我通過(guò)代理,抓取
  php抓取網(wǎng)頁(yè)指定內容,例如:我通過(guò)代理,抓取,網(wǎng)頁(yè)中只有當前用戶(hù)對應的地址,地址中的數字即是useragent所指定的網(wǎng)頁(yè)源碼,例如中文"將軍令",可以抓取。整個(gè)程序不需要任何插件。注意php項目不要在命名中使用任何的形容詞。例如redis不要命名為redis,要改為redis.phpphp這個(gè)命名是沒(méi)有任何意義的。例如開(kāi)發(fā)php,wordpress,你可以直接寫(xiě)phppvcn的網(wǎng)址,而不是cn。php的安裝步驟。
  
  php
  百度上有很多,php如何抓取,網(wǎng)頁(yè)如何抓取,我都看過(guò),wordpress官方網(wǎng)站上就有一個(gè)例子。
  
  php.看一下其中一個(gè)有一個(gè)示例。然后你就知道怎么做了。我用的就是.還要用一個(gè)第三方。百度_-php.你可以google。
  在瀏覽器輸入php:10.1.25.402:/wordpress/wp-content/wp-content/wp-content/2/10.1.25.402.zh-cn/看效果:首先使用less腳本安裝-php模板管理器-建立模板-wp-content/wp-content/2/10.1.25.402然后less腳本配置~/.less這段代碼在php腳本的標簽中,所以后面跟開(kāi)頭一定要帶雙引號注意(為方便展示,此頁(yè)面其實(shí)只有幾十個(gè)內容都還在更新,我只貼了一部分截圖)代碼中其實(shí)包含了less腳本文件,以上截圖可以看出是通過(guò)less腳本把這些內容轉換為單行的less文件,并存入tabl標簽中,然后存入tabl標簽中的內容就轉換為wordpress的example.php,然后你在wordpress后臺登錄時(shí)系統自動(dòng)抓取頁(yè)面配置中的lat、lng的源代碼,我們通過(guò)lativ/lat文件,瀏覽器會(huì )獲取lat、lng頁(yè)面配置后wordpress的頁(yè)面源代碼后端就會(huì )抓取,也就是抓取所有頁(yè)面配置,所以wordpress服務(wù)器抓取就會(huì )抓取整個(gè)頁(yè)面,最后會(huì )轉換為php腳本文件發(fā)送給你,所以你懂的,你在瀏覽器輸入你要抓取的頁(yè)面名稱(chēng)后就會(huì )自動(dòng)發(fā)送至服務(wù)器,由服務(wù)器解析解析后發(fā)送至wordpress后臺,wordpress后臺會(huì )自動(dòng)更新頁(yè)面并提交給瀏覽器解析,返回給你要抓取的網(wǎng)頁(yè)。
  這個(gè)方法可以把模板的代碼轉換為wordpress的js代碼,解決靜態(tài)網(wǎng)頁(yè)抓取、seo、蜘蛛抓取難的問(wèn)題。有點(diǎn)復雜,等下有空慢慢上傳代碼~。

php抓取網(wǎng)頁(yè)指定內容,具體的抓取方法(圖)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 297 次瀏覽 ? 2022-08-11 15:00 ? 來(lái)自相關(guān)話(huà)題

  php抓取網(wǎng)頁(yè)指定內容,具體的抓取方法(圖)
  php抓取網(wǎng)頁(yè)指定內容,具體的抓取方法如下:用戶(hù)名和密碼都是明文,因此我們只需要獲取到當前的php頁(yè)面。如果頁(yè)面不存在內容,可通過(guò)解析html文檔找到html元素,然后再去html中尋找相應的元素。1.首先抓取準備工作我們使用xpath來(lái)找到這個(gè)網(wǎng)頁(yè)中對應的html元素名,其中xpath就是我們今天的主角,text/plain標簽,我們將xpath中的*匹配值加到對應的值即可。
  
  xpath中的p和/p是不一樣的,如果我們想要獲取此類(lèi)網(wǎng)頁(yè)的內容,我們可以使用preg("//content/*")這樣做,但是postgrid.content=""//你可以在這里你獲取和指定不同的網(wǎng)頁(yè)源文件名稱(chēng),如果我們抓取一個(gè)網(wǎng)頁(yè),那么可以獲取其源文件名字符串(xpath中加startswith("")和/strong://body//,最大的區別是前者不是.而是[])就可以找到對應的網(wǎng)頁(yè)了。
  2.繼續準備工作我們抓取這個(gè)網(wǎng)頁(yè)并非獲取所有對應的內容,我們還需要看下上一步獲取的content中對應的html元素是什么,我們可以通過(guò)解析html文檔找到對應html元素名稱(chēng)(xpath中加startswith("")和/strong://body//這里和/strong://div//相同),就可以定位到我們要抓取的html網(wǎng)頁(yè)了。
  
  ps:xpath中p,text是相同的意思,但是后者是[]匹配所有的子元素,而前者是匹配指定的父元素。3.繼續準備工作現在我們已經(jīng)能找到我們想要的html網(wǎng)頁(yè)的內容了,那么我們就要拿出來(lái)它的xpath來(lái)解析這個(gè)html網(wǎng)頁(yè),要解析這個(gè)xpath的話(huà),我們必須寫(xiě)一個(gè)工具程序來(lái)解析這個(gè)xpath。我個(gè)人比較推薦easyconda管道,可以通過(guò)pipinstalleasyconda來(lái)安裝到easyconda主頁(yè)的下載。
  -installation.html#pip常用模塊:context定位weburl,即我們打開(kāi)的頁(yè)面,preg_replace匹配html元素,加強實(shí)用性。context_header定位postgrid中header的title值,如果我們還沒(méi)有指定(匹配該title值的網(wǎng)頁(yè)中不存在我們想要抓取的content),則不可以通過(guò)該方法找到我們想要的內容,然后再解析;匹配我們需要抓取的網(wǎng)頁(yè)源代碼中的content中的title值的方法。
  easycrawler這個(gè)包主要是管道包管理、context等,這個(gè)module在easyconda環(huán)境下可用。我們首先對html進(jìn)行正則匹配。首先通過(guò)正則來(lái)找到想要匹配的內容,例如:\he\togeto、\him\togeto等,可以通過(guò)我們剛才的代碼來(lái)顯示出來(lái)postgrid的模型是這樣,name是這個(gè)“json”數據的名字,content就是源文件名稱(chēng),或者我們可以通過(guò)前邊講過(guò)的filename表示當前頁(yè)面。 查看全部

  php抓取網(wǎng)頁(yè)指定內容,具體的抓取方法(圖)
  php抓取網(wǎng)頁(yè)指定內容,具體的抓取方法如下:用戶(hù)名和密碼都是明文,因此我們只需要獲取到當前的php頁(yè)面。如果頁(yè)面不存在內容,可通過(guò)解析html文檔找到html元素,然后再去html中尋找相應的元素。1.首先抓取準備工作我們使用xpath來(lái)找到這個(gè)網(wǎng)頁(yè)中對應的html元素名,其中xpath就是我們今天的主角,text/plain標簽,我們將xpath中的*匹配值加到對應的值即可。
  
  xpath中的p和/p是不一樣的,如果我們想要獲取此類(lèi)網(wǎng)頁(yè)的內容,我們可以使用preg("//content/*")這樣做,但是postgrid.content=""//你可以在這里你獲取和指定不同的網(wǎng)頁(yè)源文件名稱(chēng),如果我們抓取一個(gè)網(wǎng)頁(yè),那么可以獲取其源文件名字符串(xpath中加startswith("")和/strong://body//,最大的區別是前者不是.而是[])就可以找到對應的網(wǎng)頁(yè)了。
  2.繼續準備工作我們抓取這個(gè)網(wǎng)頁(yè)并非獲取所有對應的內容,我們還需要看下上一步獲取的content中對應的html元素是什么,我們可以通過(guò)解析html文檔找到對應html元素名稱(chēng)(xpath中加startswith("")和/strong://body//這里和/strong://div//相同),就可以定位到我們要抓取的html網(wǎng)頁(yè)了。
  
  ps:xpath中p,text是相同的意思,但是后者是[]匹配所有的子元素,而前者是匹配指定的父元素。3.繼續準備工作現在我們已經(jīng)能找到我們想要的html網(wǎng)頁(yè)的內容了,那么我們就要拿出來(lái)它的xpath來(lái)解析這個(gè)html網(wǎng)頁(yè),要解析這個(gè)xpath的話(huà),我們必須寫(xiě)一個(gè)工具程序來(lái)解析這個(gè)xpath。我個(gè)人比較推薦easyconda管道,可以通過(guò)pipinstalleasyconda來(lái)安裝到easyconda主頁(yè)的下載。
  -installation.html#pip常用模塊:context定位weburl,即我們打開(kāi)的頁(yè)面,preg_replace匹配html元素,加強實(shí)用性。context_header定位postgrid中header的title值,如果我們還沒(méi)有指定(匹配該title值的網(wǎng)頁(yè)中不存在我們想要抓取的content),則不可以通過(guò)該方法找到我們想要的內容,然后再解析;匹配我們需要抓取的網(wǎng)頁(yè)源代碼中的content中的title值的方法。
  easycrawler這個(gè)包主要是管道包管理、context等,這個(gè)module在easyconda環(huán)境下可用。我們首先對html進(jìn)行正則匹配。首先通過(guò)正則來(lái)找到想要匹配的內容,例如:\he\togeto、\him\togeto等,可以通過(guò)我們剛才的代碼來(lái)顯示出來(lái)postgrid的模型是這樣,name是這個(gè)“json”數據的名字,content就是源文件名稱(chēng),或者我們可以通過(guò)前邊講過(guò)的filename表示當前頁(yè)面。

樂(lè )語(yǔ)客小程序獲取頁(yè)面信息代碼及結果圖上

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 88 次瀏覽 ? 2022-07-30 01:05 ? 來(lái)自相關(guān)話(huà)題

  樂(lè )語(yǔ)客小程序獲取頁(yè)面信息代碼及結果圖上
  php抓取網(wǎng)頁(yè)指定內容舉例如下,在上圖示例中,我們想要獲取圖書(shū)房的名稱(chēng)信息。那么就需要下載下來(lái)一個(gè)頁(yè)面,如下圖:php獲取頁(yè)面信息代碼及結果圖上圖頁(yè)面相關(guān)內容已上傳至樂(lè )語(yǔ)客,請訪(fǎng)問(wèn)【libooklist.php】:或訪(fǎng)問(wèn)【libooklist.php】也可以使用樂(lè )語(yǔ)客的小程序搜索框,搜索“圖書(shū)館”進(jìn)入獲取內容,如下圖:樂(lè )語(yǔ)客小程序獲取圖書(shū)館名稱(chēng)對于不一定是掃描二維碼,不一定需要進(jìn)入對應網(wǎng)頁(yè),同樣可以獲取網(wǎng)頁(yè)上的內容,詳見(jiàn)下圖:獲取圖書(shū)館內部信息php如何抓取網(wǎng)頁(yè)上的代碼?常見(jiàn)的方法有兩種:一種是采用httpclient,獲取返回的http請求。
  
  另一種是getdata方法獲取頁(yè)面中的數據,舉例如下:常見(jiàn)的方法有兩種:一種是采用httpclient,獲取返回的http請求。另一種是getdata方法獲取頁(yè)面中的數據,如下圖:常見(jiàn)的方法有兩種:一種是采用httpclient,獲取返回的http請求。另一種是getdata方法獲取頁(yè)面中的數據,如下圖:。
  php調用封裝api:功能類(lèi)似.php(模塊一:爬蟲(chóng)模塊).php(功能類(lèi)似.php(二))
  
  動(dòng)手寫(xiě)下下面這個(gè)爬蟲(chóng)基本思路是從九牛圖對應內容分詞獲取關(guān)鍵字來(lái)實(shí)現爬蟲(chóng)功能代碼地址:
  不知道“php”這個(gè)標簽算不算。python爬蟲(chóng),
  既然邀請我了,所以我就來(lái)幫幫忙好了,看看有沒(méi)有人可以把這個(gè)列表爬下來(lái),以下是官方說(shuō)明, 查看全部

  樂(lè )語(yǔ)客小程序獲取頁(yè)面信息代碼及結果圖上
  php抓取網(wǎng)頁(yè)指定內容舉例如下,在上圖示例中,我們想要獲取圖書(shū)房的名稱(chēng)信息。那么就需要下載下來(lái)一個(gè)頁(yè)面,如下圖:php獲取頁(yè)面信息代碼及結果圖上圖頁(yè)面相關(guān)內容已上傳至樂(lè )語(yǔ)客,請訪(fǎng)問(wèn)【libooklist.php】:或訪(fǎng)問(wèn)【libooklist.php】也可以使用樂(lè )語(yǔ)客的小程序搜索框,搜索“圖書(shū)館”進(jìn)入獲取內容,如下圖:樂(lè )語(yǔ)客小程序獲取圖書(shū)館名稱(chēng)對于不一定是掃描二維碼,不一定需要進(jìn)入對應網(wǎng)頁(yè),同樣可以獲取網(wǎng)頁(yè)上的內容,詳見(jiàn)下圖:獲取圖書(shū)館內部信息php如何抓取網(wǎng)頁(yè)上的代碼?常見(jiàn)的方法有兩種:一種是采用httpclient,獲取返回的http請求。
  
  另一種是getdata方法獲取頁(yè)面中的數據,舉例如下:常見(jiàn)的方法有兩種:一種是采用httpclient,獲取返回的http請求。另一種是getdata方法獲取頁(yè)面中的數據,如下圖:常見(jiàn)的方法有兩種:一種是采用httpclient,獲取返回的http請求。另一種是getdata方法獲取頁(yè)面中的數據,如下圖:。
  php調用封裝api:功能類(lèi)似.php(模塊一:爬蟲(chóng)模塊).php(功能類(lèi)似.php(二))
  
  動(dòng)手寫(xiě)下下面這個(gè)爬蟲(chóng)基本思路是從九牛圖對應內容分詞獲取關(guān)鍵字來(lái)實(shí)現爬蟲(chóng)功能代碼地址:
  不知道“php”這個(gè)標簽算不算。python爬蟲(chóng),
  既然邀請我了,所以我就來(lái)幫幫忙好了,看看有沒(méi)有人可以把這個(gè)列表爬下來(lái),以下是官方說(shuō)明,

php抓取網(wǎng)頁(yè)指定內容的三種姿勢實(shí)現轉化主要分為以下三個(gè)方法(phpform_data方法)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 70 次瀏覽 ? 2022-07-06 20:09 ? 來(lái)自相關(guān)話(huà)題

  php抓取網(wǎng)頁(yè)指定內容的三種姿勢實(shí)現轉化主要分為以下三個(gè)方法(phpform_data方法)
  
  php抓取網(wǎng)頁(yè)指定內容的三種姿勢實(shí)現轉化主要分為以下三個(gè)方法(phpform_data方法)1.phpform_data方法{user_name:''authorization:''if[['error']]=='0'else'0'form_data_type:'image'else'image'}2.url_schema/urlencode_schema代碼如下:urlencode_schema參數如下:aliyun:400.122.16.x,imageurl:{'default_url':'/demo/','encoding':'utf-8'}以上四個(gè)參數,我們如果用base64編碼存儲圖片,可以填aliyun:400.122.16.xaliyun:400.122.16.x那么圖片就會(huì )存儲在400.122.16.x,因為我們希望這張圖片的url為400.122.16.x,這是我們用戶(hù)訪(fǎng)問(wèn)該頁(yè)面時(shí)所要傳遞的參數。
  
  我們可以根據圖片鏈接的key來(lái)返回圖片的url路徑,我們只需要寫(xiě)一個(gè)圖片鏈接的地址,然后配置圖片鏈接的encoding為aliyun:400.122.16.x,就可以獲取如下圖片的鏈接,每一個(gè)鏈接還可以通過(guò)encoding的值來(lái)指定圖片的格式:php代碼如下:${id}=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"];get('/photo',${id});從目錄里取圖片${id}=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","v","w","x","y","z"];get('/image',${id});從目錄里取圖片${id}=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","v","w","x","y","z"];get('/geometry',${id});從目錄里取圖片${id}=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","v","w","x","y","z"];get('/ul/a[1]/a{3}[2]',${id});從目錄里取圖片${id}=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y"。 查看全部

  php抓取網(wǎng)頁(yè)指定內容的三種姿勢實(shí)現轉化主要分為以下三個(gè)方法(phpform_data方法)
  
  php抓取網(wǎng)頁(yè)指定內容的三種姿勢實(shí)現轉化主要分為以下三個(gè)方法(phpform_data方法)1.phpform_data方法{user_name:''authorization:''if[['error']]=='0'else'0'form_data_type:'image'else'image'}2.url_schema/urlencode_schema代碼如下:urlencode_schema參數如下:aliyun:400.122.16.x,imageurl:{'default_url':'/demo/','encoding':'utf-8'}以上四個(gè)參數,我們如果用base64編碼存儲圖片,可以填aliyun:400.122.16.xaliyun:400.122.16.x那么圖片就會(huì )存儲在400.122.16.x,因為我們希望這張圖片的url為400.122.16.x,這是我們用戶(hù)訪(fǎng)問(wèn)該頁(yè)面時(shí)所要傳遞的參數。
  
  我們可以根據圖片鏈接的key來(lái)返回圖片的url路徑,我們只需要寫(xiě)一個(gè)圖片鏈接的地址,然后配置圖片鏈接的encoding為aliyun:400.122.16.x,就可以獲取如下圖片的鏈接,每一個(gè)鏈接還可以通過(guò)encoding的值來(lái)指定圖片的格式:php代碼如下:${id}=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"];get('/photo',${id});從目錄里取圖片${id}=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","v","w","x","y","z"];get('/image',${id});從目錄里取圖片${id}=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","v","w","x","y","z"];get('/geometry',${id});從目錄里取圖片${id}=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","v","w","x","y","z"];get('/ul/a[1]/a{3}[2]',${id});從目錄里取圖片${id}=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y"。

middlewares.post方法獲取需要的內容以及抓取所需的處理邏輯

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 80 次瀏覽 ? 2022-07-02 04:00 ? 來(lái)自相關(guān)話(huà)題

  middlewares.post方法獲取需要的內容以及抓取所需的處理邏輯
  
  php抓取網(wǎng)頁(yè)指定內容,然后自動(dòng)解析內容,比如看某人的網(wǎng)站抓取的分類(lèi)網(wǎng)頁(yè),然后看每個(gè)分類(lèi)下的站內鏈接,就知道該頁(yè)的那個(gè)小標題的鏈接可以抓,然后取出來(lái),用正則匹配,就能抽取這個(gè)頁(yè)內容。如果php抓取內容分頁(yè),就看分頁(yè)的內容鏈接就知道網(wǎng)頁(yè)可以往那個(gè)方向下的鏈接爬。
  
  f12,進(jìn)入調試面板,通過(guò)調用庫函數get、post,cookie,middlewares.get,middlewares.post方法獲取需要抓取的內容以及抓取所需的處理邏輯。ifthis.replace($_get['findstatus'],'1'):for$_get['findstatus']to$_server['http_post_connection']:if$_server['http_post_connection']!='1':returnelse:continue。
  需要知道抓取邏輯,關(guān)鍵詞,domain,域名,link,內容,一個(gè)不能少。抓取代碼如下://抓取首頁(yè),likeuseruser頁(yè)面上的相關(guān)html代碼獲取到后,需要去解析一下這些html代碼,去除冗余代碼,比如代碼中有user_agent,cookie,可以考慮去除!需要設置cookie對頁(yè)面的請求,或者抓取所需的內容采取加密算法對此處進(jìn)行處理!直接寫(xiě)代碼不過(guò)癮的話(huà),可以google“請求steam手柄位置”,即可通過(guò)python模擬實(shí)現!解決思路:代碼如下:#!/usr/bin/envpython#-*-coding:utf-8-*-fromrequestsimporthttp,httpsfrombs4importbeautifulsoupheaders={'user-agent':'mozilla/5.0(windowsnt6.1;win64;x64)applewebkit/537.36(khtml,likegecko)chrome/71.0.2740.152safari/537.36'}req=http.request('',headers=headers)get_content()。 查看全部

  middlewares.post方法獲取需要的內容以及抓取所需的處理邏輯
  
  php抓取網(wǎng)頁(yè)指定內容,然后自動(dòng)解析內容,比如看某人的網(wǎng)站抓取的分類(lèi)網(wǎng)頁(yè),然后看每個(gè)分類(lèi)下的站內鏈接,就知道該頁(yè)的那個(gè)小標題的鏈接可以抓,然后取出來(lái),用正則匹配,就能抽取這個(gè)頁(yè)內容。如果php抓取內容分頁(yè),就看分頁(yè)的內容鏈接就知道網(wǎng)頁(yè)可以往那個(gè)方向下的鏈接爬。
  
  f12,進(jìn)入調試面板,通過(guò)調用庫函數get、post,cookie,middlewares.get,middlewares.post方法獲取需要抓取的內容以及抓取所需的處理邏輯。ifthis.replace($_get['findstatus'],'1'):for$_get['findstatus']to$_server['http_post_connection']:if$_server['http_post_connection']!='1':returnelse:continue。
  需要知道抓取邏輯,關(guān)鍵詞,domain,域名,link,內容,一個(gè)不能少。抓取代碼如下://抓取首頁(yè),likeuseruser頁(yè)面上的相關(guān)html代碼獲取到后,需要去解析一下這些html代碼,去除冗余代碼,比如代碼中有user_agent,cookie,可以考慮去除!需要設置cookie對頁(yè)面的請求,或者抓取所需的內容采取加密算法對此處進(jìn)行處理!直接寫(xiě)代碼不過(guò)癮的話(huà),可以google“請求steam手柄位置”,即可通過(guò)python模擬實(shí)現!解決思路:代碼如下:#!/usr/bin/envpython#-*-coding:utf-8-*-fromrequestsimporthttp,httpsfrombs4importbeautifulsoupheaders={'user-agent':'mozilla/5.0(windowsnt6.1;win64;x64)applewebkit/537.36(khtml,likegecko)chrome/71.0.2740.152safari/537.36'}req=http.request('',headers=headers)get_content()。

我來(lái)教大家怎么用php抓取網(wǎng)頁(yè)指定內容(圖)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 78 次瀏覽 ? 2022-07-01 23:07 ? 來(lái)自相關(guān)話(huà)題

  我來(lái)教大家怎么用php抓取網(wǎng)頁(yè)指定內容(圖)
  php抓取網(wǎng)頁(yè)指定內容,我是一名反編譯工程師,我來(lái)教大家怎么用php抓取網(wǎng)頁(yè)內容,首先我們需要一個(gè)http服務(wù)器,來(lái)抓取網(wǎng)頁(yè)里面的內容。http服務(wù)器有一個(gè)環(huán)境要求:支持tcp和udp的都可以,我們可以用我們現有的vnc客戶(hù)端,去抓取網(wǎng)頁(yè),但是要做一些準備工作,這個(gè)和大家說(shuō)一下。準備工作:vnc下先一起創(chuàng )建一個(gè)vnc目錄,同時(shí)開(kāi)啟監聽(tīng)代理,ok.創(chuàng )建一個(gè)代理,然后掛載就可以抓取網(wǎng)頁(yè)了我用的是tomcat7,tomcat7是一個(gè)java平臺的中間層,提供了java和nginx在運行中所需要的額外的功能如果我們對代理有要求的話(huà),可以去了解一下nginx、apache等apache開(kāi)發(fā)者本身就是會(huì )有自己的私有代理。
  
  nginx提供了keepalive機制,當代理向瀏覽器發(fā)送http請求時(shí),會(huì )記錄這些流量,發(fā)送到自己的keepalivemaster,再由keepalivemaster轉發(fā)給瀏覽器來(lái)解析查看,這個(gè)在我們的開(kāi)發(fā)場(chǎng)景中會(huì )是很有用的,比如提供一個(gè)新用戶(hù)注冊功能在網(wǎng)頁(yè)上存儲一些數據、訪(fǎng)問(wèn)網(wǎng)頁(yè)的時(shí)候會(huì )把一些雜亂的請求收集起來(lái),比如判斷哪些是垃圾短信或者毒素等,或者建立一個(gè)日志文件,提交到os等等,都是有很有用的場(chǎng)景。
  我在研究jsp+php+vc+mysql的時(shí)候,有很多都是通過(guò)http代理來(lái)做的,我們只需要實(shí)現java端和php端即可,不用深入了解http的細節,我這里只是說(shuō)一下http這個(gè)機制對一些行業(yè)的幫助。然后第二步我們就是搭建phper開(kāi)發(fā)工具,我的開(kāi)發(fā)工具是我自己用tomcat開(kāi)發(fā)的,我下面只是通過(guò)一些示例來(lái)說(shuō)明,這些示例可以在我的博客中看到如何一步步的搭建一個(gè)反編譯工具。
  
  php開(kāi)發(fā)工具選擇介紹:tomcat7geforcememoryextractorweibo.io/tomcat-amtp-tamper-php-vswitchdubble-server.phpccliawaitgateway.stats.redirect_transport("http")windows下也可以直接在windows下安裝,一定要裝最新版本。
  下載地址,我這里用的是chembierconnector下載一個(gè)安裝:,這樣重啟到系統就可以有效識別php的url,然后我們可以開(kāi)始嘗試找一些網(wǎng)頁(yè)來(lái)進(jìn)行分析了。開(kāi)始找網(wǎng)頁(yè)分析第一步:首先,打開(kāi)開(kāi)發(fā)者工具,在開(kāi)發(fā)者工具那里會(huì )顯示一個(gè)關(guān)鍵詞,如上圖所示,下面我們我們點(diǎn)擊opensearch,開(kāi)始搜索我們需要抓取的網(wǎng)頁(yè)內容。
  在搜索框中輸入我們的目標網(wǎng)頁(yè)index.php和我們要搜索的關(guān)鍵詞,我們這里輸入了index.php,搜索結果如下,看到了這個(gè)頁(yè)面都在爬取什么內容,這里我們需要判斷一下這些內容是不是mysql庫里面的這些字段我們只需要一個(gè)個(gè)去讀取。打開(kāi)對應的mysql這個(gè)庫,對應的:lm。 查看全部

  我來(lái)教大家怎么用php抓取網(wǎng)頁(yè)指定內容(圖)
  php抓取網(wǎng)頁(yè)指定內容,我是一名反編譯工程師,我來(lái)教大家怎么用php抓取網(wǎng)頁(yè)內容,首先我們需要一個(gè)http服務(wù)器,來(lái)抓取網(wǎng)頁(yè)里面的內容。http服務(wù)器有一個(gè)環(huán)境要求:支持tcp和udp的都可以,我們可以用我們現有的vnc客戶(hù)端,去抓取網(wǎng)頁(yè),但是要做一些準備工作,這個(gè)和大家說(shuō)一下。準備工作:vnc下先一起創(chuàng )建一個(gè)vnc目錄,同時(shí)開(kāi)啟監聽(tīng)代理,ok.創(chuàng )建一個(gè)代理,然后掛載就可以抓取網(wǎng)頁(yè)了我用的是tomcat7,tomcat7是一個(gè)java平臺的中間層,提供了java和nginx在運行中所需要的額外的功能如果我們對代理有要求的話(huà),可以去了解一下nginx、apache等apache開(kāi)發(fā)者本身就是會(huì )有自己的私有代理。
  
  nginx提供了keepalive機制,當代理向瀏覽器發(fā)送http請求時(shí),會(huì )記錄這些流量,發(fā)送到自己的keepalivemaster,再由keepalivemaster轉發(fā)給瀏覽器來(lái)解析查看,這個(gè)在我們的開(kāi)發(fā)場(chǎng)景中會(huì )是很有用的,比如提供一個(gè)新用戶(hù)注冊功能在網(wǎng)頁(yè)上存儲一些數據、訪(fǎng)問(wèn)網(wǎng)頁(yè)的時(shí)候會(huì )把一些雜亂的請求收集起來(lái),比如判斷哪些是垃圾短信或者毒素等,或者建立一個(gè)日志文件,提交到os等等,都是有很有用的場(chǎng)景。
  我在研究jsp+php+vc+mysql的時(shí)候,有很多都是通過(guò)http代理來(lái)做的,我們只需要實(shí)現java端和php端即可,不用深入了解http的細節,我這里只是說(shuō)一下http這個(gè)機制對一些行業(yè)的幫助。然后第二步我們就是搭建phper開(kāi)發(fā)工具,我的開(kāi)發(fā)工具是我自己用tomcat開(kāi)發(fā)的,我下面只是通過(guò)一些示例來(lái)說(shuō)明,這些示例可以在我的博客中看到如何一步步的搭建一個(gè)反編譯工具。
  
  php開(kāi)發(fā)工具選擇介紹:tomcat7geforcememoryextractorweibo.io/tomcat-amtp-tamper-php-vswitchdubble-server.phpccliawaitgateway.stats.redirect_transport("http")windows下也可以直接在windows下安裝,一定要裝最新版本。
  下載地址,我這里用的是chembierconnector下載一個(gè)安裝:,這樣重啟到系統就可以有效識別php的url,然后我們可以開(kāi)始嘗試找一些網(wǎng)頁(yè)來(lái)進(jìn)行分析了。開(kāi)始找網(wǎng)頁(yè)分析第一步:首先,打開(kāi)開(kāi)發(fā)者工具,在開(kāi)發(fā)者工具那里會(huì )顯示一個(gè)關(guān)鍵詞,如上圖所示,下面我們我們點(diǎn)擊opensearch,開(kāi)始搜索我們需要抓取的網(wǎng)頁(yè)內容。
  在搜索框中輸入我們的目標網(wǎng)頁(yè)index.php和我們要搜索的關(guān)鍵詞,我們這里輸入了index.php,搜索結果如下,看到了這個(gè)頁(yè)面都在爬取什么內容,這里我們需要判斷一下這些內容是不是mysql庫里面的這些字段我們只需要一個(gè)個(gè)去讀取。打開(kāi)對應的mysql這個(gè)庫,對應的:lm。

php抓取網(wǎng)頁(yè)指定內容,需要internethttp1.1協(xié)議支持,抓取功能

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 85 次瀏覽 ? 2022-06-26 21:05 ? 來(lái)自相關(guān)話(huà)題

  php抓取網(wǎng)頁(yè)指定內容,需要internethttp1.1協(xié)議支持,抓取功能
  php抓取網(wǎng)頁(yè)指定內容,需要internethttp1.1協(xié)議支持,其中:一,字符重排編碼要做規定二,連接狀態(tài)檢查要建立好三,端口號要抓到且必須被加載最佳才可抓取四,即便發(fā)生連接失敗,也只有一次重新連接機會(huì )五,如果二連接完成后一直抓取失敗,
  ifttt,可以抓取你喜歡的動(dòng)漫的動(dòng)畫(huà)人物的動(dòng)畫(huà)鏡頭,還可以抓取你喜歡的電影或者電視劇的中的人物的動(dòng)畫(huà)鏡頭。其實(shí)videopro也有和php的requestlevel接口一樣的抓取功能,但是videopro需要用戶(hù)搭配ifttt使用,抓取動(dòng)畫(huà)的部分是一樣的。
  
  webprofilinganalysis
  balancepoolcachinganddatacollectoringassemblywithphplibframework,whichenablesanymanagedframeworkstoimprovecachingtime,crypto,andmultipleframeworksthataremoreneededtoimprovechangesfromtheframeworks。
  typessimilartopythonpoolcaching,libxml2internals,andrequests。whenyouusephp,youwillneedpackageswhichisallofthelibrariesforphp。whenyouareusingpython,theabsoluteframeworkisspecifictothepythonframework,andsothatthecompilermayignorechanges,compiling,orinitializingframeworks。
  sowhenyoudesignyourproject,theabsoluteframeworkwillchoosecompilerforphp。 查看全部

  php抓取網(wǎng)頁(yè)指定內容,需要internethttp1.1協(xié)議支持,抓取功能
  php抓取網(wǎng)頁(yè)指定內容,需要internethttp1.1協(xié)議支持,其中:一,字符重排編碼要做規定二,連接狀態(tài)檢查要建立好三,端口號要抓到且必須被加載最佳才可抓取四,即便發(fā)生連接失敗,也只有一次重新連接機會(huì )五,如果二連接完成后一直抓取失敗,
  ifttt,可以抓取你喜歡的動(dòng)漫的動(dòng)畫(huà)人物的動(dòng)畫(huà)鏡頭,還可以抓取你喜歡的電影或者電視劇的中的人物的動(dòng)畫(huà)鏡頭。其實(shí)videopro也有和php的requestlevel接口一樣的抓取功能,但是videopro需要用戶(hù)搭配ifttt使用,抓取動(dòng)畫(huà)的部分是一樣的。
  
  webprofilinganalysis
  balancepoolcachinganddatacollectoringassemblywithphplibframework,whichenablesanymanagedframeworkstoimprovecachingtime,crypto,andmultipleframeworksthataremoreneededtoimprovechangesfromtheframeworks。
  typessimilartopythonpoolcaching,libxml2internals,andrequests。whenyouusephp,youwillneedpackageswhichisallofthelibrariesforphp。whenyouareusingpython,theabsoluteframeworkisspecifictothepythonframework,andsothatthecompilermayignorechanges,compiling,orinitializingframeworks。
  sowhenyoudesignyourproject,theabsoluteframeworkwillchoosecompilerforphp。

php抓取網(wǎng)頁(yè)指定內容 常用的HTTP狀態(tài)碼

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 74 次瀏覽 ? 2022-06-25 00:50 ? 來(lái)自相關(guān)話(huà)題

  php抓取網(wǎng)頁(yè)指定內容 常用的HTTP狀態(tài)碼
  
  成功的狀態(tài)碼:
  200 – 服務(wù)器成功返回網(wǎng)頁(yè)
  304 – 未修改
  失敗的狀態(tài)碼:
  404 – 請求的網(wǎng)頁(yè)不存在
  503 – 服務(wù)器暫時(shí)不可用
  500 – 服務(wù)器內部錯誤
  下面的不是很常用,記住上面那幾個(gè)就ok了,有bug了再補充
  其他的狀態(tài)碼如下:
  1xx(臨時(shí)響應)
  用于表示臨時(shí)響應并需要請求者執行操作才能繼續的狀態(tài)代碼。
  100(Continue繼續)請求者應當繼續提出請求。服務(wù)器返回此代碼則意味著(zhù),服務(wù)器已收到了請求的第一部分,現正在等待接收其余部分。(HTTP 1.1新)
  101(Switching Protocols切換協(xié)議) 請求者已要求服務(wù)器切換協(xié)議,服務(wù)器已確認并準備進(jìn)行切換。(HTTP 1.1新)
  2xx(成功)
  用于表示服務(wù)器已成功處理了請求的狀態(tài)代碼。
  200(成功)服務(wù)器已成功處理了請求。通常,這表示服務(wù)器提供了請求的網(wǎng)頁(yè)。
  201(已創(chuàng )建)請求成功且服務(wù)器已創(chuàng )建了新的資源。
  202(已接受)服務(wù)器已接受了請求,但尚未對其進(jìn)行處理。
  203(非授權信息)服務(wù)器已成功處理了請求,但返回了可能來(lái)自另一來(lái)源的信息。
  204(無(wú)內容)服務(wù)器成功處理了請求,但未返回任何內容。
  205(重置內容)服務(wù)器成功處理了請求,但未返回任何內容。與 204 響應不同,此響應要求請求者重置文檔視圖(例如清除表單內容以輸入新內容)。
  206(部分內容)服務(wù)器成功處理了部分 GET 請求。
  3xx(已重定向)
  要完成請求,您需要進(jìn)一步進(jìn)行操作。通常,這些狀態(tài)代碼是永遠重定向的。Google 建議每次請求時(shí)使用的重定向要少于 5 個(gè)。
  300(多種選擇)服務(wù)器根據請求可執行多種操作。服務(wù)器可根據請求者 (User agent) 來(lái)選擇一項操作,或提供操作列表供請求者選擇。
  301(永久移動(dòng))請求的網(wǎng)頁(yè)已被永久移動(dòng)到新位置。服務(wù)器返回此響應(作為對 GET 或 HEAD 請求的響應)時(shí),會(huì )自動(dòng)將請求者轉到新位置。您應使用此代碼通知 Googlebot 某個(gè)網(wǎng)頁(yè)或網(wǎng)站已被永久移動(dòng)到新位置。
  302(臨時(shí)移動(dòng))服務(wù)器目前正從不同位置的網(wǎng)頁(yè)響應請求,但請求者應繼續使用原有位置來(lái)進(jìn)行以后的請求。此代碼與響應 GET 和 HEAD 請求的 301 代碼類(lèi)似,會(huì )自動(dòng)將請求者轉到不同的位置。但由于 Googlebot 會(huì )繼續抓取原有位置并將其編入索引,因此您不應使用此代碼來(lái)通知 Googlebot 某個(gè)頁(yè)面或網(wǎng)站已被移動(dòng)。
  303(查看其他位置)當請求者應對不同的位置進(jìn)行單獨的 GET 請求以檢索響應時(shí),服務(wù)器會(huì )返回此代碼。對于除 HEAD 請求之外的所有請求,服務(wù)器會(huì )自動(dòng)轉到其他位置。
  304(未修改)自從上次請求后,請求的網(wǎng)頁(yè)未被修改過(guò)。服務(wù)器返回此響應時(shí),不會(huì )返回網(wǎng)頁(yè)內容。
  305(使用代理)請求者只能使用代理訪(fǎng)問(wèn)請求的網(wǎng)頁(yè)。如果服務(wù)器返回此響應,那么,服務(wù)器還會(huì )指明請求者應當使用的代理。
  307(臨時(shí)重定向)服務(wù)器目前正從不同位置的網(wǎng)頁(yè)響應請求,但請求者應繼續使用原有位置來(lái)進(jìn)行以后的請求。此代碼與響應 GET 和 HEAD 請求的 301 代碼類(lèi)似,會(huì )自動(dòng)將請求者轉到不同的位置。但由于 Googlebot 會(huì )繼續抓取原有位置并將其編入索引,因此您不應使用此代碼來(lái)通知 Googlebot 某個(gè)頁(yè)面或網(wǎng)站已被移動(dòng)。
  4xx(請求錯誤)
  這些狀態(tài)代碼表示,請求可能出錯,已妨礙了服務(wù)器對請求的處理。
  400(錯誤請求)服務(wù)器不理解請求的語(yǔ)法。
  401(未授權)請求要求進(jìn)行身份驗證。登錄后,服務(wù)器可能會(huì )返回對頁(yè)面的此響應。
  403(已禁止)服務(wù)器拒絕請求。
  404(未找到)服務(wù)器找不到請求的網(wǎng)頁(yè)。例如,如果請求是針對服務(wù)器上不存在的網(wǎng)頁(yè)進(jìn)行的,那么,服務(wù)器通常會(huì )返回此代碼。
  405(方法禁用)禁用請求中所指定的方法。
  406(不接受)無(wú)法使用請求的內容特性來(lái)響應請求的網(wǎng)頁(yè)。
  407(需要代理授權)此狀態(tài)代碼與 401(未授權)類(lèi)似,但卻指定了請求者應當使用代理進(jìn)行授權。如果服務(wù)器返回此響應,那么,服務(wù)器還會(huì )指明請求者應當使用的代理。
  408(請求超時(shí))服務(wù)器等候請求時(shí)超時(shí)。
  409(沖突)服務(wù)器在完成請求時(shí)發(fā)生沖突。服務(wù)器必須包含有關(guān)響應中所發(fā)生的沖突的信息。服務(wù)器在響應與前一個(gè)請求相沖突的 PUT 請求時(shí)可能會(huì )返回此代碼,同時(shí)會(huì )提供兩個(gè)請求的差異列表。
  410(已刪除)如果請求的資源已被永久刪除,那么,服務(wù)器會(huì )返回此響應。該代碼與 404(未找到)代碼類(lèi)似,但在資源以前有但現在已經(jīng)不復存在的情況下,有時(shí)會(huì )替代 404 代碼出現。如果資源已被永久刪除,那么,您應當使用 301 代碼指定該資源的新位置。
  411(需要有效長(cháng)度)服務(wù)器不會(huì )接受包含無(wú)效內容長(cháng)度標頭字段的請求。
  412(未滿(mǎn)足前提條件)服務(wù)器未滿(mǎn)足請求者在請求中設置的其中一個(gè)前提條件。
  413(請求實(shí)體過(guò)大)服務(wù)器無(wú)法處理請求,因為請求實(shí)體過(guò)大,已超出服務(wù)器的處理能力。
  414(請求的 URI 過(guò)長(cháng))請求的 URI(通常為網(wǎng)址)過(guò)長(cháng),服務(wù)器無(wú)法進(jìn)行處理。
  415(不支持的媒體類(lèi)型)請求的格式不受請求頁(yè)面的支持。
  416(請求范圍不符合要求)如果請求是針對網(wǎng)頁(yè)的無(wú)效范圍進(jìn)行的,那么,服務(wù)器會(huì )返回此狀態(tài)代碼。
  417(未滿(mǎn)足期望值)服務(wù)器未滿(mǎn)足”期望”請求標頭字段的要求。
  5xx(服務(wù)器錯誤)
  這些狀態(tài)代碼表示,服務(wù)器在嘗試處理請求時(shí)發(fā)生內部錯誤。這些錯誤可能是服務(wù)器本身的錯誤,而不是請求出錯。
  500(服務(wù)器內部錯誤)服務(wù)器遇到錯誤,無(wú)法完成請求。
  501(尚未實(shí)施)服務(wù)器不具備完成請求的功能。例如,當服務(wù)器無(wú)法識別請求方法時(shí),服務(wù)器可能會(huì )返回此代碼。
  502(錯誤網(wǎng)關(guān))服務(wù)器作為網(wǎng)關(guān)或代理,從上游服務(wù)器收到了無(wú)效的響應。
  503(服務(wù)不可用)目前無(wú)法使用服務(wù)器(由于超載或進(jìn)行停機維護)。通常,這只是一種暫時(shí)的狀態(tài)。
  504(網(wǎng)關(guān)超時(shí))服務(wù)器作為網(wǎng)關(guān)或代理,未及時(shí)從上游服務(wù)器接收請求。 查看全部

  php抓取網(wǎng)頁(yè)指定內容 常用的HTTP狀態(tài)碼
  
  成功的狀態(tài)碼:
  200 – 服務(wù)器成功返回網(wǎng)頁(yè)
  304 – 未修改
  失敗的狀態(tài)碼:
  404 – 請求的網(wǎng)頁(yè)不存在
  503 – 服務(wù)器暫時(shí)不可用
  500 – 服務(wù)器內部錯誤
  下面的不是很常用,記住上面那幾個(gè)就ok了,有bug了再補充
  其他的狀態(tài)碼如下:
  1xx(臨時(shí)響應)
  用于表示臨時(shí)響應并需要請求者執行操作才能繼續的狀態(tài)代碼。
  100(Continue繼續)請求者應當繼續提出請求。服務(wù)器返回此代碼則意味著(zhù),服務(wù)器已收到了請求的第一部分,現正在等待接收其余部分。(HTTP 1.1新)
  101(Switching Protocols切換協(xié)議) 請求者已要求服務(wù)器切換協(xié)議,服務(wù)器已確認并準備進(jìn)行切換。(HTTP 1.1新)
  2xx(成功)
  用于表示服務(wù)器已成功處理了請求的狀態(tài)代碼。
  200(成功)服務(wù)器已成功處理了請求。通常,這表示服務(wù)器提供了請求的網(wǎng)頁(yè)。
  201(已創(chuàng )建)請求成功且服務(wù)器已創(chuàng )建了新的資源。
  202(已接受)服務(wù)器已接受了請求,但尚未對其進(jìn)行處理。
  203(非授權信息)服務(wù)器已成功處理了請求,但返回了可能來(lái)自另一來(lái)源的信息。
  204(無(wú)內容)服務(wù)器成功處理了請求,但未返回任何內容。
  205(重置內容)服務(wù)器成功處理了請求,但未返回任何內容。與 204 響應不同,此響應要求請求者重置文檔視圖(例如清除表單內容以輸入新內容)。
  206(部分內容)服務(wù)器成功處理了部分 GET 請求。
  3xx(已重定向)
  要完成請求,您需要進(jìn)一步進(jìn)行操作。通常,這些狀態(tài)代碼是永遠重定向的。Google 建議每次請求時(shí)使用的重定向要少于 5 個(gè)。
  300(多種選擇)服務(wù)器根據請求可執行多種操作。服務(wù)器可根據請求者 (User agent) 來(lái)選擇一項操作,或提供操作列表供請求者選擇。
  301(永久移動(dòng))請求的網(wǎng)頁(yè)已被永久移動(dòng)到新位置。服務(wù)器返回此響應(作為對 GET 或 HEAD 請求的響應)時(shí),會(huì )自動(dòng)將請求者轉到新位置。您應使用此代碼通知 Googlebot 某個(gè)網(wǎng)頁(yè)或網(wǎng)站已被永久移動(dòng)到新位置。
  302(臨時(shí)移動(dòng))服務(wù)器目前正從不同位置的網(wǎng)頁(yè)響應請求,但請求者應繼續使用原有位置來(lái)進(jìn)行以后的請求。此代碼與響應 GET 和 HEAD 請求的 301 代碼類(lèi)似,會(huì )自動(dòng)將請求者轉到不同的位置。但由于 Googlebot 會(huì )繼續抓取原有位置并將其編入索引,因此您不應使用此代碼來(lái)通知 Googlebot 某個(gè)頁(yè)面或網(wǎng)站已被移動(dòng)。
  303(查看其他位置)當請求者應對不同的位置進(jìn)行單獨的 GET 請求以檢索響應時(shí),服務(wù)器會(huì )返回此代碼。對于除 HEAD 請求之外的所有請求,服務(wù)器會(huì )自動(dòng)轉到其他位置。
  304(未修改)自從上次請求后,請求的網(wǎng)頁(yè)未被修改過(guò)。服務(wù)器返回此響應時(shí),不會(huì )返回網(wǎng)頁(yè)內容。
  305(使用代理)請求者只能使用代理訪(fǎng)問(wèn)請求的網(wǎng)頁(yè)。如果服務(wù)器返回此響應,那么,服務(wù)器還會(huì )指明請求者應當使用的代理。
  307(臨時(shí)重定向)服務(wù)器目前正從不同位置的網(wǎng)頁(yè)響應請求,但請求者應繼續使用原有位置來(lái)進(jìn)行以后的請求。此代碼與響應 GET 和 HEAD 請求的 301 代碼類(lèi)似,會(huì )自動(dòng)將請求者轉到不同的位置。但由于 Googlebot 會(huì )繼續抓取原有位置并將其編入索引,因此您不應使用此代碼來(lái)通知 Googlebot 某個(gè)頁(yè)面或網(wǎng)站已被移動(dòng)。
  4xx(請求錯誤)
  這些狀態(tài)代碼表示,請求可能出錯,已妨礙了服務(wù)器對請求的處理。
  400(錯誤請求)服務(wù)器不理解請求的語(yǔ)法。
  401(未授權)請求要求進(jìn)行身份驗證。登錄后,服務(wù)器可能會(huì )返回對頁(yè)面的此響應。
  403(已禁止)服務(wù)器拒絕請求。
  404(未找到)服務(wù)器找不到請求的網(wǎng)頁(yè)。例如,如果請求是針對服務(wù)器上不存在的網(wǎng)頁(yè)進(jìn)行的,那么,服務(wù)器通常會(huì )返回此代碼。
  405(方法禁用)禁用請求中所指定的方法。
  406(不接受)無(wú)法使用請求的內容特性來(lái)響應請求的網(wǎng)頁(yè)。
  407(需要代理授權)此狀態(tài)代碼與 401(未授權)類(lèi)似,但卻指定了請求者應當使用代理進(jìn)行授權。如果服務(wù)器返回此響應,那么,服務(wù)器還會(huì )指明請求者應當使用的代理。
  408(請求超時(shí))服務(wù)器等候請求時(shí)超時(shí)。
  409(沖突)服務(wù)器在完成請求時(shí)發(fā)生沖突。服務(wù)器必須包含有關(guān)響應中所發(fā)生的沖突的信息。服務(wù)器在響應與前一個(gè)請求相沖突的 PUT 請求時(shí)可能會(huì )返回此代碼,同時(shí)會(huì )提供兩個(gè)請求的差異列表。
  410(已刪除)如果請求的資源已被永久刪除,那么,服務(wù)器會(huì )返回此響應。該代碼與 404(未找到)代碼類(lèi)似,但在資源以前有但現在已經(jīng)不復存在的情況下,有時(shí)會(huì )替代 404 代碼出現。如果資源已被永久刪除,那么,您應當使用 301 代碼指定該資源的新位置。
  411(需要有效長(cháng)度)服務(wù)器不會(huì )接受包含無(wú)效內容長(cháng)度標頭字段的請求。
  412(未滿(mǎn)足前提條件)服務(wù)器未滿(mǎn)足請求者在請求中設置的其中一個(gè)前提條件。
  413(請求實(shí)體過(guò)大)服務(wù)器無(wú)法處理請求,因為請求實(shí)體過(guò)大,已超出服務(wù)器的處理能力。
  414(請求的 URI 過(guò)長(cháng))請求的 URI(通常為網(wǎng)址)過(guò)長(cháng),服務(wù)器無(wú)法進(jìn)行處理。
  415(不支持的媒體類(lèi)型)請求的格式不受請求頁(yè)面的支持。
  416(請求范圍不符合要求)如果請求是針對網(wǎng)頁(yè)的無(wú)效范圍進(jìn)行的,那么,服務(wù)器會(huì )返回此狀態(tài)代碼。
  417(未滿(mǎn)足期望值)服務(wù)器未滿(mǎn)足”期望”請求標頭字段的要求。
  5xx(服務(wù)器錯誤)
  這些狀態(tài)代碼表示,服務(wù)器在嘗試處理請求時(shí)發(fā)生內部錯誤。這些錯誤可能是服務(wù)器本身的錯誤,而不是請求出錯。
  500(服務(wù)器內部錯誤)服務(wù)器遇到錯誤,無(wú)法完成請求。
  501(尚未實(shí)施)服務(wù)器不具備完成請求的功能。例如,當服務(wù)器無(wú)法識別請求方法時(shí),服務(wù)器可能會(huì )返回此代碼。
  502(錯誤網(wǎng)關(guān))服務(wù)器作為網(wǎng)關(guān)或代理,從上游服務(wù)器收到了無(wú)效的響應。
  503(服務(wù)不可用)目前無(wú)法使用服務(wù)器(由于超載或進(jìn)行停機維護)。通常,這只是一種暫時(shí)的狀態(tài)。
  504(網(wǎng)關(guān)超時(shí))服務(wù)器作為網(wǎng)關(guān)或代理,未及時(shí)從上游服務(wù)器接收請求。

php抓取網(wǎng)頁(yè)指定內容 常用的HTTP狀態(tài)碼

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 106 次瀏覽 ? 2022-06-24 22:07 ? 來(lái)自相關(guān)話(huà)題

  php抓取網(wǎng)頁(yè)指定內容 常用的HTTP狀態(tài)碼
  
  成功的狀態(tài)碼:
  200 – 服務(wù)器成功返回網(wǎng)頁(yè)
  304 – 未修改
  失敗的狀態(tài)碼:
  404 – 請求的網(wǎng)頁(yè)不存在
  503 – 服務(wù)器暫時(shí)不可用
  500 – 服務(wù)器內部錯誤
  下面的不是很常用,記住上面那幾個(gè)就ok了,有bug了再補充
  其他的狀態(tài)碼如下:
  1xx(臨時(shí)響應)
  用于表示臨時(shí)響應并需要請求者執行操作才能繼續的狀態(tài)代碼。
  100(Continue繼續)請求者應當繼續提出請求。服務(wù)器返回此代碼則意味著(zhù),服務(wù)器已收到了請求的第一部分,現正在等待接收其余部分。(HTTP 1.1新)
  101(Switching Protocols切換協(xié)議) 請求者已要求服務(wù)器切換協(xié)議,服務(wù)器已確認并準備進(jìn)行切換。(HTTP 1.1新)
  2xx(成功)
  用于表示服務(wù)器已成功處理了請求的狀態(tài)代碼。
  200(成功)服務(wù)器已成功處理了請求。通常,這表示服務(wù)器提供了請求的網(wǎng)頁(yè)。
  201(已創(chuàng )建)請求成功且服務(wù)器已創(chuàng )建了新的資源。
  202(已接受)服務(wù)器已接受了請求,但尚未對其進(jìn)行處理。
  203(非授權信息)服務(wù)器已成功處理了請求,但返回了可能來(lái)自另一來(lái)源的信息。
  204(無(wú)內容)服務(wù)器成功處理了請求,但未返回任何內容。
  205(重置內容)服務(wù)器成功處理了請求,但未返回任何內容。與 204 響應不同,此響應要求請求者重置文檔視圖(例如清除表單內容以輸入新內容)。
  206(部分內容)服務(wù)器成功處理了部分 GET 請求。
  3xx(已重定向)
  要完成請求,您需要進(jìn)一步進(jìn)行操作。通常,這些狀態(tài)代碼是永遠重定向的。Google 建議每次請求時(shí)使用的重定向要少于 5 個(gè)。
  300(多種選擇)服務(wù)器根據請求可執行多種操作。服務(wù)器可根據請求者 (User agent) 來(lái)選擇一項操作,或提供操作列表供請求者選擇。
  301(永久移動(dòng))請求的網(wǎng)頁(yè)已被永久移動(dòng)到新位置。服務(wù)器返回此響應(作為對 GET 或 HEAD 請求的響應)時(shí),會(huì )自動(dòng)將請求者轉到新位置。您應使用此代碼通知 Googlebot 某個(gè)網(wǎng)頁(yè)或網(wǎng)站已被永久移動(dòng)到新位置。
  302(臨時(shí)移動(dòng))服務(wù)器目前正從不同位置的網(wǎng)頁(yè)響應請求,但請求者應繼續使用原有位置來(lái)進(jìn)行以后的請求。此代碼與響應 GET 和 HEAD 請求的 301 代碼類(lèi)似,會(huì )自動(dòng)將請求者轉到不同的位置。但由于 Googlebot 會(huì )繼續抓取原有位置并將其編入索引,因此您不應使用此代碼來(lái)通知 Googlebot 某個(gè)頁(yè)面或網(wǎng)站已被移動(dòng)。
  303(查看其他位置)當請求者應對不同的位置進(jìn)行單獨的 GET 請求以檢索響應時(shí),服務(wù)器會(huì )返回此代碼。對于除 HEAD 請求之外的所有請求,服務(wù)器會(huì )自動(dòng)轉到其他位置。
  304(未修改)自從上次請求后,請求的網(wǎng)頁(yè)未被修改過(guò)。服務(wù)器返回此響應時(shí),不會(huì )返回網(wǎng)頁(yè)內容。
  305(使用代理)請求者只能使用代理訪(fǎng)問(wèn)請求的網(wǎng)頁(yè)。如果服務(wù)器返回此響應,那么,服務(wù)器還會(huì )指明請求者應當使用的代理。
  307(臨時(shí)重定向)服務(wù)器目前正從不同位置的網(wǎng)頁(yè)響應請求,但請求者應繼續使用原有位置來(lái)進(jìn)行以后的請求。此代碼與響應 GET 和 HEAD 請求的 301 代碼類(lèi)似,會(huì )自動(dòng)將請求者轉到不同的位置。但由于 Googlebot 會(huì )繼續抓取原有位置并將其編入索引,因此您不應使用此代碼來(lái)通知 Googlebot 某個(gè)頁(yè)面或網(wǎng)站已被移動(dòng)。
  4xx(請求錯誤)
  這些狀態(tài)代碼表示,請求可能出錯,已妨礙了服務(wù)器對請求的處理。
  400(錯誤請求)服務(wù)器不理解請求的語(yǔ)法。
  401(未授權)請求要求進(jìn)行身份驗證。登錄后,服務(wù)器可能會(huì )返回對頁(yè)面的此響應。
  403(已禁止)服務(wù)器拒絕請求。
  404(未找到)服務(wù)器找不到請求的網(wǎng)頁(yè)。例如,如果請求是針對服務(wù)器上不存在的網(wǎng)頁(yè)進(jìn)行的,那么,服務(wù)器通常會(huì )返回此代碼。
  405(方法禁用)禁用請求中所指定的方法。
  406(不接受)無(wú)法使用請求的內容特性來(lái)響應請求的網(wǎng)頁(yè)。
  407(需要代理授權)此狀態(tài)代碼與 401(未授權)類(lèi)似,但卻指定了請求者應當使用代理進(jìn)行授權。如果服務(wù)器返回此響應,那么,服務(wù)器還會(huì )指明請求者應當使用的代理。
  408(請求超時(shí))服務(wù)器等候請求時(shí)超時(shí)。
  409(沖突)服務(wù)器在完成請求時(shí)發(fā)生沖突。服務(wù)器必須包含有關(guān)響應中所發(fā)生的沖突的信息。服務(wù)器在響應與前一個(gè)請求相沖突的 PUT 請求時(shí)可能會(huì )返回此代碼,同時(shí)會(huì )提供兩個(gè)請求的差異列表。
  410(已刪除)如果請求的資源已被永久刪除,那么,服務(wù)器會(huì )返回此響應。該代碼與 404(未找到)代碼類(lèi)似,但在資源以前有但現在已經(jīng)不復存在的情況下,有時(shí)會(huì )替代 404 代碼出現。如果資源已被永久刪除,那么,您應當使用 301 代碼指定該資源的新位置。
  411(需要有效長(cháng)度)服務(wù)器不會(huì )接受包含無(wú)效內容長(cháng)度標頭字段的請求。
  412(未滿(mǎn)足前提條件)服務(wù)器未滿(mǎn)足請求者在請求中設置的其中一個(gè)前提條件。
  413(請求實(shí)體過(guò)大)服務(wù)器無(wú)法處理請求,因為請求實(shí)體過(guò)大,已超出服務(wù)器的處理能力。
  414(請求的 URI 過(guò)長(cháng))請求的 URI(通常為網(wǎng)址)過(guò)長(cháng),服務(wù)器無(wú)法進(jìn)行處理。
  415(不支持的媒體類(lèi)型)請求的格式不受請求頁(yè)面的支持。
  416(請求范圍不符合要求)如果請求是針對網(wǎng)頁(yè)的無(wú)效范圍進(jìn)行的,那么,服務(wù)器會(huì )返回此狀態(tài)代碼。
  417(未滿(mǎn)足期望值)服務(wù)器未滿(mǎn)足”期望”請求標頭字段的要求。
  5xx(服務(wù)器錯誤)
  這些狀態(tài)代碼表示,服務(wù)器在嘗試處理請求時(shí)發(fā)生內部錯誤。這些錯誤可能是服務(wù)器本身的錯誤,而不是請求出錯。
  500(服務(wù)器內部錯誤)服務(wù)器遇到錯誤,無(wú)法完成請求。
  501(尚未實(shí)施)服務(wù)器不具備完成請求的功能。例如,當服務(wù)器無(wú)法識別請求方法時(shí),服務(wù)器可能會(huì )返回此代碼。
  502(錯誤網(wǎng)關(guān))服務(wù)器作為網(wǎng)關(guān)或代理,從上游服務(wù)器收到了無(wú)效的響應。
  503(服務(wù)不可用)目前無(wú)法使用服務(wù)器(由于超載或進(jìn)行停機維護)。通常,這只是一種暫時(shí)的狀態(tài)。
  504(網(wǎng)關(guān)超時(shí))服務(wù)器作為網(wǎng)關(guān)或代理,未及時(shí)從上游服務(wù)器接收請求。 查看全部

  php抓取網(wǎng)頁(yè)指定內容 常用的HTTP狀態(tài)碼
  
  成功的狀態(tài)碼:
  200 – 服務(wù)器成功返回網(wǎng)頁(yè)
  304 – 未修改
  失敗的狀態(tài)碼:
  404 – 請求的網(wǎng)頁(yè)不存在
  503 – 服務(wù)器暫時(shí)不可用
  500 – 服務(wù)器內部錯誤
  下面的不是很常用,記住上面那幾個(gè)就ok了,有bug了再補充
  其他的狀態(tài)碼如下:
  1xx(臨時(shí)響應)
  用于表示臨時(shí)響應并需要請求者執行操作才能繼續的狀態(tài)代碼。
  100(Continue繼續)請求者應當繼續提出請求。服務(wù)器返回此代碼則意味著(zhù),服務(wù)器已收到了請求的第一部分,現正在等待接收其余部分。(HTTP 1.1新)
  101(Switching Protocols切換協(xié)議) 請求者已要求服務(wù)器切換協(xié)議,服務(wù)器已確認并準備進(jìn)行切換。(HTTP 1.1新)
  2xx(成功)
  用于表示服務(wù)器已成功處理了請求的狀態(tài)代碼。
  200(成功)服務(wù)器已成功處理了請求。通常,這表示服務(wù)器提供了請求的網(wǎng)頁(yè)。
  201(已創(chuàng )建)請求成功且服務(wù)器已創(chuàng )建了新的資源。
  202(已接受)服務(wù)器已接受了請求,但尚未對其進(jìn)行處理。
  203(非授權信息)服務(wù)器已成功處理了請求,但返回了可能來(lái)自另一來(lái)源的信息。
  204(無(wú)內容)服務(wù)器成功處理了請求,但未返回任何內容。
  205(重置內容)服務(wù)器成功處理了請求,但未返回任何內容。與 204 響應不同,此響應要求請求者重置文檔視圖(例如清除表單內容以輸入新內容)。
  206(部分內容)服務(wù)器成功處理了部分 GET 請求。
  3xx(已重定向)
  要完成請求,您需要進(jìn)一步進(jìn)行操作。通常,這些狀態(tài)代碼是永遠重定向的。Google 建議每次請求時(shí)使用的重定向要少于 5 個(gè)。
  300(多種選擇)服務(wù)器根據請求可執行多種操作。服務(wù)器可根據請求者 (User agent) 來(lái)選擇一項操作,或提供操作列表供請求者選擇。
  301(永久移動(dòng))請求的網(wǎng)頁(yè)已被永久移動(dòng)到新位置。服務(wù)器返回此響應(作為對 GET 或 HEAD 請求的響應)時(shí),會(huì )自動(dòng)將請求者轉到新位置。您應使用此代碼通知 Googlebot 某個(gè)網(wǎng)頁(yè)或網(wǎng)站已被永久移動(dòng)到新位置。
  302(臨時(shí)移動(dòng))服務(wù)器目前正從不同位置的網(wǎng)頁(yè)響應請求,但請求者應繼續使用原有位置來(lái)進(jìn)行以后的請求。此代碼與響應 GET 和 HEAD 請求的 301 代碼類(lèi)似,會(huì )自動(dòng)將請求者轉到不同的位置。但由于 Googlebot 會(huì )繼續抓取原有位置并將其編入索引,因此您不應使用此代碼來(lái)通知 Googlebot 某個(gè)頁(yè)面或網(wǎng)站已被移動(dòng)。
  303(查看其他位置)當請求者應對不同的位置進(jìn)行單獨的 GET 請求以檢索響應時(shí),服務(wù)器會(huì )返回此代碼。對于除 HEAD 請求之外的所有請求,服務(wù)器會(huì )自動(dòng)轉到其他位置。
  304(未修改)自從上次請求后,請求的網(wǎng)頁(yè)未被修改過(guò)。服務(wù)器返回此響應時(shí),不會(huì )返回網(wǎng)頁(yè)內容。
  305(使用代理)請求者只能使用代理訪(fǎng)問(wèn)請求的網(wǎng)頁(yè)。如果服務(wù)器返回此響應,那么,服務(wù)器還會(huì )指明請求者應當使用的代理。
  307(臨時(shí)重定向)服務(wù)器目前正從不同位置的網(wǎng)頁(yè)響應請求,但請求者應繼續使用原有位置來(lái)進(jìn)行以后的請求。此代碼與響應 GET 和 HEAD 請求的 301 代碼類(lèi)似,會(huì )自動(dòng)將請求者轉到不同的位置。但由于 Googlebot 會(huì )繼續抓取原有位置并將其編入索引,因此您不應使用此代碼來(lái)通知 Googlebot 某個(gè)頁(yè)面或網(wǎng)站已被移動(dòng)。
  4xx(請求錯誤)
  這些狀態(tài)代碼表示,請求可能出錯,已妨礙了服務(wù)器對請求的處理。
  400(錯誤請求)服務(wù)器不理解請求的語(yǔ)法。
  401(未授權)請求要求進(jìn)行身份驗證。登錄后,服務(wù)器可能會(huì )返回對頁(yè)面的此響應。
  403(已禁止)服務(wù)器拒絕請求。
  404(未找到)服務(wù)器找不到請求的網(wǎng)頁(yè)。例如,如果請求是針對服務(wù)器上不存在的網(wǎng)頁(yè)進(jìn)行的,那么,服務(wù)器通常會(huì )返回此代碼。
  405(方法禁用)禁用請求中所指定的方法。
  406(不接受)無(wú)法使用請求的內容特性來(lái)響應請求的網(wǎng)頁(yè)。
  407(需要代理授權)此狀態(tài)代碼與 401(未授權)類(lèi)似,但卻指定了請求者應當使用代理進(jìn)行授權。如果服務(wù)器返回此響應,那么,服務(wù)器還會(huì )指明請求者應當使用的代理。
  408(請求超時(shí))服務(wù)器等候請求時(shí)超時(shí)。
  409(沖突)服務(wù)器在完成請求時(shí)發(fā)生沖突。服務(wù)器必須包含有關(guān)響應中所發(fā)生的沖突的信息。服務(wù)器在響應與前一個(gè)請求相沖突的 PUT 請求時(shí)可能會(huì )返回此代碼,同時(shí)會(huì )提供兩個(gè)請求的差異列表。
  410(已刪除)如果請求的資源已被永久刪除,那么,服務(wù)器會(huì )返回此響應。該代碼與 404(未找到)代碼類(lèi)似,但在資源以前有但現在已經(jīng)不復存在的情況下,有時(shí)會(huì )替代 404 代碼出現。如果資源已被永久刪除,那么,您應當使用 301 代碼指定該資源的新位置。
  411(需要有效長(cháng)度)服務(wù)器不會(huì )接受包含無(wú)效內容長(cháng)度標頭字段的請求。
  412(未滿(mǎn)足前提條件)服務(wù)器未滿(mǎn)足請求者在請求中設置的其中一個(gè)前提條件。
  413(請求實(shí)體過(guò)大)服務(wù)器無(wú)法處理請求,因為請求實(shí)體過(guò)大,已超出服務(wù)器的處理能力。
  414(請求的 URI 過(guò)長(cháng))請求的 URI(通常為網(wǎng)址)過(guò)長(cháng),服務(wù)器無(wú)法進(jìn)行處理。
  415(不支持的媒體類(lèi)型)請求的格式不受請求頁(yè)面的支持。
  416(請求范圍不符合要求)如果請求是針對網(wǎng)頁(yè)的無(wú)效范圍進(jìn)行的,那么,服務(wù)器會(huì )返回此狀態(tài)代碼。
  417(未滿(mǎn)足期望值)服務(wù)器未滿(mǎn)足”期望”請求標頭字段的要求。
  5xx(服務(wù)器錯誤)
  這些狀態(tài)代碼表示,服務(wù)器在嘗試處理請求時(shí)發(fā)生內部錯誤。這些錯誤可能是服務(wù)器本身的錯誤,而不是請求出錯。
  500(服務(wù)器內部錯誤)服務(wù)器遇到錯誤,無(wú)法完成請求。
  501(尚未實(shí)施)服務(wù)器不具備完成請求的功能。例如,當服務(wù)器無(wú)法識別請求方法時(shí),服務(wù)器可能會(huì )返回此代碼。
  502(錯誤網(wǎng)關(guān))服務(wù)器作為網(wǎng)關(guān)或代理,從上游服務(wù)器收到了無(wú)效的響應。
  503(服務(wù)不可用)目前無(wú)法使用服務(wù)器(由于超載或進(jìn)行停機維護)。通常,這只是一種暫時(shí)的狀態(tài)。
  504(網(wǎng)關(guān)超時(shí))服務(wù)器作為網(wǎng)關(guān)或代理,未及時(shí)從上游服務(wù)器接收請求。

php抓取網(wǎng)頁(yè)指定內容 常用的HTTP狀態(tài)碼

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 110 次瀏覽 ? 2022-06-21 16:54 ? 來(lái)自相關(guān)話(huà)題

  php抓取網(wǎng)頁(yè)指定內容 常用的HTTP狀態(tài)碼
  
  成功的狀態(tài)碼:
  200 – 服務(wù)器成功返回網(wǎng)頁(yè)
  304 – 未修改
  失敗的狀態(tài)碼:
  404 – 請求的網(wǎng)頁(yè)不存在
  503 – 服務(wù)器暫時(shí)不可用
  500 – 服務(wù)器內部錯誤
  下面的不是很常用,記住上面那幾個(gè)就ok了,有bug了再補充
  其他的狀態(tài)碼如下:
  1xx(臨時(shí)響應)
  用于表示臨時(shí)響應并需要請求者執行操作才能繼續的狀態(tài)代碼。
  100(Continue繼續)請求者應當繼續提出請求。服務(wù)器返回此代碼則意味著(zhù),服務(wù)器已收到了請求的第一部分,現正在等待接收其余部分。(HTTP 1.1新)
  101(Switching Protocols切換協(xié)議) 請求者已要求服務(wù)器切換協(xié)議,服務(wù)器已確認并準備進(jìn)行切換。(HTTP 1.1新)
  2xx(成功)
  用于表示服務(wù)器已成功處理了請求的狀態(tài)代碼。
  200(成功)服務(wù)器已成功處理了請求。通常,這表示服務(wù)器提供了請求的網(wǎng)頁(yè)。
  201(已創(chuàng )建)請求成功且服務(wù)器已創(chuàng )建了新的資源。
  202(已接受)服務(wù)器已接受了請求,但尚未對其進(jìn)行處理。
  203(非授權信息)服務(wù)器已成功處理了請求,但返回了可能來(lái)自另一來(lái)源的信息。
  204(無(wú)內容)服務(wù)器成功處理了請求,但未返回任何內容。
  205(重置內容)服務(wù)器成功處理了請求,但未返回任何內容。與 204 響應不同,此響應要求請求者重置文檔視圖(例如清除表單內容以輸入新內容)。
  206(部分內容)服務(wù)器成功處理了部分 GET 請求。
  3xx(已重定向)
  要完成請求,您需要進(jìn)一步進(jìn)行操作。通常,這些狀態(tài)代碼是永遠重定向的。Google 建議每次請求時(shí)使用的重定向要少于 5 個(gè)。
  300(多種選擇)服務(wù)器根據請求可執行多種操作。服務(wù)器可根據請求者 (User agent) 來(lái)選擇一項操作,或提供操作列表供請求者選擇。
  301(永久移動(dòng))請求的網(wǎng)頁(yè)已被永久移動(dòng)到新位置。服務(wù)器返回此響應(作為對 GET 或 HEAD 請求的響應)時(shí),會(huì )自動(dòng)將請求者轉到新位置。您應使用此代碼通知 Googlebot 某個(gè)網(wǎng)頁(yè)或網(wǎng)站已被永久移動(dòng)到新位置。
  302(臨時(shí)移動(dòng))服務(wù)器目前正從不同位置的網(wǎng)頁(yè)響應請求,但請求者應繼續使用原有位置來(lái)進(jìn)行以后的請求。此代碼與響應 GET 和 HEAD 請求的 301 代碼類(lèi)似,會(huì )自動(dòng)將請求者轉到不同的位置。但由于 Googlebot 會(huì )繼續抓取原有位置并將其編入索引,因此您不應使用此代碼來(lái)通知 Googlebot 某個(gè)頁(yè)面或網(wǎng)站已被移動(dòng)。
  303(查看其他位置)當請求者應對不同的位置進(jìn)行單獨的 GET 請求以檢索響應時(shí),服務(wù)器會(huì )返回此代碼。對于除 HEAD 請求之外的所有請求,服務(wù)器會(huì )自動(dòng)轉到其他位置。
  304(未修改)自從上次請求后,請求的網(wǎng)頁(yè)未被修改過(guò)。服務(wù)器返回此響應時(shí),不會(huì )返回網(wǎng)頁(yè)內容。
  305(使用代理)請求者只能使用代理訪(fǎng)問(wèn)請求的網(wǎng)頁(yè)。如果服務(wù)器返回此響應,那么,服務(wù)器還會(huì )指明請求者應當使用的代理。
  307(臨時(shí)重定向)服務(wù)器目前正從不同位置的網(wǎng)頁(yè)響應請求,但請求者應繼續使用原有位置來(lái)進(jìn)行以后的請求。此代碼與響應 GET 和 HEAD 請求的 301 代碼類(lèi)似,會(huì )自動(dòng)將請求者轉到不同的位置。但由于 Googlebot 會(huì )繼續抓取原有位置并將其編入索引,因此您不應使用此代碼來(lái)通知 Googlebot 某個(gè)頁(yè)面或網(wǎng)站已被移動(dòng)。
  4xx(請求錯誤)
  這些狀態(tài)代碼表示,請求可能出錯,已妨礙了服務(wù)器對請求的處理。
  400(錯誤請求)服務(wù)器不理解請求的語(yǔ)法。
  401(未授權)請求要求進(jìn)行身份驗證。登錄后,服務(wù)器可能會(huì )返回對頁(yè)面的此響應。
  403(已禁止)服務(wù)器拒絕請求。
  404(未找到)服務(wù)器找不到請求的網(wǎng)頁(yè)。例如,如果請求是針對服務(wù)器上不存在的網(wǎng)頁(yè)進(jìn)行的,那么,服務(wù)器通常會(huì )返回此代碼。
  405(方法禁用)禁用請求中所指定的方法。
  406(不接受)無(wú)法使用請求的內容特性來(lái)響應請求的網(wǎng)頁(yè)。
  407(需要代理授權)此狀態(tài)代碼與 401(未授權)類(lèi)似,但卻指定了請求者應當使用代理進(jìn)行授權。如果服務(wù)器返回此響應,那么,服務(wù)器還會(huì )指明請求者應當使用的代理。
  408(請求超時(shí))服務(wù)器等候請求時(shí)超時(shí)。
  409(沖突)服務(wù)器在完成請求時(shí)發(fā)生沖突。服務(wù)器必須包含有關(guān)響應中所發(fā)生的沖突的信息。服務(wù)器在響應與前一個(gè)請求相沖突的 PUT 請求時(shí)可能會(huì )返回此代碼,同時(shí)會(huì )提供兩個(gè)請求的差異列表。
  410(已刪除)如果請求的資源已被永久刪除,那么,服務(wù)器會(huì )返回此響應。該代碼與 404(未找到)代碼類(lèi)似,但在資源以前有但現在已經(jīng)不復存在的情況下,有時(shí)會(huì )替代 404 代碼出現。如果資源已被永久刪除,那么,您應當使用 301 代碼指定該資源的新位置。
  411(需要有效長(cháng)度)服務(wù)器不會(huì )接受包含無(wú)效內容長(cháng)度標頭字段的請求。
  412(未滿(mǎn)足前提條件)服務(wù)器未滿(mǎn)足請求者在請求中設置的其中一個(gè)前提條件。
  413(請求實(shí)體過(guò)大)服務(wù)器無(wú)法處理請求,因為請求實(shí)體過(guò)大,已超出服務(wù)器的處理能力。
  414(請求的 URI 過(guò)長(cháng))請求的 URI(通常為網(wǎng)址)過(guò)長(cháng),服務(wù)器無(wú)法進(jìn)行處理。
  415(不支持的媒體類(lèi)型)請求的格式不受請求頁(yè)面的支持。
  416(請求范圍不符合要求)如果請求是針對網(wǎng)頁(yè)的無(wú)效范圍進(jìn)行的,那么,服務(wù)器會(huì )返回此狀態(tài)代碼。
  417(未滿(mǎn)足期望值)服務(wù)器未滿(mǎn)足”期望”請求標頭字段的要求。
  5xx(服務(wù)器錯誤)
  這些狀態(tài)代碼表示,服務(wù)器在嘗試處理請求時(shí)發(fā)生內部錯誤。這些錯誤可能是服務(wù)器本身的錯誤,而不是請求出錯。
  500(服務(wù)器內部錯誤)服務(wù)器遇到錯誤,無(wú)法完成請求。
  501(尚未實(shí)施)服務(wù)器不具備完成請求的功能。例如,當服務(wù)器無(wú)法識別請求方法時(shí),服務(wù)器可能會(huì )返回此代碼。
  502(錯誤網(wǎng)關(guān))服務(wù)器作為網(wǎng)關(guān)或代理,從上游服務(wù)器收到了無(wú)效的響應。
  503(服務(wù)不可用)目前無(wú)法使用服務(wù)器(由于超載或進(jìn)行停機維護)。通常,這只是一種暫時(shí)的狀態(tài)。
  504(網(wǎng)關(guān)超時(shí))服務(wù)器作為網(wǎng)關(guān)或代理,未及時(shí)從上游服務(wù)器接收請求。 查看全部

  php抓取網(wǎng)頁(yè)指定內容 常用的HTTP狀態(tài)碼
  
  成功的狀態(tài)碼:
  200 – 服務(wù)器成功返回網(wǎng)頁(yè)
  304 – 未修改
  失敗的狀態(tài)碼:
  404 – 請求的網(wǎng)頁(yè)不存在
  503 – 服務(wù)器暫時(shí)不可用
  500 – 服務(wù)器內部錯誤
  下面的不是很常用,記住上面那幾個(gè)就ok了,有bug了再補充
  其他的狀態(tài)碼如下:
  1xx(臨時(shí)響應)
  用于表示臨時(shí)響應并需要請求者執行操作才能繼續的狀態(tài)代碼。
  100(Continue繼續)請求者應當繼續提出請求。服務(wù)器返回此代碼則意味著(zhù),服務(wù)器已收到了請求的第一部分,現正在等待接收其余部分。(HTTP 1.1新)
  101(Switching Protocols切換協(xié)議) 請求者已要求服務(wù)器切換協(xié)議,服務(wù)器已確認并準備進(jìn)行切換。(HTTP 1.1新)
  2xx(成功)
  用于表示服務(wù)器已成功處理了請求的狀態(tài)代碼。
  200(成功)服務(wù)器已成功處理了請求。通常,這表示服務(wù)器提供了請求的網(wǎng)頁(yè)。
  201(已創(chuàng )建)請求成功且服務(wù)器已創(chuàng )建了新的資源。
  202(已接受)服務(wù)器已接受了請求,但尚未對其進(jìn)行處理。
  203(非授權信息)服務(wù)器已成功處理了請求,但返回了可能來(lái)自另一來(lái)源的信息。
  204(無(wú)內容)服務(wù)器成功處理了請求,但未返回任何內容。
  205(重置內容)服務(wù)器成功處理了請求,但未返回任何內容。與 204 響應不同,此響應要求請求者重置文檔視圖(例如清除表單內容以輸入新內容)。
  206(部分內容)服務(wù)器成功處理了部分 GET 請求。
  3xx(已重定向)
  要完成請求,您需要進(jìn)一步進(jìn)行操作。通常,這些狀態(tài)代碼是永遠重定向的。Google 建議每次請求時(shí)使用的重定向要少于 5 個(gè)。
  300(多種選擇)服務(wù)器根據請求可執行多種操作。服務(wù)器可根據請求者 (User agent) 來(lái)選擇一項操作,或提供操作列表供請求者選擇。
  301(永久移動(dòng))請求的網(wǎng)頁(yè)已被永久移動(dòng)到新位置。服務(wù)器返回此響應(作為對 GET 或 HEAD 請求的響應)時(shí),會(huì )自動(dòng)將請求者轉到新位置。您應使用此代碼通知 Googlebot 某個(gè)網(wǎng)頁(yè)或網(wǎng)站已被永久移動(dòng)到新位置。
  302(臨時(shí)移動(dòng))服務(wù)器目前正從不同位置的網(wǎng)頁(yè)響應請求,但請求者應繼續使用原有位置來(lái)進(jìn)行以后的請求。此代碼與響應 GET 和 HEAD 請求的 301 代碼類(lèi)似,會(huì )自動(dòng)將請求者轉到不同的位置。但由于 Googlebot 會(huì )繼續抓取原有位置并將其編入索引,因此您不應使用此代碼來(lái)通知 Googlebot 某個(gè)頁(yè)面或網(wǎng)站已被移動(dòng)。
  303(查看其他位置)當請求者應對不同的位置進(jìn)行單獨的 GET 請求以檢索響應時(shí),服務(wù)器會(huì )返回此代碼。對于除 HEAD 請求之外的所有請求,服務(wù)器會(huì )自動(dòng)轉到其他位置。
  304(未修改)自從上次請求后,請求的網(wǎng)頁(yè)未被修改過(guò)。服務(wù)器返回此響應時(shí),不會(huì )返回網(wǎng)頁(yè)內容。
  305(使用代理)請求者只能使用代理訪(fǎng)問(wèn)請求的網(wǎng)頁(yè)。如果服務(wù)器返回此響應,那么,服務(wù)器還會(huì )指明請求者應當使用的代理。
  307(臨時(shí)重定向)服務(wù)器目前正從不同位置的網(wǎng)頁(yè)響應請求,但請求者應繼續使用原有位置來(lái)進(jìn)行以后的請求。此代碼與響應 GET 和 HEAD 請求的 301 代碼類(lèi)似,會(huì )自動(dòng)將請求者轉到不同的位置。但由于 Googlebot 會(huì )繼續抓取原有位置并將其編入索引,因此您不應使用此代碼來(lái)通知 Googlebot 某個(gè)頁(yè)面或網(wǎng)站已被移動(dòng)。
  4xx(請求錯誤)
  這些狀態(tài)代碼表示,請求可能出錯,已妨礙了服務(wù)器對請求的處理。
  400(錯誤請求)服務(wù)器不理解請求的語(yǔ)法。
  401(未授權)請求要求進(jìn)行身份驗證。登錄后,服務(wù)器可能會(huì )返回對頁(yè)面的此響應。
  403(已禁止)服務(wù)器拒絕請求。
  404(未找到)服務(wù)器找不到請求的網(wǎng)頁(yè)。例如,如果請求是針對服務(wù)器上不存在的網(wǎng)頁(yè)進(jìn)行的,那么,服務(wù)器通常會(huì )返回此代碼。
  405(方法禁用)禁用請求中所指定的方法。
  406(不接受)無(wú)法使用請求的內容特性來(lái)響應請求的網(wǎng)頁(yè)。
  407(需要代理授權)此狀態(tài)代碼與 401(未授權)類(lèi)似,但卻指定了請求者應當使用代理進(jìn)行授權。如果服務(wù)器返回此響應,那么,服務(wù)器還會(huì )指明請求者應當使用的代理。
  408(請求超時(shí))服務(wù)器等候請求時(shí)超時(shí)。
  409(沖突)服務(wù)器在完成請求時(shí)發(fā)生沖突。服務(wù)器必須包含有關(guān)響應中所發(fā)生的沖突的信息。服務(wù)器在響應與前一個(gè)請求相沖突的 PUT 請求時(shí)可能會(huì )返回此代碼,同時(shí)會(huì )提供兩個(gè)請求的差異列表。
  410(已刪除)如果請求的資源已被永久刪除,那么,服務(wù)器會(huì )返回此響應。該代碼與 404(未找到)代碼類(lèi)似,但在資源以前有但現在已經(jīng)不復存在的情況下,有時(shí)會(huì )替代 404 代碼出現。如果資源已被永久刪除,那么,您應當使用 301 代碼指定該資源的新位置。
  411(需要有效長(cháng)度)服務(wù)器不會(huì )接受包含無(wú)效內容長(cháng)度標頭字段的請求。
  412(未滿(mǎn)足前提條件)服務(wù)器未滿(mǎn)足請求者在請求中設置的其中一個(gè)前提條件。
  413(請求實(shí)體過(guò)大)服務(wù)器無(wú)法處理請求,因為請求實(shí)體過(guò)大,已超出服務(wù)器的處理能力。
  414(請求的 URI 過(guò)長(cháng))請求的 URI(通常為網(wǎng)址)過(guò)長(cháng),服務(wù)器無(wú)法進(jìn)行處理。
  415(不支持的媒體類(lèi)型)請求的格式不受請求頁(yè)面的支持。
  416(請求范圍不符合要求)如果請求是針對網(wǎng)頁(yè)的無(wú)效范圍進(jìn)行的,那么,服務(wù)器會(huì )返回此狀態(tài)代碼。
  417(未滿(mǎn)足期望值)服務(wù)器未滿(mǎn)足”期望”請求標頭字段的要求。
  5xx(服務(wù)器錯誤)
  這些狀態(tài)代碼表示,服務(wù)器在嘗試處理請求時(shí)發(fā)生內部錯誤。這些錯誤可能是服務(wù)器本身的錯誤,而不是請求出錯。
  500(服務(wù)器內部錯誤)服務(wù)器遇到錯誤,無(wú)法完成請求。
  501(尚未實(shí)施)服務(wù)器不具備完成請求的功能。例如,當服務(wù)器無(wú)法識別請求方法時(shí),服務(wù)器可能會(huì )返回此代碼。
  502(錯誤網(wǎng)關(guān))服務(wù)器作為網(wǎng)關(guān)或代理,從上游服務(wù)器收到了無(wú)效的響應。
  503(服務(wù)不可用)目前無(wú)法使用服務(wù)器(由于超載或進(jìn)行停機維護)。通常,這只是一種暫時(shí)的狀態(tài)。
  504(網(wǎng)關(guān)超時(shí))服務(wù)器作為網(wǎng)關(guān)或代理,未及時(shí)從上游服務(wù)器接收請求。

個(gè)人網(wǎng)站收錄數據提交,360,百度,搜狗

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 90 次瀏覽 ? 2022-05-26 18:15 ? 來(lái)自相關(guān)話(huà)題

  個(gè)人網(wǎng)站收錄數據提交,360,百度,搜狗
  前言
  我們個(gè)人的博客網(wǎng)站,每發(fā)布一篇新的文章。當然是希望各大搜索引擎能盡快進(jìn)行收錄。
  因為只有收錄了才有希望能夠被網(wǎng)友們搜索到。
  下面主要介紹一下,國內的幾個(gè)搜索平臺的收錄(ps:神馬搜索一直無(wú)法認證,我也無(wú)語(yǔ)了)
  關(guān)于收錄平臺我有一篇文章介紹過(guò),不太了解的話(huà)可以看看:自建網(wǎng)站,必須了解的各搜索網(wǎng)站的收錄平臺,以及seo概念的通俗解釋 ()
  介紹
  我們要提高搜索引擎對我們的收錄,就不能坐等爬蟲(chóng)爬取。否則速度比較慢。
  這個(gè)時(shí)候我們需要主動(dòng)將最新的文章的鏈接提供給各大搜索平臺。
  這個(gè)操作就是所謂的鏈接收錄了。
  1. 百度收錄 :
  百度主要有兩種:快速收錄和普通收錄。
  如果要開(kāi)通快速收錄,我們需要建立一個(gè)百度小程序,否則百度不給你權限。
  
  而普通收錄主要分為:
  上面的方法也是逐步降低使用門(mén)檻的。但是后果就是繁瑣,需要我們主動(dòng)進(jìn)行維護和提交。
  1.1 使用sitemap
  我們在自己的博客存儲一個(gè)sitemap文件。然后將該文件的鏈接告訴給百度。每一段時(shí)間更新一下該文檔。
  可以實(shí)現批量的收錄導入功能。
  百度會(huì )周期性的抓取檢查我們提交的Sitemap文件,對其中的鏈接進(jìn)行處理,但收錄速度慢于A(yíng)PI推送。
  sitemap的文檔格式主要有txt和xml 。也就是說(shuō)我們在服務(wù)器上創(chuàng )建一個(gè)xxx.txt或xml 文件然后將文件訪(fǎng)問(wèn)地址告訴百度
  就可實(shí)現sitemap收錄了。
  txt文本格式:
  http://www.example.com/repaste ... %3Bbr />http://www.example.com/repaste ... %3Bbr />http://www.example.com/repaste ... %3Bbr />
  xml文本格式:
  <br /><br /><br /> <br /> <br /> <br /> http://www.yoursite.com/yoursite.html<br /> <br /> 2009-12-14<br /> <br /> daily<br /> <br /> 0.8<br /> <br /> <br /> http://www.yoursite.com/yoursite2.html<br /> 2010-05-01<br /> daily<br /> 0.8<br /> <br /><br />
  其他的細節就不說(shuō)了。
  1.2.使用百度統計js,自動(dòng)提交收錄
  其實(shí)sitemap只是適用于已有大量網(wǎng)站,但是未進(jìn)行收錄的情況。
  我們不能每寫(xiě)一條文章發(fā)表,就弄一個(gè)sitemap文件吧。那也太復雜了。
  針對這種需求,百度統計JS實(shí)現了自動(dòng)收錄功能。也就是說(shuō)我們網(wǎng)站如果使用的百度js。那么當我們的頁(yè)面被訪(fǎng)問(wèn)的時(shí)候
  會(huì )自動(dòng)推送到百度收錄庫中等待百度進(jìn)行收錄。
  
  我現在使用的joe2 的主題也支持了自動(dòng)提交收錄,采用的是api提交方式。
  我們如果使用api收錄,然后再使用統計js進(jìn)行收錄。兩種重復提交不會(huì )有影響。我們可以放心使用。
  2. 360收錄:
  就我個(gè)人在360收錄上的使用來(lái)看,沒(méi)有百度收錄快。也許連搜狗搜索的收錄速度都比不上。
  
  在它的站長(cháng)平臺上也有三種收錄,
  
  我們能用的也就是sitemap收錄了。
  2.1 sitemap
  使用sitemap 的要求是:
  單個(gè)Sitemap文件:大小不超過(guò)10MB,且包含不超過(guò)5萬(wàn)個(gè)網(wǎng)址。如果網(wǎng)站所包含的網(wǎng)址超過(guò)5萬(wàn)個(gè),則可將列表分割成多個(gè)Sitemap文件,放在Sitemap索引中
  單個(gè)Sitemap索引文件:大小不能超過(guò)500M,如果超過(guò)請提交多個(gè)Sitemap索引文件接口
  您可以采用如下三種格式的文件向360搜索提交Sitemap,文件編碼可以是UTF-8或GBK:1)標準的XML格式文件 2)文本格式文件 3)Sitemap索引文件(可同時(shí)包含多個(gè)Sitemap文件)
  其實(shí)和百度的sitemap文件的要求差不多。
  xml文檔格式:
   <br /> <br /> <br /> <br /> <br /> <br /> http://www.xxxxxx.html/000000.html<br /> <br /> 2012-12-01<br /> <br /> daily<br /> <br /> 0.8<br /> <br /> <br /> http://www.xxxxxx.html/000001.html<br /> 2012-12-01<br /> daily<br /> 0.8<br /> <br /> <br />
  txt文件格式:
  http://www.xxxxxx.html/1015626 ... %3Bbr />http://www.xxxxxx.html/1015862 ... %3Bbr />http://www.xxxxxx.html/1016394 ... %3Bbr />
  索引文件格式:(適用于數據較多的情況下。)
   <br /> <br /> <br /> http://www.example.com/1.xml<br /> 2012-12-01<br /> <br /> <br /> http://www.example.com/2.xml<br /> 2012-12-01<br /> <br /> <br />
  上面的loc 是其他的sitempa文件對象。因為上面已經(jīng)說(shuō)了一個(gè)文件不能超過(guò)10M。5萬(wàn)條數據。
  3. 搜狗收錄:
  搜狗搜索收錄就更簡(jiǎn)陋了。它默認不支持sitemap收錄。需要我們自己主動(dòng)收錄。
  也就是說(shuō)我們需要手動(dòng)在它的管理臺上填寫(xiě)url進(jìn)行收錄。
  
  除非你的網(wǎng)站權重高,主動(dòng)找官方給你開(kāi)通sitemap收錄。否則現在是沒(méi)有的。
  然后我們在上面主動(dòng)提交鏈接的話(huà),每天只能提交20條url。
  
  直接將我們的url 復制上去就可以了。
  到這里,我們的收錄就提交完畢了。剩下的就是等待搜索平臺審核鏈接了。
  之后需要慢慢等待了,注意更新你的網(wǎng)站內容。否則搜索引擎會(huì )判斷網(wǎng)站質(zhì)量不行減少收錄。
  我們提交的鏈接也不一定會(huì )全部進(jìn)行收錄。搜索引擎的算法會(huì )過(guò)濾和檢測我們的鏈接指向的網(wǎng)站資源。如果內容質(zhì)量太差或者已經(jīng)網(wǎng)上已經(jīng)存在了大量的相同的資料,那么就會(huì )被搜索算法拋棄掉。
  參考資料
  百度統計升級網(wǎng)頁(yè)實(shí)時(shí)推送至搜索引擎功能,提升網(wǎng)頁(yè)抓取速度!【吧】_百度貼吧 ()
  平臺工具使用手冊_普通收錄_搜索學(xué)堂_百度搜索資源平臺 ()
  主動(dòng)收錄中的自動(dòng)推送出錯且影響到首頁(yè)打開(kāi)速度了_360社區
  360自動(dòng)收錄的代碼還有用嗎?_360社區
  sitemap提交_360搜索使用幫助 () 查看全部

  個(gè)人網(wǎng)站收錄數據提交,360,百度,搜狗
  前言
  我們個(gè)人的博客網(wǎng)站,每發(fā)布一篇新的文章。當然是希望各大搜索引擎能盡快進(jìn)行收錄。
  因為只有收錄了才有希望能夠被網(wǎng)友們搜索到。
  下面主要介紹一下,國內的幾個(gè)搜索平臺的收錄(ps:神馬搜索一直無(wú)法認證,我也無(wú)語(yǔ)了)
  關(guān)于收錄平臺我有一篇文章介紹過(guò),不太了解的話(huà)可以看看:自建網(wǎng)站,必須了解的各搜索網(wǎng)站的收錄平臺,以及seo概念的通俗解釋 ()
  介紹
  我們要提高搜索引擎對我們的收錄,就不能坐等爬蟲(chóng)爬取。否則速度比較慢。
  這個(gè)時(shí)候我們需要主動(dòng)將最新的文章的鏈接提供給各大搜索平臺。
  這個(gè)操作就是所謂的鏈接收錄了。
  1. 百度收錄 :
  百度主要有兩種:快速收錄和普通收錄。
  如果要開(kāi)通快速收錄,我們需要建立一個(gè)百度小程序,否則百度不給你權限。
  
  而普通收錄主要分為:
  上面的方法也是逐步降低使用門(mén)檻的。但是后果就是繁瑣,需要我們主動(dòng)進(jìn)行維護和提交。
  1.1 使用sitemap
  我們在自己的博客存儲一個(gè)sitemap文件。然后將該文件的鏈接告訴給百度。每一段時(shí)間更新一下該文檔。
  可以實(shí)現批量的收錄導入功能。
  百度會(huì )周期性的抓取檢查我們提交的Sitemap文件,對其中的鏈接進(jìn)行處理,但收錄速度慢于A(yíng)PI推送。
  sitemap的文檔格式主要有txt和xml 。也就是說(shuō)我們在服務(wù)器上創(chuàng )建一個(gè)xxx.txt或xml 文件然后將文件訪(fǎng)問(wèn)地址告訴百度
  就可實(shí)現sitemap收錄了。
  txt文本格式:
  http://www.example.com/repaste ... %3Bbr />http://www.example.com/repaste ... %3Bbr />http://www.example.com/repaste ... %3Bbr />
  xml文本格式:
  <br /><br /><br /> <br /> <br /> <br /> http://www.yoursite.com/yoursite.html<br /> <br /> 2009-12-14<br /> <br /> daily<br /> <br /> 0.8<br /> <br /> <br /> http://www.yoursite.com/yoursite2.html<br /> 2010-05-01<br /> daily<br /> 0.8<br /> <br /><br />
  其他的細節就不說(shuō)了。
  1.2.使用百度統計js,自動(dòng)提交收錄
  其實(shí)sitemap只是適用于已有大量網(wǎng)站,但是未進(jìn)行收錄的情況。
  我們不能每寫(xiě)一條文章發(fā)表,就弄一個(gè)sitemap文件吧。那也太復雜了。
  針對這種需求,百度統計JS實(shí)現了自動(dòng)收錄功能。也就是說(shuō)我們網(wǎng)站如果使用的百度js。那么當我們的頁(yè)面被訪(fǎng)問(wèn)的時(shí)候
  會(huì )自動(dòng)推送到百度收錄庫中等待百度進(jìn)行收錄。
  
  我現在使用的joe2 的主題也支持了自動(dòng)提交收錄,采用的是api提交方式。
  我們如果使用api收錄,然后再使用統計js進(jìn)行收錄。兩種重復提交不會(huì )有影響。我們可以放心使用。
  2. 360收錄:
  就我個(gè)人在360收錄上的使用來(lái)看,沒(méi)有百度收錄快。也許連搜狗搜索的收錄速度都比不上。
  
  在它的站長(cháng)平臺上也有三種收錄,
  
  我們能用的也就是sitemap收錄了。
  2.1 sitemap
  使用sitemap 的要求是:
  單個(gè)Sitemap文件:大小不超過(guò)10MB,且包含不超過(guò)5萬(wàn)個(gè)網(wǎng)址。如果網(wǎng)站所包含的網(wǎng)址超過(guò)5萬(wàn)個(gè),則可將列表分割成多個(gè)Sitemap文件,放在Sitemap索引中
  單個(gè)Sitemap索引文件:大小不能超過(guò)500M,如果超過(guò)請提交多個(gè)Sitemap索引文件接口
  您可以采用如下三種格式的文件向360搜索提交Sitemap,文件編碼可以是UTF-8或GBK:1)標準的XML格式文件 2)文本格式文件 3)Sitemap索引文件(可同時(shí)包含多個(gè)Sitemap文件)
  其實(shí)和百度的sitemap文件的要求差不多。
  xml文檔格式:
   <br /> <br /> <br /> <br /> <br /> <br /> http://www.xxxxxx.html/000000.html<br /> <br /> 2012-12-01<br /> <br /> daily<br /> <br /> 0.8<br /> <br /> <br /> http://www.xxxxxx.html/000001.html<br /> 2012-12-01<br /> daily<br /> 0.8<br /> <br /> <br />
  txt文件格式:
  http://www.xxxxxx.html/1015626 ... %3Bbr />http://www.xxxxxx.html/1015862 ... %3Bbr />http://www.xxxxxx.html/1016394 ... %3Bbr />
  索引文件格式:(適用于數據較多的情況下。)
   <br /> <br /> <br /> http://www.example.com/1.xml<br /> 2012-12-01<br /> <br /> <br /> http://www.example.com/2.xml<br /> 2012-12-01<br /> <br /> <br />
  上面的loc 是其他的sitempa文件對象。因為上面已經(jīng)說(shuō)了一個(gè)文件不能超過(guò)10M。5萬(wàn)條數據。
  3. 搜狗收錄:
  搜狗搜索收錄就更簡(jiǎn)陋了。它默認不支持sitemap收錄。需要我們自己主動(dòng)收錄。
  也就是說(shuō)我們需要手動(dòng)在它的管理臺上填寫(xiě)url進(jìn)行收錄。
  
  除非你的網(wǎng)站權重高,主動(dòng)找官方給你開(kāi)通sitemap收錄。否則現在是沒(méi)有的。
  然后我們在上面主動(dòng)提交鏈接的話(huà),每天只能提交20條url。
  
  直接將我們的url 復制上去就可以了。
  到這里,我們的收錄就提交完畢了。剩下的就是等待搜索平臺審核鏈接了。
  之后需要慢慢等待了,注意更新你的網(wǎng)站內容。否則搜索引擎會(huì )判斷網(wǎng)站質(zhì)量不行減少收錄。
  我們提交的鏈接也不一定會(huì )全部進(jìn)行收錄。搜索引擎的算法會(huì )過(guò)濾和檢測我們的鏈接指向的網(wǎng)站資源。如果內容質(zhì)量太差或者已經(jīng)網(wǎng)上已經(jīng)存在了大量的相同的資料,那么就會(huì )被搜索算法拋棄掉。
  參考資料
  百度統計升級網(wǎng)頁(yè)實(shí)時(shí)推送至搜索引擎功能,提升網(wǎng)頁(yè)抓取速度!【吧】_百度貼吧 ()
  平臺工具使用手冊_普通收錄_搜索學(xué)堂_百度搜索資源平臺 ()
  主動(dòng)收錄中的自動(dòng)推送出錯且影響到首頁(yè)打開(kāi)速度了_360社區
  360自動(dòng)收錄的代碼還有用嗎?_360社區
  sitemap提交_360搜索使用幫助 ()

【干貨】企業(yè)級Nginx Web服務(wù)優(yōu)化實(shí)戰(上)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 82 次瀏覽 ? 2022-05-20 20:15 ? 來(lái)自相關(guān)話(huà)題

  【干貨】企業(yè)級Nginx Web服務(wù)優(yōu)化實(shí)戰(上)

  server_tokens參數的官方說(shuō)明如下:syntax: server_tokens on|off; #此行為參數語(yǔ)法,on為開(kāi)啟狀態(tài),off為關(guān)閉狀態(tài)default: server_tokens on; #此行意思是不配置該參數,軟件默認情況的結果context:????http,server,location????#此行為server_tokens參數可以放置的位置參數作用:激活或禁止Nginx的版本信息顯示在報錯信息和Server的響應首部位置中。
  官方資料地址:
  配置完畢后保存,重新加載配置文件,再次通過(guò)curl查看,結果如下:
  [root@LNMP nginx]# curl -I 192.168.0.220HTTP/1.1 200 OKServer: nginx #版本號已經(jīng)消失Date: Wed, 23 Aug 2017 11:22:15 GMTContent-Type: text/html; charset=UTF-8Connection: keep-aliveX-Powered-By: PHP/5.3.28Link:?;?rel="https://api.w.org/"
  <p><br />
  此時(shí),瀏覽器的報錯提示中沒(méi)有了版本號,如下圖所示,修改成功。</p>
  
  1.2 更改源碼隱藏Nginx軟件名及版本號
  隱藏了Nginx版本號后,更進(jìn)一步,可以通過(guò)一些手段把Web服務(wù)軟件的名稱(chēng)也隱藏起來(lái),或者更改為其他Web服務(wù)軟件名以迷惑黑客。但軟件名字的隱藏修改,一般情況下不會(huì )有配置參數和入口,Nginx也不例外,這可能是由于商業(yè)及品牌展示等原因,軟件提供商不希望使用者把軟件名字隱藏起來(lái)。因此,此處需要更改Nginx源代碼,具體的解決方法如下:
  1.2.1 第一步:依次修改3個(gè)Nginx源碼文件。
  修改的第一個(gè)文件為nginx-1.6.3/src/core/nginx.h,如下:
  [root@LNMP ~]# cd /usr/src/nginx-1.6.2/src/core/[root@LNMP core]# ls -l nginx.h-rw-r--r--. 1 1001 1001 351 Sep 16 2014 nginx.h[root@LNMP core]# sed -n '13,17p' nginx.h#define NGINX_VERSION "1.6.2" #修改為想要顯示的版本號#define NGINX_VER "nginx/" NGINX_VERSION#將nginx修改為想要修改的軟件名稱(chēng)。#define NGINX_VAR "NGINX" #將nginx修改為想要修改的軟件名稱(chēng)#define?NGX_OLDPID_EXT?????".oldbin"
  修改后的結果如下:<br />
  [root@LNMP core]# sed -n '13,17p' nginx.h#define NGINX_VERSION "0.0.0.0"#define NGINX_VER "yunjisuan/" NGINX_VERSION<br />#define NGINX_VAR "YUNJISUAN"#define NGX_OLDPID_EXT ".oldbin"
  修改的第二個(gè)文件是nginx-1.6.3/src/http/ngx_http_header_filter_module.c的第49行,需要修改的字符串內容如下:
  <br />
  ls -l /usr/src/nginx-1.6.2/src/http/ngx_http_header_filter_module.c -rw-r--r--. 1 1001 1001 19321 Sep 16 2014 /usr/src/nginx-1.6.2/src/http/ngx_http_header_filter_module.c[root@LNMP http]# grep -n 'Server: nginx' ngx_http_header_filter_module.c 49:static?char?ngx_http_server_string[]?=?"Server:?nginx"?CRLF;???????????#修改本行結尾的nginx
  通過(guò)sed替換修改,后如下:<br />
  [root@LNMP http]# grep -n 'Server: nginx' ngx_http_header_filter_module.c 49:static char ngx_http_server_string[] = "Server: nginx" CRLF;[root@LNMP http]# sed -i 's#Server: nginx#Server: yunjisuan#g' ngx_http_header_filter_module.c [root@LNMP http]# grep -n 'Server: yunjisuan' ngx_http_header_filter_module.c 49:static?char?ngx_http_server_string[]?=?"Server:?yunjisuan"?CRLF;
  修改的第三個(gè)文件是nginx-1.6.3/src/http/nginx_http_special_response.c,對面頁(yè)面報錯時(shí),它會(huì )控制是否展開(kāi)敏感信息。這里輸出修改前的信息ngx_http_special_response.c中的第21~30行,如下:
  [root@LNMP http]# sed -n '21,30p' ngx_http_special_response.c static u_char ngx_http_error_full_tail[] ="" NGINX_VER "" CRLF #此行需要修改"" CRLF"" CRLF;<br />static u_char ngx_http_error_tail[] ="nginx" CRLF #此行需要修改""?CRLF
  修改后的結果如下:<br />
  [root@LNMP nginx-1.6.2]# sed -n '21,32p' src/http/ngx_http_special_response.c static u_char ngx_http_error_full_tail[] ="" NGINX_VER " (Mr.chen 2018-08-26)" CRLF #此行是定義對外展示的內容"" CRLF"" CRLF;<br /><br />static u_char ngx_http_error_tail[] ="yunjisuan" CRLF #此行將對外展示的Nginx名字更改為yunjisuan"" CRLF"" CRLF;
  1.2.2 第二步是修改后編輯軟件,使其生效
  修改后再編譯安裝軟件,如果是已經(jīng)安裝好的服務(wù),需要重新編譯Nginx,配好配置,啟動(dòng)服務(wù)。
  再次使瀏覽器出現404錯誤,然后看訪(fǎng)問(wèn)結果,如下圖所示:
  
  如上面所示:Nginx的軟件和版本名都被改掉了,并且加上了本人的大名。
  再看看Linux curl命令響應頭部信息,如下:
  [root@LNMP conf]# curl -I localhost/xxx/HTTP/1.1 404 Not FoundServer: yunjisuan/0.0.0.0 #也更改了Date: Wed, 23 Aug 2017 15:33:54 GMTContent-Type: text/htmlContent-Length: 196Connection: keep-alive
  1.3 更改Nginx服務(wù)的默認用戶(hù)<br />
  [root@LNMP conf]# cd /usr/local/nginx/conf/[root@LNMP conf]# grep "#user" nginx.conf.default#user nobody;
  為了防止黑客猜到這個(gè)Web服務(wù)的用戶(hù),我們需要更改成特殊的用戶(hù)名,例如nginx或特殊點(diǎn)的inca,但是這個(gè)用戶(hù)必須是系統里事先存在的,下面以nginx用戶(hù)為例進(jìn)行說(shuō)明。
 ?。?)為Nginx服務(wù)建立新用戶(hù)
  useradd nginx -s /sbin/nologin -M#不需要有系統登錄權限,應當禁止登陸。
 ?。?)配置Nginx服務(wù),讓其使用剛建立的nginx用戶(hù)<br />
  更改Nginx服務(wù)默認使用用戶(hù),方法有二:
  第一種:直接更改配置文件參數,將默認的#user nobody;改為如下內容:
  user nginx nginx;
  如果注釋或不設置上述參數,默認為nobody用戶(hù),不推薦使用nobody用戶(hù)名,最好采用一個(gè)普通用戶(hù),此處用大家習慣的,前面建立好的nginx用戶(hù)。
  第二種:直接在編譯nginx軟件時(shí)指定編譯的用戶(hù)和組,命令如下:
  ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module<br />#提示:#前文在編譯Nginx服務(wù)時(shí),就是這樣帶著(zhù)參數的,因此無(wú)論配置文件中是否加參數,默認都是nginx用戶(hù)。
 ?。?)檢查更改用戶(hù)的效果<br />
  重新加載配置后,檢查Nginx服務(wù)進(jìn)程的對應用戶(hù),如下:
  [root@LNMP conf]# ps -ef | grep nginx | grep -v greproot 52023 1 0 11:30 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginxnginx?????52024??52023??0?11:30??????????00:00:00?nginx:?worker?process
  <p><br />
  通過(guò)查看上述更改后的Nginx進(jìn)程,可以看到worker processes進(jìn)程對應的用戶(hù)都變成了nginx。所以,我們有理由得出結論,上述的兩種方法都可設置Nginx的worker進(jìn)程運行的用戶(hù)。當然,Nginx的主進(jìn)程還是以root身份運行的。</p>
  二,根據參數優(yōu)化Nginx服務(wù)性能2.1 優(yōu)化Nginx服務(wù)的worker進(jìn)程個(gè)數2.1.1 優(yōu)化Nginx進(jìn)程對應的配置
  #優(yōu)化Nginx進(jìn)程對應Nginx服務(wù)的配置參數如下:worker_processes 1; #指定了Nginx要開(kāi)啟的進(jìn)程數,結尾數字就是進(jìn)程個(gè)數<br />上述參數調整的是Nginx服務(wù)的worker進(jìn)程數,Nginx有Master進(jìn)程和worker進(jìn)程之分,Master為管理進(jìn)程,真正接待“顧客”的是worker進(jìn)程。
  <p><br /></p>
  2.1.2 優(yōu)化Nginx進(jìn)程個(gè)數的策略2.1.3 查看Web服務(wù)器CPU硬件資源信息
  下面介紹查看Linux服務(wù)器CPU總核數的方法:
 ?。?)通過(guò)/proc/cpuinfo可查看CPU個(gè)數及總核數。查看CPU總核數的示例如下:
  [root@LNMP ~]# grep processor /proc/cpuinfo processor : 0processor : 1processor : 2processor : 3[root@LNMP ~]# grep processor /proc/cpuinfo | wc -l4 #表示為1顆CPU四核[root@LNMP ~]# grep -c processor /proc/cpuinfo4 #表示為1顆CPU四核<br />#查看CPU總顆數示例如下:[root@LNMP ~]# grep "physical id" /proc/cpuinfo physical id : 0 #物理ID一致,同一顆CPUphysical id : 0 #物理ID一致,同一顆CPUphysical id : 0 #物理ID一致,同一顆CPUphysical id : 0 #物理ID一致,同一顆CPU[root@LNMP ~]# grep "physical id" /proc/cpuinfo | sort | uniq | wc -l1???????????????#去重復,表示1顆CPU
 ?。?)通過(guò)執行top命令,然后按數字1,即可顯示所有的CPU核數,如下:
  
  2.1.4 實(shí)踐修改Nginx配置
  假設服務(wù)器的CPU顆數為1顆,核數為4核,則初始的配置可通過(guò)查看默認的nginx.conf里的worker_processes數來(lái)了解,命令如下:
  [root@LNMP ~]# grep worker_processes /usr/local/nginx/conf/nginx.confworker_processes 1;[root@LNMP ~]# sed -i 's#worker_processes 1#worker_processes 4#' /usr/local/nginx/conf/nginx.conf[root@LNMP ~]# grep worker_processes /usr/local/nginx/conf/nginx.confworker_processes 4; #提示可以通過(guò)vi修改
  <br />
  #優(yōu)雅重啟Nginx,使修改生效,如下:[root@LNMP ~]# /usr/local/nginx/sbin/nginx -tnginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is oknginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful[root@LNMP ~]# /usr/local/nginx/sbin/nginx -s reload
  <br />
  #現在檢查修改后的worker進(jìn)程數量,如下:[root@LNMP ~]# ps -ef | grep "nginx" | grep -v greproot 1110 1 0 11:12 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginxnginx 1429 1110 0 11:33 ? 00:00:00 nginx: worker process nginx 1430 1110 0 11:33 ? 00:00:00 nginx: worker process nginx 1431 1110 0 11:33 ? 00:00:00 nginx: worker process nginx??????1432???1110??0?11:33??????????00:00:00?nginx:?worker?process
  從“worker_processes 4”可知,worker進(jìn)程數為4個(gè)。Nginx Master主進(jìn)程不包含在這個(gè)參數內,Nginx Master的主進(jìn)程為管理進(jìn)程,負責調度和管理worker進(jìn)程。
  有關(guān)worker_processes參數的官方說(shuō)明如下:
  syntax: worker_processes number; #此行為參數語(yǔ)法,number為數量default: worker_processes 1; #此行意思是不匹配該參數,軟件默認情況數量為1context: main; #此行為worker_processes參數可以放置的位置worker_processes為定義worker進(jìn)程數的數量,建議設置為CPU的核數或CPU核數*2,具體情況要根據實(shí)際的業(yè)務(wù)來(lái)選擇,因為這個(gè)參數,除了要和CPU核數匹配外,和硬盤(pán)存儲的數據以系統的負載也有關(guān),設置為CPU的個(gè)數或核數是一個(gè)好的起始配置。From:http://nginx.org/en/docs/ngx_core_module.html
  <p><br /></p>
  2.2 優(yōu)化綁定不同的Nginx進(jìn)程到不同的CPU上
  worker_processes 4;worker_cpu_affinity 0001 0010 0100 1000;<br />#worker_cpu_affinity就是配置Nginx進(jìn)程與CPU親和力的參數,即把不同的進(jìn)程分給不同的CPU處理。這里0001?0010?0100?1000是掩碼,分別代表第1,2,3,4核CPU,由于worker_processes進(jìn)程數為4,因此,上述配置會(huì )把每個(gè)進(jìn)程分配一核CPU處理,默認情況下進(jìn)程不會(huì )綁定任何CPU,參數位置為main段。
  四核和八核CPU服務(wù)器的參數配置參考如下:<br />
  #八核掩碼worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;<br />#四核掩碼worker_cpu_affinity 0001 0010 0100 1000;<br />worker_cpu_affinity 的作用是綁定不同的worker進(jìn)程數到一組CPU上。通過(guò)設置bitmask控制進(jìn)程允許使用的CPU,默認worker進(jìn)程不會(huì )綁定到任何CPU(自動(dòng)平均分配。)
  <p><br /></p>
  2.2.1 實(shí)驗環(huán)境準備主機名IP地址備注
  Nginx
  192.168.0.220
  nginxWeb
  測試機1
  192.168.0.240
  Webbench壓力測試
  測試機2
  192.168.0.245
  Webbench壓力測試
  #安裝webbenchtar xf webbench-1.5.tar.gz cd webbench-1.5mkdir /usr/local/manmake install cleanwhich webbench.
  虛擬機開(kāi)啟4核心<br />
  
  2.2.2 第一步:不綁定worker進(jìn)程進(jìn)行壓力測試
  #配置文件如下:(未綁定worker進(jìn)程)<br />
  [root@LNMP nginx]# cat conf/nginx.confworker_processes 4;#worker_cpu_affinity 0001 0010 0100 1000;events { worker_connections 10240;}http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name bbs.yunjisuan.com; location / { root html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }}
  #在NginxWeb上執行如下命令:<br />
  [root@LNMP nginx]# top -u nginxTasks: 120 total, 1 running, 119 sleeping, 0 stopped, 0 zombieCpu(s): 0.0%us, 0.2%sy, 0.0%ni, 99.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%stMem: 1004412k total, 911632k used, 92780k free, 6952k buffersSwap: 2031608k total, 0k used, 2031608k free, 749976k cached<br /> PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1454 nginx 20 0 49240 5640 468 S 0.0 0.6 0:00.00 nginx 1455 nginx 20 0 49240 5672 500 S 0.0 0.6 0:00.00 nginx 1456 nginx 20 0 49240 5672 500 S 0.0 0.6 0:00.00 nginx ??1457?nginx?????20???0?49240?5672??500?S??0.0??0.6???0:00.00?nginx??
  #在以上界面時(shí)按鍵盤(pán)的數值1鍵,出現如下界面:<br />
  top - 14:44:46 up 36 min, 1 user, load average: 0.00, 0.00, 0.00Tasks: 120 total, 1 running, 119 sleeping, 0 stopped, 0 zombieCpu0 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%stCpu1 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%stCpu2 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%stCpu3 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%stMem: 1004412k total, 911384k used, 93028k free, 6960k buffersSwap: 2031608k total, 0k used, 2031608k free, 749976k cached<br /> PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1454 nginx 20 0 49240 5640 468 S 0.0 0.6 0:00.00 nginx 1455 nginx 20 0 49240 5672 500 S 0.0 0.6 0:00.00 nginx 1456 nginx 20 0 49240 5672 500 S 0.0 0.6 0:00.00 nginx ??1457?nginx?????20???0?49240?5672??500?S??0.0??0.6???0:00.00?nginx
  在另外的兩臺測試機器上同時(shí)進(jìn)行壓力測試,命令如下:
  webbench -c 2000 -t 60 http://192.168.0.220/
  結果如下:
  
  2.2.3 第二步:綁定worker進(jìn)程進(jìn)行壓力測試
  #配置文件如下(綁定worker進(jìn)程)<br />
  [root@LNMP nginx]# cat conf/nginx.confworker_processes 4;worker_cpu_affinity 0001 0010 0100 1000; #修改本行events { worker_connections 1024;}http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name bbs.yunjisuan.com; location / { root html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }}
  在另外的兩臺測試機器上同時(shí)進(jìn)行壓力測試,命令如下:<br />
  webbench -c 2000 -t 60 http://192.168.0.220/
  結果如下:
  
  根據圖示,我們基本可以看出,平均綁定worker進(jìn)程和不綁定的實(shí)驗效果基本是一致的(CPU0是默認會(huì )被使用的)。原因在nginx在經(jīng)過(guò)不斷的優(yōu)化后,會(huì )自動(dòng)對worker進(jìn)程進(jìn)行動(dòng)態(tài)的平均分配。
  2.2.4 第三步:修改nginx配置,將所有worker進(jìn)程綁定到CPU3上
  #配置文件如下所示:<br />
  [root@LNMP nginx]# cat conf/nginx.confworker_processes 4;worker_cpu_affinity 1000 1000 1000 1000; #修改本行events { worker_connections 1024;}http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name bbs.yunjisuan.com; location / { root html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }}
  在另外的兩臺測試機器上同時(shí)進(jìn)行壓力測試,命令如下:
  webbench -c 2000 -t 60 http://192.168.0.220/
  結果如下:
  
  從上圖我們可以得知,worker進(jìn)程的壓力被集中分配到了CPU3上。(CPU0是默認被使用的)
  2.3 Nginx事件處理模型優(yōu)化
  #具體的配置參數如下:<br />
  events #events指令是設定Nginx的工作模式及連接數上限{ use epoll;#use是一個(gè)事件模塊指令,用來(lái)指定Nginx的工作模式。Nginx支持的工作模式有select,poll,kqueue,epoll,rtsig和/dev/poll。其中select和poll都是標準的工作模式,kqueue和epoll是高效的工作模式,不同的是epoll用在Linux平臺上,而kqueue用在BSD系統中。對于Linux系統Linux2.6+內核,推薦選擇epoll工作模式,這是高性能高并發(fā)的設置}
  根據Nginx官方文檔建議,也可以不指定事件處理模型,Nginx會(huì )自動(dòng)選擇最佳的事件處理模型服務(wù)。
  對于使用連接進(jìn)程的方法,通常不需要進(jìn)行任何設置,Nginx會(huì )自動(dòng)選擇最有效辦法。
  2.4 調整Nginx單個(gè)進(jìn)程允許的客戶(hù)端最大連接數
  接下來(lái),調整Nginx單個(gè)進(jìn)程允許的客戶(hù)端最大連接數,這個(gè)控制連接數的參數為work_connections。
  worker_connections的值要根據具體服務(wù)器性能和程序的內存使用量來(lái)指定(一個(gè)進(jìn)程啟動(dòng)使用的內存根據程序確定),如下:
  events #events指令是設定Nginx的工作模式和連接數上線(xiàn){ worker_connections 20480; #worker_connections也是個(gè)事件模塊指令,用于定義Nginx每個(gè)進(jìn)程的最大連接數,默認是1024.最大客戶(hù)端連接數由worker_processes和worker_connections決定,即Max_client= worker_processes*worker_connections。進(jìn)程的最大連接數受Linux系統進(jìn)程的最大打開(kāi)文件數限制,在執行操作系統命令“ulimit -HSn 65535”或配置相應文件后,worker_connections的設置才能生效。}
  下面是worker_connections的官方說(shuō)明<br />
  參數語(yǔ)法:worker_connections number
  默認配置:worker_connections 512
  放置位置:events
  說(shuō)明:
  worker_connections用來(lái)設置一個(gè)worker process支持的最大并發(fā)連接數,這個(gè)連接數包括了所有鏈接,例如:代理服務(wù)器的連接,客戶(hù)端的連接等,實(shí)際的并發(fā)連接數除了受worker_connections參數控制外,還和最大打開(kāi)文件數worker_rlimit_nofile有關(guān)(見(jiàn)下文),Nginx總并發(fā)連接=worker數量*worker_connections。
  參考資料:
  2.5 配置Nginx worker進(jìn)程最大打開(kāi)文件數
  接下來(lái),調整配置Nginx worker進(jìn)程的最大打開(kāi)文件數,這個(gè)控制連接數的參數為worker_rlimit_nofile。該參數的實(shí)際配置如下:
  worker_rlimit_nofile 65535;#最大打開(kāi)文件數,可設置為系統優(yōu)化后的ulimit -HSn的結果
  下面是worker_rlimit_nofile number的官方說(shuō)明:<br />
  參數語(yǔ)法:worker_rlimit_nofile number
  默認配置:無(wú)
  放置位置:主標簽段
  說(shuō)明:此參數的作用是改變worker processes能打開(kāi)的最大文件數
  參考資料:
  備注:
  Linux系統文件最大打開(kāi)數設置:ulimit -n 65535
  2.5.1 實(shí)驗環(huán)境準備主機名IP地址備注
  Nginx
  192.168.0.220
  nginxWeb
  測試機1
  192.168.0.240
  Webbench壓力測試
  測試機2
  192.168.0.245
  Webbench壓力測試
  2.5.2 修改nginx.conf配置文件
  [root@LNMP nginx]# cat conf/nginx.confworker_processes 1;#worker_cpu_affinity 0000 0010 0100 1000;#worker_rlimit_nofile 65535;events { worker_connections 1024;}http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name bbs.yunjisuan.com; location / { root html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }}
  先定1核1024連接數。同學(xué)們注意多開(kāi)幾個(gè)虛擬機進(jìn)行壓力測試。不然的話(huà),web服務(wù)器還沒(méi)出問(wèn)題,你測試服務(wù)器先down掉了。
  2.5.2 測試nginx服務(wù)連接數的極值
  #使用這個(gè)命令可以抓取nginx的連接數[root@LNMP nginx]# netstat -antp | grep nginx | wc -l554[root@LNMP nginx]# netstat -antp | grep nginx | wc -l471
  逐漸提高壓力,抓連接數,看看nginx啥時(shí)候down
  2.6 開(kāi)啟高效文件傳輸模式
 ?。?)設置參數:sendfile on;
  sendfile參數用于開(kāi)啟文件的高效傳輸模式。同時(shí)將tcp_nopush和tcp_nodelay兩個(gè)指令設置為on,可防止網(wǎng)絡(luò )及磁盤(pán)I/O阻塞,提升Nginx工作效率。
  #sendfile參數的官方說(shuō)明如下:syntax: sendfile on | off; #參數語(yǔ)法default: sendfile off; #參數默認大小context: http,server,location,if in location #可以放置的標簽段
  參數作用:
  激活或禁用sendfile()功能功能。sendfile()是作用于兩個(gè)文件描述符之間的數據拷貝函數,這個(gè)拷貝操作是在內核之中的,被稱(chēng)為“零拷貝”,sendfile()比read和write函數要高效很多,因為,read和write函數要把數據拷貝到應用層再進(jìn)行操作。相關(guān)控制參數還有sendfile_max_chunk,同學(xué)們可以執行查詢(xún)。細節見(jiàn)#sendfile
 ?。?)設置參數:tcp_nopush on;
  #tcp_nopush參數的官方說(shuō)明如下:syntax: tcp_nopush on | off; #參數語(yǔ)法default: tcp_nopush off; #參數默認大小context:????http,server,location????#可以放置的標簽段
  <p><br /></p>
  參數作用:?激活或禁用Linux上的TCP_CORK socket選項,此選項僅僅當開(kāi)啟sendfile時(shí)才生效,激活這個(gè)tcp_nopush參數可以允許把http response header和文件的開(kāi)始部分放在一個(gè)文件里發(fā)布,其積極的作用是減少網(wǎng)絡(luò )報文段的數量。細節見(jiàn)http://nginx.org/en/docs/http/ ... .html。
  2.7 優(yōu)化Nginx連接參數,調整連接超時(shí)時(shí)間
  2.7.1 什么是連接超時(shí)2.7.2 連接超時(shí)的作用
  簡(jiǎn)單的說(shuō),連接超時(shí)是服務(wù)的一種自我管理,自我保護的重要機制。
  2.7.3 連接超時(shí)帶來(lái)的問(wèn)題,以及不同程序連接設定知識2.7.4 Nginx連接超時(shí)的參數設置
 ?。?)設置參數:keepalive_timeout 60;
  用于設置客戶(hù)端連接保持會(huì )話(huà)的超時(shí)時(shí)間為60秒。超過(guò)這個(gè)時(shí)間,服務(wù)器會(huì )關(guān)閉該連接,此數值為參考值。
  keepalive_timeout參數的官方說(shuō)明如下:syntax: keepalive_timeout timeout [header_timeout] #參數語(yǔ)法default: keepalive_timeout 75s; #參數默認大小context: http,serverr,location #可以放置的標簽段
  參數作用:
 ?。?)設置參數:tcp_nodelay on;
  用于激活tcp_ondelay功能,提高I/O性能。
  #tcp_nodelay參數的官方說(shuō)明如下:syntax: tcp_nodelay on | off #參數語(yǔ)法default: tcp_nodelay on; #參數默認大小context: http,server,location #可以放置的標簽段
  參數作用:
  默認情況下當數據發(fā)送時(shí),內核并不會(huì )馬上發(fā)送,可能會(huì )等待更多的字節組成一個(gè)數據包,這樣可以提高I/O性能。但是,在每次只發(fā)送很少字節的業(yè)務(wù)場(chǎng)景中,使用tcp_nodelay功能,等待時(shí)間會(huì )比較長(cháng)。
  參數生效條件:
  激活或禁用TCP_NODELAY選項,當一個(gè)連接進(jìn)入keep-alive狀態(tài)時(shí)生效。細節見(jiàn)。
 ?。?)設置參數:client_header_timeout 15;
  用于設置讀取客戶(hù)端請求頭數據的超時(shí)時(shí)間。此處的數值15,其單位是秒,為經(jīng)驗參考值。
  #client_header_timeout參數的官方說(shuō)明如下:syntax: client_header_timeout time; #參數語(yǔ)法default: client_header_timeout 60s; #參數默認大小context: http,server #可以放置的標簽段
  參數作用:
  設置讀取客戶(hù)端請求頭數據的超時(shí)時(shí)間。如果超過(guò)這個(gè)時(shí)間,客戶(hù)端還沒(méi)有發(fā)送完整的header數據,服務(wù)器端將返回“Request time out (408)”錯誤,可指定一個(gè)超時(shí)時(shí)間,防止客戶(hù)端利用http協(xié)議進(jìn)行攻擊。細節見(jiàn):。
 ?。?)設置參數:client_body_timeout 15;
  用于設置讀取客戶(hù)端請求主體的超時(shí)時(shí)間,默認值60
  #client_body_timeout參數的官方說(shuō)明如下:syntax: client_body_timeout time; #參數語(yǔ)法default: client_body_timeout 60s; #默認60context: http,server,location #可以放置的標簽段
  參數作用:
  設置讀取客戶(hù)端請求主體的超時(shí)時(shí)間。這個(gè)超時(shí)僅僅為兩次成功的讀取操作之間的一個(gè)超時(shí),非請求整個(gè)主體數據的超時(shí)時(shí)間,如果在這個(gè)超時(shí)時(shí)間內,客戶(hù)端沒(méi)有發(fā)送任何數據,Nginx將返回“Request time out(408)”錯誤,默認值60,細節見(jiàn):
 ?。?)設置參數:send_timeout 25;
  用于指定響應客戶(hù)端的超時(shí)時(shí)間。這個(gè)超時(shí)僅限于兩個(gè)連接活動(dòng)之間的時(shí)間,如果超過(guò)這個(gè)時(shí)間,客戶(hù)端沒(méi)有任何活動(dòng),Nginx將會(huì )關(guān)閉連接,默認值為60秒,可以改為參考值25秒。
  #send_timeout參數的官方說(shuō)明如下:syntax: send_timeout time; #參數語(yǔ)法default: send_timeout 60s; #默認值60context: http,server,location #可以放置的標簽段
  參數作用: 查看全部

  【干貨】企業(yè)級Nginx Web服務(wù)優(yōu)化實(shí)戰(上)

  server_tokens參數的官方說(shuō)明如下:syntax: server_tokens on|off; #此行為參數語(yǔ)法,on為開(kāi)啟狀態(tài),off為關(guān)閉狀態(tài)default: server_tokens on; #此行意思是不配置該參數,軟件默認情況的結果context:????http,server,location????#此行為server_tokens參數可以放置的位置參數作用:激活或禁止Nginx的版本信息顯示在報錯信息和Server的響應首部位置中。
  官方資料地址:
  配置完畢后保存,重新加載配置文件,再次通過(guò)curl查看,結果如下:
  [root@LNMP nginx]# curl -I 192.168.0.220HTTP/1.1 200 OKServer: nginx #版本號已經(jīng)消失Date: Wed, 23 Aug 2017 11:22:15 GMTContent-Type: text/html; charset=UTF-8Connection: keep-aliveX-Powered-By: PHP/5.3.28Link:?;?rel="https://api.w.org/"
  <p><br />
  此時(shí),瀏覽器的報錯提示中沒(méi)有了版本號,如下圖所示,修改成功。</p>
  
  1.2 更改源碼隱藏Nginx軟件名及版本號
  隱藏了Nginx版本號后,更進(jìn)一步,可以通過(guò)一些手段把Web服務(wù)軟件的名稱(chēng)也隱藏起來(lái),或者更改為其他Web服務(wù)軟件名以迷惑黑客。但軟件名字的隱藏修改,一般情況下不會(huì )有配置參數和入口,Nginx也不例外,這可能是由于商業(yè)及品牌展示等原因,軟件提供商不希望使用者把軟件名字隱藏起來(lái)。因此,此處需要更改Nginx源代碼,具體的解決方法如下:
  1.2.1 第一步:依次修改3個(gè)Nginx源碼文件。
  修改的第一個(gè)文件為nginx-1.6.3/src/core/nginx.h,如下:
  [root@LNMP ~]# cd /usr/src/nginx-1.6.2/src/core/[root@LNMP core]# ls -l nginx.h-rw-r--r--. 1 1001 1001 351 Sep 16 2014 nginx.h[root@LNMP core]# sed -n '13,17p' nginx.h#define NGINX_VERSION "1.6.2" #修改為想要顯示的版本號#define NGINX_VER "nginx/" NGINX_VERSION#將nginx修改為想要修改的軟件名稱(chēng)。#define NGINX_VAR "NGINX" #將nginx修改為想要修改的軟件名稱(chēng)#define?NGX_OLDPID_EXT?????".oldbin"
  修改后的結果如下:<br />
  [root@LNMP core]# sed -n '13,17p' nginx.h#define NGINX_VERSION "0.0.0.0"#define NGINX_VER "yunjisuan/" NGINX_VERSION<br />#define NGINX_VAR "YUNJISUAN"#define NGX_OLDPID_EXT ".oldbin"
  修改的第二個(gè)文件是nginx-1.6.3/src/http/ngx_http_header_filter_module.c的第49行,需要修改的字符串內容如下:
  <br />
  ls -l /usr/src/nginx-1.6.2/src/http/ngx_http_header_filter_module.c -rw-r--r--. 1 1001 1001 19321 Sep 16 2014 /usr/src/nginx-1.6.2/src/http/ngx_http_header_filter_module.c[root@LNMP http]# grep -n 'Server: nginx' ngx_http_header_filter_module.c 49:static?char?ngx_http_server_string[]?=?"Server:?nginx"?CRLF;???????????#修改本行結尾的nginx
  通過(guò)sed替換修改,后如下:<br />
  [root@LNMP http]# grep -n 'Server: nginx' ngx_http_header_filter_module.c 49:static char ngx_http_server_string[] = "Server: nginx" CRLF;[root@LNMP http]# sed -i 's#Server: nginx#Server: yunjisuan#g' ngx_http_header_filter_module.c [root@LNMP http]# grep -n 'Server: yunjisuan' ngx_http_header_filter_module.c 49:static?char?ngx_http_server_string[]?=?"Server:?yunjisuan"?CRLF;
  修改的第三個(gè)文件是nginx-1.6.3/src/http/nginx_http_special_response.c,對面頁(yè)面報錯時(shí),它會(huì )控制是否展開(kāi)敏感信息。這里輸出修改前的信息ngx_http_special_response.c中的第21~30行,如下:
  [root@LNMP http]# sed -n '21,30p' ngx_http_special_response.c static u_char ngx_http_error_full_tail[] ="" NGINX_VER "" CRLF #此行需要修改"" CRLF"" CRLF;<br />static u_char ngx_http_error_tail[] ="nginx" CRLF #此行需要修改""?CRLF
  修改后的結果如下:<br />
  [root@LNMP nginx-1.6.2]# sed -n '21,32p' src/http/ngx_http_special_response.c static u_char ngx_http_error_full_tail[] ="" NGINX_VER " (Mr.chen 2018-08-26)" CRLF #此行是定義對外展示的內容"" CRLF"" CRLF;<br /><br />static u_char ngx_http_error_tail[] ="yunjisuan" CRLF #此行將對外展示的Nginx名字更改為yunjisuan"" CRLF"" CRLF;
  1.2.2 第二步是修改后編輯軟件,使其生效
  修改后再編譯安裝軟件,如果是已經(jīng)安裝好的服務(wù),需要重新編譯Nginx,配好配置,啟動(dòng)服務(wù)。
  再次使瀏覽器出現404錯誤,然后看訪(fǎng)問(wèn)結果,如下圖所示:
  
  如上面所示:Nginx的軟件和版本名都被改掉了,并且加上了本人的大名。
  再看看Linux curl命令響應頭部信息,如下:
  [root@LNMP conf]# curl -I localhost/xxx/HTTP/1.1 404 Not FoundServer: yunjisuan/0.0.0.0 #也更改了Date: Wed, 23 Aug 2017 15:33:54 GMTContent-Type: text/htmlContent-Length: 196Connection: keep-alive
  1.3 更改Nginx服務(wù)的默認用戶(hù)<br />
  [root@LNMP conf]# cd /usr/local/nginx/conf/[root@LNMP conf]# grep "#user" nginx.conf.default#user nobody;
  為了防止黑客猜到這個(gè)Web服務(wù)的用戶(hù),我們需要更改成特殊的用戶(hù)名,例如nginx或特殊點(diǎn)的inca,但是這個(gè)用戶(hù)必須是系統里事先存在的,下面以nginx用戶(hù)為例進(jìn)行說(shuō)明。
 ?。?)為Nginx服務(wù)建立新用戶(hù)
  useradd nginx -s /sbin/nologin -M#不需要有系統登錄權限,應當禁止登陸。
  (2)配置Nginx服務(wù),讓其使用剛建立的nginx用戶(hù)<br />
  更改Nginx服務(wù)默認使用用戶(hù),方法有二:
  第一種:直接更改配置文件參數,將默認的#user nobody;改為如下內容:
  user nginx nginx;
  如果注釋或不設置上述參數,默認為nobody用戶(hù),不推薦使用nobody用戶(hù)名,最好采用一個(gè)普通用戶(hù),此處用大家習慣的,前面建立好的nginx用戶(hù)。
  第二種:直接在編譯nginx軟件時(shí)指定編譯的用戶(hù)和組,命令如下:
  ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module<br />#提示:#前文在編譯Nginx服務(wù)時(shí),就是這樣帶著(zhù)參數的,因此無(wú)論配置文件中是否加參數,默認都是nginx用戶(hù)。
  (3)檢查更改用戶(hù)的效果<br />
  重新加載配置后,檢查Nginx服務(wù)進(jìn)程的對應用戶(hù),如下:
  [root@LNMP conf]# ps -ef | grep nginx | grep -v greproot 52023 1 0 11:30 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginxnginx?????52024??52023??0?11:30??????????00:00:00?nginx:?worker?process
  <p><br />
  通過(guò)查看上述更改后的Nginx進(jìn)程,可以看到worker processes進(jìn)程對應的用戶(hù)都變成了nginx。所以,我們有理由得出結論,上述的兩種方法都可設置Nginx的worker進(jìn)程運行的用戶(hù)。當然,Nginx的主進(jìn)程還是以root身份運行的。</p>
  二,根據參數優(yōu)化Nginx服務(wù)性能2.1 優(yōu)化Nginx服務(wù)的worker進(jìn)程個(gè)數2.1.1 優(yōu)化Nginx進(jìn)程對應的配置
  #優(yōu)化Nginx進(jìn)程對應Nginx服務(wù)的配置參數如下:worker_processes 1; #指定了Nginx要開(kāi)啟的進(jìn)程數,結尾數字就是進(jìn)程個(gè)數<br />上述參數調整的是Nginx服務(wù)的worker進(jìn)程數,Nginx有Master進(jìn)程和worker進(jìn)程之分,Master為管理進(jìn)程,真正接待“顧客”的是worker進(jìn)程。
  <p><br /></p>
  2.1.2 優(yōu)化Nginx進(jìn)程個(gè)數的策略2.1.3 查看Web服務(wù)器CPU硬件資源信息
  下面介紹查看Linux服務(wù)器CPU總核數的方法:
 ?。?)通過(guò)/proc/cpuinfo可查看CPU個(gè)數及總核數。查看CPU總核數的示例如下:
  [root@LNMP ~]# grep processor /proc/cpuinfo processor : 0processor : 1processor : 2processor : 3[root@LNMP ~]# grep processor /proc/cpuinfo | wc -l4 #表示為1顆CPU四核[root@LNMP ~]# grep -c processor /proc/cpuinfo4 #表示為1顆CPU四核<br />#查看CPU總顆數示例如下:[root@LNMP ~]# grep "physical id" /proc/cpuinfo physical id : 0 #物理ID一致,同一顆CPUphysical id : 0 #物理ID一致,同一顆CPUphysical id : 0 #物理ID一致,同一顆CPUphysical id : 0 #物理ID一致,同一顆CPU[root@LNMP ~]# grep "physical id" /proc/cpuinfo | sort | uniq | wc -l1???????????????#去重復,表示1顆CPU
 ?。?)通過(guò)執行top命令,然后按數字1,即可顯示所有的CPU核數,如下:
  
  2.1.4 實(shí)踐修改Nginx配置
  假設服務(wù)器的CPU顆數為1顆,核數為4核,則初始的配置可通過(guò)查看默認的nginx.conf里的worker_processes數來(lái)了解,命令如下:
  [root@LNMP ~]# grep worker_processes /usr/local/nginx/conf/nginx.confworker_processes 1;[root@LNMP ~]# sed -i 's#worker_processes 1#worker_processes 4#' /usr/local/nginx/conf/nginx.conf[root@LNMP ~]# grep worker_processes /usr/local/nginx/conf/nginx.confworker_processes 4; #提示可以通過(guò)vi修改
  <br />
  #優(yōu)雅重啟Nginx,使修改生效,如下:[root@LNMP ~]# /usr/local/nginx/sbin/nginx -tnginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is oknginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful[root@LNMP ~]# /usr/local/nginx/sbin/nginx -s reload
  <br />
  #現在檢查修改后的worker進(jìn)程數量,如下:[root@LNMP ~]# ps -ef | grep "nginx" | grep -v greproot 1110 1 0 11:12 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginxnginx 1429 1110 0 11:33 ? 00:00:00 nginx: worker process nginx 1430 1110 0 11:33 ? 00:00:00 nginx: worker process nginx 1431 1110 0 11:33 ? 00:00:00 nginx: worker process nginx??????1432???1110??0?11:33??????????00:00:00?nginx:?worker?process
  從“worker_processes 4”可知,worker進(jìn)程數為4個(gè)。Nginx Master主進(jìn)程不包含在這個(gè)參數內,Nginx Master的主進(jìn)程為管理進(jìn)程,負責調度和管理worker進(jìn)程。
  有關(guān)worker_processes參數的官方說(shuō)明如下:
  syntax: worker_processes number; #此行為參數語(yǔ)法,number為數量default: worker_processes 1; #此行意思是不匹配該參數,軟件默認情況數量為1context: main; #此行為worker_processes參數可以放置的位置worker_processes為定義worker進(jìn)程數的數量,建議設置為CPU的核數或CPU核數*2,具體情況要根據實(shí)際的業(yè)務(wù)來(lái)選擇,因為這個(gè)參數,除了要和CPU核數匹配外,和硬盤(pán)存儲的數據以系統的負載也有關(guān),設置為CPU的個(gè)數或核數是一個(gè)好的起始配置。From:http://nginx.org/en/docs/ngx_core_module.html
  <p><br /></p>
  2.2 優(yōu)化綁定不同的Nginx進(jìn)程到不同的CPU上
  worker_processes 4;worker_cpu_affinity 0001 0010 0100 1000;<br />#worker_cpu_affinity就是配置Nginx進(jìn)程與CPU親和力的參數,即把不同的進(jìn)程分給不同的CPU處理。這里0001?0010?0100?1000是掩碼,分別代表第1,2,3,4核CPU,由于worker_processes進(jìn)程數為4,因此,上述配置會(huì )把每個(gè)進(jìn)程分配一核CPU處理,默認情況下進(jìn)程不會(huì )綁定任何CPU,參數位置為main段。
  四核和八核CPU服務(wù)器的參數配置參考如下:<br />
  #八核掩碼worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;<br />#四核掩碼worker_cpu_affinity 0001 0010 0100 1000;<br />worker_cpu_affinity 的作用是綁定不同的worker進(jìn)程數到一組CPU上。通過(guò)設置bitmask控制進(jìn)程允許使用的CPU,默認worker進(jìn)程不會(huì )綁定到任何CPU(自動(dòng)平均分配。)
  <p><br /></p>
  2.2.1 實(shí)驗環(huán)境準備主機名IP地址備注
  Nginx
  192.168.0.220
  nginxWeb
  測試機1
  192.168.0.240
  Webbench壓力測試
  測試機2
  192.168.0.245
  Webbench壓力測試
  #安裝webbenchtar xf webbench-1.5.tar.gz cd webbench-1.5mkdir /usr/local/manmake install cleanwhich webbench.
  虛擬機開(kāi)啟4核心<br />
  
  2.2.2 第一步:不綁定worker進(jìn)程進(jìn)行壓力測試
  #配置文件如下:(未綁定worker進(jìn)程)<br />
  [root@LNMP nginx]# cat conf/nginx.confworker_processes 4;#worker_cpu_affinity 0001 0010 0100 1000;events { worker_connections 10240;}http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name bbs.yunjisuan.com; location / { root html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }}
  #在NginxWeb上執行如下命令:<br />
  [root@LNMP nginx]# top -u nginxTasks: 120 total, 1 running, 119 sleeping, 0 stopped, 0 zombieCpu(s): 0.0%us, 0.2%sy, 0.0%ni, 99.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%stMem: 1004412k total, 911632k used, 92780k free, 6952k buffersSwap: 2031608k total, 0k used, 2031608k free, 749976k cached<br /> PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1454 nginx 20 0 49240 5640 468 S 0.0 0.6 0:00.00 nginx 1455 nginx 20 0 49240 5672 500 S 0.0 0.6 0:00.00 nginx 1456 nginx 20 0 49240 5672 500 S 0.0 0.6 0:00.00 nginx ??1457?nginx?????20???0?49240?5672??500?S??0.0??0.6???0:00.00?nginx??
  #在以上界面時(shí)按鍵盤(pán)的數值1鍵,出現如下界面:<br />
  top - 14:44:46 up 36 min, 1 user, load average: 0.00, 0.00, 0.00Tasks: 120 total, 1 running, 119 sleeping, 0 stopped, 0 zombieCpu0 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%stCpu1 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%stCpu2 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%stCpu3 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%stMem: 1004412k total, 911384k used, 93028k free, 6960k buffersSwap: 2031608k total, 0k used, 2031608k free, 749976k cached<br /> PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1454 nginx 20 0 49240 5640 468 S 0.0 0.6 0:00.00 nginx 1455 nginx 20 0 49240 5672 500 S 0.0 0.6 0:00.00 nginx 1456 nginx 20 0 49240 5672 500 S 0.0 0.6 0:00.00 nginx ??1457?nginx?????20???0?49240?5672??500?S??0.0??0.6???0:00.00?nginx
  在另外的兩臺測試機器上同時(shí)進(jìn)行壓力測試,命令如下:
  webbench -c 2000 -t 60 http://192.168.0.220/
  結果如下:
  
  2.2.3 第二步:綁定worker進(jìn)程進(jìn)行壓力測試
  #配置文件如下(綁定worker進(jìn)程)<br />
  [root@LNMP nginx]# cat conf/nginx.confworker_processes 4;worker_cpu_affinity 0001 0010 0100 1000; #修改本行events { worker_connections 1024;}http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name bbs.yunjisuan.com; location / { root html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }}
  在另外的兩臺測試機器上同時(shí)進(jìn)行壓力測試,命令如下:<br />
  webbench -c 2000 -t 60 http://192.168.0.220/
  結果如下:
  
  根據圖示,我們基本可以看出,平均綁定worker進(jìn)程和不綁定的實(shí)驗效果基本是一致的(CPU0是默認會(huì )被使用的)。原因在nginx在經(jīng)過(guò)不斷的優(yōu)化后,會(huì )自動(dòng)對worker進(jìn)程進(jìn)行動(dòng)態(tài)的平均分配。
  2.2.4 第三步:修改nginx配置,將所有worker進(jìn)程綁定到CPU3上
  #配置文件如下所示:<br />
  [root@LNMP nginx]# cat conf/nginx.confworker_processes 4;worker_cpu_affinity 1000 1000 1000 1000; #修改本行events { worker_connections 1024;}http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name bbs.yunjisuan.com; location / { root html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }}
  在另外的兩臺測試機器上同時(shí)進(jìn)行壓力測試,命令如下:
  webbench -c 2000 -t 60 http://192.168.0.220/
  結果如下:
  
  從上圖我們可以得知,worker進(jìn)程的壓力被集中分配到了CPU3上。(CPU0是默認被使用的)
  2.3 Nginx事件處理模型優(yōu)化
  #具體的配置參數如下:<br />
  events #events指令是設定Nginx的工作模式及連接數上限{ use epoll;#use是一個(gè)事件模塊指令,用來(lái)指定Nginx的工作模式。Nginx支持的工作模式有select,poll,kqueue,epoll,rtsig和/dev/poll。其中select和poll都是標準的工作模式,kqueue和epoll是高效的工作模式,不同的是epoll用在Linux平臺上,而kqueue用在BSD系統中。對于Linux系統Linux2.6+內核,推薦選擇epoll工作模式,這是高性能高并發(fā)的設置}
  根據Nginx官方文檔建議,也可以不指定事件處理模型,Nginx會(huì )自動(dòng)選擇最佳的事件處理模型服務(wù)。
  對于使用連接進(jìn)程的方法,通常不需要進(jìn)行任何設置,Nginx會(huì )自動(dòng)選擇最有效辦法。
  2.4 調整Nginx單個(gè)進(jìn)程允許的客戶(hù)端最大連接數
  接下來(lái),調整Nginx單個(gè)進(jìn)程允許的客戶(hù)端最大連接數,這個(gè)控制連接數的參數為work_connections。
  worker_connections的值要根據具體服務(wù)器性能和程序的內存使用量來(lái)指定(一個(gè)進(jìn)程啟動(dòng)使用的內存根據程序確定),如下:
  events #events指令是設定Nginx的工作模式和連接數上線(xiàn){ worker_connections 20480; #worker_connections也是個(gè)事件模塊指令,用于定義Nginx每個(gè)進(jìn)程的最大連接數,默認是1024.最大客戶(hù)端連接數由worker_processes和worker_connections決定,即Max_client= worker_processes*worker_connections。進(jìn)程的最大連接數受Linux系統進(jìn)程的最大打開(kāi)文件數限制,在執行操作系統命令“ulimit -HSn 65535”或配置相應文件后,worker_connections的設置才能生效。}
  下面是worker_connections的官方說(shuō)明<br />
  參數語(yǔ)法:worker_connections number
  默認配置:worker_connections 512
  放置位置:events
  說(shuō)明:
  worker_connections用來(lái)設置一個(gè)worker process支持的最大并發(fā)連接數,這個(gè)連接數包括了所有鏈接,例如:代理服務(wù)器的連接,客戶(hù)端的連接等,實(shí)際的并發(fā)連接數除了受worker_connections參數控制外,還和最大打開(kāi)文件數worker_rlimit_nofile有關(guān)(見(jiàn)下文),Nginx總并發(fā)連接=worker數量*worker_connections。
  參考資料:
  2.5 配置Nginx worker進(jìn)程最大打開(kāi)文件數
  接下來(lái),調整配置Nginx worker進(jìn)程的最大打開(kāi)文件數,這個(gè)控制連接數的參數為worker_rlimit_nofile。該參數的實(shí)際配置如下:
  worker_rlimit_nofile 65535;#最大打開(kāi)文件數,可設置為系統優(yōu)化后的ulimit -HSn的結果
  下面是worker_rlimit_nofile number的官方說(shuō)明:<br />
  參數語(yǔ)法:worker_rlimit_nofile number
  默認配置:無(wú)
  放置位置:主標簽段
  說(shuō)明:此參數的作用是改變worker processes能打開(kāi)的最大文件數
  參考資料:
  備注:
  Linux系統文件最大打開(kāi)數設置:ulimit -n 65535
  2.5.1 實(shí)驗環(huán)境準備主機名IP地址備注
  Nginx
  192.168.0.220
  nginxWeb
  測試機1
  192.168.0.240
  Webbench壓力測試
  測試機2
  192.168.0.245
  Webbench壓力測試
  2.5.2 修改nginx.conf配置文件
  [root@LNMP nginx]# cat conf/nginx.confworker_processes 1;#worker_cpu_affinity 0000 0010 0100 1000;#worker_rlimit_nofile 65535;events { worker_connections 1024;}http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name bbs.yunjisuan.com; location / { root html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }}
  先定1核1024連接數。同學(xué)們注意多開(kāi)幾個(gè)虛擬機進(jìn)行壓力測試。不然的話(huà),web服務(wù)器還沒(méi)出問(wèn)題,你測試服務(wù)器先down掉了。
  2.5.2 測試nginx服務(wù)連接數的極值
  #使用這個(gè)命令可以抓取nginx的連接數[root@LNMP nginx]# netstat -antp | grep nginx | wc -l554[root@LNMP nginx]# netstat -antp | grep nginx | wc -l471
  逐漸提高壓力,抓連接數,看看nginx啥時(shí)候down
  2.6 開(kāi)啟高效文件傳輸模式
 ?。?)設置參數:sendfile on;
  sendfile參數用于開(kāi)啟文件的高效傳輸模式。同時(shí)將tcp_nopush和tcp_nodelay兩個(gè)指令設置為on,可防止網(wǎng)絡(luò )及磁盤(pán)I/O阻塞,提升Nginx工作效率。
  #sendfile參數的官方說(shuō)明如下:syntax: sendfile on | off; #參數語(yǔ)法default: sendfile off; #參數默認大小context: http,server,location,if in location #可以放置的標簽段
  參數作用:
  激活或禁用sendfile()功能功能。sendfile()是作用于兩個(gè)文件描述符之間的數據拷貝函數,這個(gè)拷貝操作是在內核之中的,被稱(chēng)為“零拷貝”,sendfile()比read和write函數要高效很多,因為,read和write函數要把數據拷貝到應用層再進(jìn)行操作。相關(guān)控制參數還有sendfile_max_chunk,同學(xué)們可以執行查詢(xún)。細節見(jiàn)#sendfile
 ?。?)設置參數:tcp_nopush on;
  #tcp_nopush參數的官方說(shuō)明如下:syntax: tcp_nopush on | off; #參數語(yǔ)法default: tcp_nopush off; #參數默認大小context:????http,server,location????#可以放置的標簽段
  <p><br /></p>
  參數作用:?激活或禁用Linux上的TCP_CORK socket選項,此選項僅僅當開(kāi)啟sendfile時(shí)才生效,激活這個(gè)tcp_nopush參數可以允許把http response header和文件的開(kāi)始部分放在一個(gè)文件里發(fā)布,其積極的作用是減少網(wǎng)絡(luò )報文段的數量。細節見(jiàn)http://nginx.org/en/docs/http/ ... .html。
  2.7 優(yōu)化Nginx連接參數,調整連接超時(shí)時(shí)間
  2.7.1 什么是連接超時(shí)2.7.2 連接超時(shí)的作用
  簡(jiǎn)單的說(shuō),連接超時(shí)是服務(wù)的一種自我管理,自我保護的重要機制。
  2.7.3 連接超時(shí)帶來(lái)的問(wèn)題,以及不同程序連接設定知識2.7.4 Nginx連接超時(shí)的參數設置
 ?。?)設置參數:keepalive_timeout 60;
  用于設置客戶(hù)端連接保持會(huì )話(huà)的超時(shí)時(shí)間為60秒。超過(guò)這個(gè)時(shí)間,服務(wù)器會(huì )關(guān)閉該連接,此數值為參考值。
  keepalive_timeout參數的官方說(shuō)明如下:syntax: keepalive_timeout timeout [header_timeout] #參數語(yǔ)法default: keepalive_timeout 75s; #參數默認大小context: http,serverr,location #可以放置的標簽段
  參數作用:
 ?。?)設置參數:tcp_nodelay on;
  用于激活tcp_ondelay功能,提高I/O性能。
  #tcp_nodelay參數的官方說(shuō)明如下:syntax: tcp_nodelay on | off #參數語(yǔ)法default: tcp_nodelay on; #參數默認大小context: http,server,location #可以放置的標簽段
  參數作用:
  默認情況下當數據發(fā)送時(shí),內核并不會(huì )馬上發(fā)送,可能會(huì )等待更多的字節組成一個(gè)數據包,這樣可以提高I/O性能。但是,在每次只發(fā)送很少字節的業(yè)務(wù)場(chǎng)景中,使用tcp_nodelay功能,等待時(shí)間會(huì )比較長(cháng)。
  參數生效條件:
  激活或禁用TCP_NODELAY選項,當一個(gè)連接進(jìn)入keep-alive狀態(tài)時(shí)生效。細節見(jiàn)。
 ?。?)設置參數:client_header_timeout 15;
  用于設置讀取客戶(hù)端請求頭數據的超時(shí)時(shí)間。此處的數值15,其單位是秒,為經(jīng)驗參考值。
  #client_header_timeout參數的官方說(shuō)明如下:syntax: client_header_timeout time; #參數語(yǔ)法default: client_header_timeout 60s; #參數默認大小context: http,server #可以放置的標簽段
  參數作用:
  設置讀取客戶(hù)端請求頭數據的超時(shí)時(shí)間。如果超過(guò)這個(gè)時(shí)間,客戶(hù)端還沒(méi)有發(fā)送完整的header數據,服務(wù)器端將返回“Request time out (408)”錯誤,可指定一個(gè)超時(shí)時(shí)間,防止客戶(hù)端利用http協(xié)議進(jìn)行攻擊。細節見(jiàn):。
 ?。?)設置參數:client_body_timeout 15;
  用于設置讀取客戶(hù)端請求主體的超時(shí)時(shí)間,默認值60
  #client_body_timeout參數的官方說(shuō)明如下:syntax: client_body_timeout time; #參數語(yǔ)法default: client_body_timeout 60s; #默認60context: http,server,location #可以放置的標簽段
  參數作用:
  設置讀取客戶(hù)端請求主體的超時(shí)時(shí)間。這個(gè)超時(shí)僅僅為兩次成功的讀取操作之間的一個(gè)超時(shí),非請求整個(gè)主體數據的超時(shí)時(shí)間,如果在這個(gè)超時(shí)時(shí)間內,客戶(hù)端沒(méi)有發(fā)送任何數據,Nginx將返回“Request time out(408)”錯誤,默認值60,細節見(jiàn):
 ?。?)設置參數:send_timeout 25;
  用于指定響應客戶(hù)端的超時(shí)時(shí)間。這個(gè)超時(shí)僅限于兩個(gè)連接活動(dòng)之間的時(shí)間,如果超過(guò)這個(gè)時(shí)間,客戶(hù)端沒(méi)有任何活動(dòng),Nginx將會(huì )關(guān)閉連接,默認值為60秒,可以改為參考值25秒。
  #send_timeout參數的官方說(shuō)明如下:syntax: send_timeout time; #參數語(yǔ)法default: send_timeout 60s; #默認值60context: http,server,location #可以放置的標簽段
  參數作用:

php抓取網(wǎng)頁(yè)指定內容,獲取新浪微博ip地址的地址

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 186 次瀏覽 ? 2022-05-09 14:08 ? 來(lái)自相關(guān)話(huà)題

  php抓取網(wǎng)頁(yè)指定內容,獲取新浪微博ip地址的地址
  php抓取網(wǎng)頁(yè)指定內容,可以使用gmail的特定接口,如國內新浪微博api接口。
  一、抓取注冊郵箱ip地址抓取注冊郵箱ip地址的地址如下,填寫(xiě)完成后,php解析郵箱地址數據(獲取其label)就可以獲取到其ip地址。通過(guò)gmail獲取每個(gè)國家的ip地址,我們可以把這些國家的ip地址進(jìn)行數據交換。就可以構建一個(gè)社交網(wǎng)絡(luò )的圖譜。舉個(gè)例子:比如我們獲取了美國的圖譜之后,我們再把這些圖譜同步到國內,然后注冊新浪微博,就可以獲取新浪微博的粉絲的郵箱地址和密碼了。
  二、批量抓取微博圖譜將獲取到的圖譜批量地寫(xiě)成*.jpg格式,然后用php或其他語(yǔ)言把圖譜文件解析出來(lái)。抓取圖譜的類(lèi)、名、地址都寫(xiě)到文件里,php解析文件的函數使用的是getpid方法,getpid返回的label與地址參數label對應,如下圖中的str_link。就可以把整個(gè)圖譜庫批量地編號好,后續對象、各個(gè)url進(jìn)行g(shù)etpid方法調用。
  三、批量抓取feed列表php獲取feed列表后,我們可以將feed獲取好的鏈接用javascript進(jìn)行操作,因為ie瀏覽器本身是帶有廣告的,如果沒(méi)有ie瀏覽器也可以進(jìn)行抓取,這個(gè)非瀏覽器地址不推薦使用,圖片傳輸可以使用。phpdiv中引入javascript就可以實(shí)現對網(wǎng)頁(yè)的操作操作javascript對cookie進(jìn)行操作后,返回的內容就是我們想要獲取的圖譜信息。
  四、圖片地址獲取php獲取圖片地址后,可以用scrapy的輪詢(xún)技術(shù)進(jìn)行抓取,效率也比較高。還可以在程序中,同時(shí)存在多個(gè)圖片地址,然后給他們分別編號,然后getpid方法獲取,不僅提高抓取速度,還節省了線(xiàn)路和網(wǎng)絡(luò )資源。效果如下,
  五、爬取其他網(wǎng)站數據打開(kāi)國內數據競價(jià)平臺(實(shí)時(shí)競價(jià)平臺)ip代理,獲取ip和頭像。打開(kāi)href="",返回ip返回頭像可以獲取出來(lái)。php爬蟲(chóng)在爬取其他網(wǎng)站數據時(shí),我們可以使用上面在gmail獲取圖譜里面獲取的信息,并再寫(xiě)入到循環(huán)中。
  六、爬取海外數據海外的數據太多,并且數據很好爬取,為了一一爬取數據,都需要單獨編號命名。我們可以使用leap瀏覽器,獲取頭像,進(jìn)行編號。php解析html的地址是‘/ajax/user-agent-set-cookie-id’,這里的id是我們在gmail獲取到的ip值,http/1.1,而user-agent-set-cookie-id為:gmail,可以使用數據庫表-id/set-cookie-id的方式獲取,默認值應該是8123474。
  這里的1-10好多爬蟲(chóng)都獲取的不對應,第一個(gè)0和9都有爬取過(guò)。這些都可以單獨獲取的。在爬取國內的數據時(shí),一個(gè)爬蟲(chóng)一個(gè)爬。 查看全部

  php抓取網(wǎng)頁(yè)指定內容,獲取新浪微博ip地址的地址
  php抓取網(wǎng)頁(yè)指定內容,可以使用gmail的特定接口,如國內新浪微博api接口。
  一、抓取注冊郵箱ip地址抓取注冊郵箱ip地址的地址如下,填寫(xiě)完成后,php解析郵箱地址數據(獲取其label)就可以獲取到其ip地址。通過(guò)gmail獲取每個(gè)國家的ip地址,我們可以把這些國家的ip地址進(jìn)行數據交換。就可以構建一個(gè)社交網(wǎng)絡(luò )的圖譜。舉個(gè)例子:比如我們獲取了美國的圖譜之后,我們再把這些圖譜同步到國內,然后注冊新浪微博,就可以獲取新浪微博的粉絲的郵箱地址和密碼了。
  二、批量抓取微博圖譜將獲取到的圖譜批量地寫(xiě)成*.jpg格式,然后用php或其他語(yǔ)言把圖譜文件解析出來(lái)。抓取圖譜的類(lèi)、名、地址都寫(xiě)到文件里,php解析文件的函數使用的是getpid方法,getpid返回的label與地址參數label對應,如下圖中的str_link。就可以把整個(gè)圖譜庫批量地編號好,后續對象、各個(gè)url進(jìn)行g(shù)etpid方法調用。
  三、批量抓取feed列表php獲取feed列表后,我們可以將feed獲取好的鏈接用javascript進(jìn)行操作,因為ie瀏覽器本身是帶有廣告的,如果沒(méi)有ie瀏覽器也可以進(jìn)行抓取,這個(gè)非瀏覽器地址不推薦使用,圖片傳輸可以使用。phpdiv中引入javascript就可以實(shí)現對網(wǎng)頁(yè)的操作操作javascript對cookie進(jìn)行操作后,返回的內容就是我們想要獲取的圖譜信息。
  四、圖片地址獲取php獲取圖片地址后,可以用scrapy的輪詢(xún)技術(shù)進(jìn)行抓取,效率也比較高。還可以在程序中,同時(shí)存在多個(gè)圖片地址,然后給他們分別編號,然后getpid方法獲取,不僅提高抓取速度,還節省了線(xiàn)路和網(wǎng)絡(luò )資源。效果如下,
  五、爬取其他網(wǎng)站數據打開(kāi)國內數據競價(jià)平臺(實(shí)時(shí)競價(jià)平臺)ip代理,獲取ip和頭像。打開(kāi)href="",返回ip返回頭像可以獲取出來(lái)。php爬蟲(chóng)在爬取其他網(wǎng)站數據時(shí),我們可以使用上面在gmail獲取圖譜里面獲取的信息,并再寫(xiě)入到循環(huán)中。
  六、爬取海外數據海外的數據太多,并且數據很好爬取,為了一一爬取數據,都需要單獨編號命名。我們可以使用leap瀏覽器,獲取頭像,進(jìn)行編號。php解析html的地址是‘/ajax/user-agent-set-cookie-id’,這里的id是我們在gmail獲取到的ip值,http/1.1,而user-agent-set-cookie-id為:gmail,可以使用數據庫表-id/set-cookie-id的方式獲取,默認值應該是8123474。
  這里的1-10好多爬蟲(chóng)都獲取的不對應,第一個(gè)0和9都有爬取過(guò)。這些都可以單獨獲取的。在爬取國內的數據時(shí),一個(gè)爬蟲(chóng)一個(gè)爬。

運用Python實(shí)現WordPress網(wǎng)站大規模自動(dòng)化發(fā)布文章(附源碼版)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 138 次瀏覽 ? 2022-05-08 14:43 ? 來(lái)自相關(guān)話(huà)題

  運用Python實(shí)現WordPress網(wǎng)站大規模自動(dòng)化發(fā)布文章(附源碼版)
  很多用WordPress建站的朋友都有這樣的苦惱,網(wǎng)站建好了,沒(méi)有時(shí)間自己寫(xiě)文章,慢慢就荒廢了,還有的朋友在瀏覽器收集好多喜歡的博客網(wǎng)站地址,因為收集的網(wǎng)址太多太雜,從此也很少點(diǎn)開(kāi)看。其實(shí)只要幾行代碼我們就可以完全利用Python和WordPress建一個(gè)屬于自己的文章抓取站點(diǎn)。主要是運用python newspaper xmlrpc 模塊編寫(xiě)實(shí)現網(wǎng)頁(yè)爬蟲(chóng),通過(guò)正則匹配爬取網(wǎng)頁(yè)內容后,用xmlrpc自動(dòng)發(fā)布到WordPress部署的網(wǎng)站。然后采用crond定時(shí)抓取。
  
  代碼開(kāi)源在github:運用Python實(shí)現WordPress網(wǎng)站大規模自動(dòng)化發(fā)布文章
  第一部分:抓取目標頁(yè)面的文章
  #得到html的源碼
def gethtml(url1):
? ?#偽裝瀏覽器頭部
? ?headers = {
? ? ? 'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'
}
? ?req = urllib2.Request(
? ?url = url1,
? ?headers = headers
? ?)
? ?html = urllib2.urlopen(req).read()
? ?return html
#得到目標url源碼
code1 = gethtml('https://www.baidu.com')#示例
#提取內容
content1 = re.findall('(.*)',code1)#示例
#追加記錄采集來(lái)的內容
f1 = open('contents1.txt','a+')
#讀取txt中的內容
exist1 = f1.read()
  
  第二部分:通過(guò)xmlrpc發(fā)送文章到WordPress
  def sends():
? ?for i in range(len(content1)):
? ? ? ?u=content1[i][0]
? ? ? ?url='https://www.baidu.com'+u
? ? ? ?a=Article(url,language='zh')
? ? ? ?a.download()
? ? ? ?a.parse()
? ? ? ?dst=a.text
? ? ? ?title=a.title
? ? ? ?#鏈接WordPress,輸入xmlrpc鏈接,后臺賬號密碼
? ? ? ?wp = Client('http://www.python-cn.com/xmlrpc.php','username','password')
? ? ? ?post = WordPressPost()
? ? ? ?post.title = title
? ? ? ?post.content = dst
? ? ? ?post.post_status = 'publish'
? ? ? ?#發(fā)送到WordPress
? ? ? ?wp.call(NewPost(post))
? ? ? ?time.sleep(3)
? ? ? ?print 'posts updates'
  
  最后,通過(guò)crontab定時(shí)運行程序,采集指定文章發(fā)送的WordPress
  0 12 * * 2 /usr/bin/python /home/workspace/python-cn/python-cn.py
  后續橙哥將詳細寫(xiě)出newspaper抓取文章、WordPress xmlrpc配置等細節和代碼的具體解釋?zhuān)唧w請關(guān)注微信公眾號:Python中文社區
  Python中文社區(),致力于成為國內最好的Python開(kāi)發(fā)者學(xué)習交流平臺,這里有關(guān)于Python的國內外最新消息,每日推送有趣有料的技術(shù)干貨和社區動(dòng)態(tài)。歡迎長(cháng)按以下二維碼掃描關(guān)注!
   查看全部

  運用Python實(shí)現WordPress網(wǎng)站大規模自動(dòng)化發(fā)布文章(附源碼版)
  很多用WordPress建站的朋友都有這樣的苦惱,網(wǎng)站建好了,沒(méi)有時(shí)間自己寫(xiě)文章,慢慢就荒廢了,還有的朋友在瀏覽器收集好多喜歡的博客網(wǎng)站地址,因為收集的網(wǎng)址太多太雜,從此也很少點(diǎn)開(kāi)看。其實(shí)只要幾行代碼我們就可以完全利用Python和WordPress建一個(gè)屬于自己的文章抓取站點(diǎn)。主要是運用python newspaper xmlrpc 模塊編寫(xiě)實(shí)現網(wǎng)頁(yè)爬蟲(chóng),通過(guò)正則匹配爬取網(wǎng)頁(yè)內容后,用xmlrpc自動(dòng)發(fā)布到WordPress部署的網(wǎng)站。然后采用crond定時(shí)抓取。
  
  代碼開(kāi)源在github:運用Python實(shí)現WordPress網(wǎng)站大規模自動(dòng)化發(fā)布文章
  第一部分:抓取目標頁(yè)面的文章
  #得到html的源碼
def gethtml(url1):
? ?#偽裝瀏覽器頭部
? ?headers = {
? ? ? 'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'
}
? ?req = urllib2.Request(
? ?url = url1,
? ?headers = headers
? ?)
? ?html = urllib2.urlopen(req).read()
? ?return html
#得到目標url源碼
code1 = gethtml('https://www.baidu.com')#示例
#提取內容
content1 = re.findall('(.*)',code1)#示例
#追加記錄采集來(lái)的內容
f1 = open('contents1.txt','a+')
#讀取txt中的內容
exist1 = f1.read()
  
  第二部分:通過(guò)xmlrpc發(fā)送文章到WordPress
  def sends():
? ?for i in range(len(content1)):
? ? ? ?u=content1[i][0]
? ? ? ?url='https://www.baidu.com'+u
? ? ? ?a=Article(url,language='zh')
? ? ? ?a.download()
? ? ? ?a.parse()
? ? ? ?dst=a.text
? ? ? ?title=a.title
? ? ? ?#鏈接WordPress,輸入xmlrpc鏈接,后臺賬號密碼
? ? ? ?wp = Client('http://www.python-cn.com/xmlrpc.php','username','password')
? ? ? ?post = WordPressPost()
? ? ? ?post.title = title
? ? ? ?post.content = dst
? ? ? ?post.post_status = 'publish'
? ? ? ?#發(fā)送到WordPress
? ? ? ?wp.call(NewPost(post))
? ? ? ?time.sleep(3)
? ? ? ?print 'posts updates'
  
  最后,通過(guò)crontab定時(shí)運行程序,采集指定文章發(fā)送的WordPress
  0 12 * * 2 /usr/bin/python /home/workspace/python-cn/python-cn.py
  后續橙哥將詳細寫(xiě)出newspaper抓取文章、WordPress xmlrpc配置等細節和代碼的具體解釋?zhuān)唧w請關(guān)注微信公眾號:Python中文社區
  Python中文社區(),致力于成為國內最好的Python開(kāi)發(fā)者學(xué)習交流平臺,這里有關(guān)于Python的國內外最新消息,每日推送有趣有料的技術(shù)干貨和社區動(dòng)態(tài)。歡迎長(cháng)按以下二維碼掃描關(guān)注!
  

php抓取網(wǎng)頁(yè)指定內容(輸入curl命令)(2)

網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 110 次瀏覽 ? 2022-05-08 13:01 ? 來(lái)自相關(guān)話(huà)題

  php抓取網(wǎng)頁(yè)指定內容(輸入curl命令)(2)
  php抓取網(wǎng)頁(yè)指定內容(輸入curl命令)我們網(wǎng)頁(yè)中一般有域名對應的ip,可以抓取ip對應的頁(yè)面的內容,網(wǎng)頁(yè)都是html文檔,可以從html文檔找到這樣一段代碼:/*@location="。"/**location。href="chrome">**@varispluginhistory=newhttp("/");httpget"chrome"//請求建議這樣帶上ispluginhistory代表當前端口是否為9000[1]。
  */ispluginhistory。length=1;//獲取請求頭ispluginhistory。target="_blank";//抓取target標簽內容httpget"chrome"//帶有target標簽,“chrome”網(wǎng)址不需要帶有域名*/httpget"chrome"//帶有target標簽,“chrome”網(wǎng)址不需要帶有域名*/ispluginhistory。
  maxvalue=1;//alert(ispluginhistory。maxvalue);有了上面的代碼我們就可以抓取【chrome網(wǎng)址】,并將href="chrome"拿下來(lái),curl命令這么做:ispluginhistory。length=1;//alert(ispluginhistory。maxvalue);//獲取請求頭ispluginhistory。
  target="_blank";//獲取target標簽內容ispluginhistory。maxvalue=1;//alert(ispluginhistory。maxvalue);抓取標準頁(yè)面的標準代碼:echo"";?>if(!strtoclose($doc)){echo"\n";}$doc->str_as_string($url);?>?>根據上面我們實(shí)現過(guò)程,我們就能大致地知道怎么抓取域名為9000端口,響應為404的頁(yè)面,但是如果php5以上的話(huà),再用到上面的functiongetch。 查看全部

  php抓取網(wǎng)頁(yè)指定內容(輸入curl命令)(2)
  php抓取網(wǎng)頁(yè)指定內容(輸入curl命令)我們網(wǎng)頁(yè)中一般有域名對應的ip,可以抓取ip對應的頁(yè)面的內容,網(wǎng)頁(yè)都是html文檔,可以從html文檔找到這樣一段代碼:/*@location="。"/**location。href="chrome">**@varispluginhistory=newhttp("/");httpget"chrome"//請求建議這樣帶上ispluginhistory代表當前端口是否為9000[1]。
  */ispluginhistory。length=1;//獲取請求頭ispluginhistory。target="_blank";//抓取target標簽內容httpget"chrome"//帶有target標簽,“chrome”網(wǎng)址不需要帶有域名*/httpget"chrome"//帶有target標簽,“chrome”網(wǎng)址不需要帶有域名*/ispluginhistory。
  maxvalue=1;//alert(ispluginhistory。maxvalue);有了上面的代碼我們就可以抓取【chrome網(wǎng)址】,并將href="chrome"拿下來(lái),curl命令這么做:ispluginhistory。length=1;//alert(ispluginhistory。maxvalue);//獲取請求頭ispluginhistory。
  target="_blank";//獲取target標簽內容ispluginhistory。maxvalue=1;//alert(ispluginhistory。maxvalue);抓取標準頁(yè)面的標準代碼:echo"";?>if(!strtoclose($doc)){echo"\n";}$doc->str_as_string($url);?>?>根據上面我們實(shí)現過(guò)程,我們就能大致地知道怎么抓取域名為9000端口,響應為404的頁(yè)面,但是如果php5以上的話(huà),再用到上面的functiongetch。

官方客服QQ群

微信人工客服

QQ人工客服


線(xiàn)

最近中文字幕2019高清,亚洲人成高清在线播放,男生淦哭男生图片动漫有字,国产亚洲精品九九久在线观看,无码av专区丝袜专区