
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(爬取某個(gè)前端知識分析之不會(huì )網(wǎng)站頁(yè)面的定位與布局 )
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 94 次瀏覽 ? 2021-11-08 17:06
)
介紹
本案例只是為了鞏固Xpath語(yǔ)法的使用,不會(huì )涉及到爬蟲(chóng)知識太深
分析:
一般我們在爬取某個(gè)網(wǎng)站頁(yè)面時(shí),有以下幾個(gè)步驟:
1、獲取爬取目標地址
2、明確需求,即要知道網(wǎng)頁(yè)中獲取哪些數據
3、 明確目標后,通過(guò)相應的解析語(yǔ)法(Xpath)分析網(wǎng)頁(yè)的結構,得到想要的數據
4、寫(xiě)代碼實(shí)現
1、獲取爬取目標地址
以百度貼吧為例:
程序員吧-百度貼吧--程序員之家,全球最大的程序員中文交流區。--Programmer(英文程序員)是從事程序開(kāi)發(fā)和維護的專(zhuān)業(yè)人士。一般來(lái)說(shuō),程序員分為程序員和程序員,但兩者的界限不是很清楚。
2、明確需求
獲取貼吧的每個(gè)帖子的標題,如下圖:
3、使用Xpath解析網(wǎng)頁(yè)結構獲取想要的數據1、通過(guò)瀏覽器工具快速定位到網(wǎng)頁(yè)中需要獲取的數據的標簽位置
1、在網(wǎng)頁(yè)上右鍵,點(diǎn)擊檢查
2、 然后彈出
3、點(diǎn)擊左上角的箭頭標志
4、 鼠標懸停在網(wǎng)頁(yè)的數據上,左邊的顯示會(huì )自動(dòng)跳轉到對應的標簽,既然是獲取文章的標題,那么我們將鼠標懸停在一個(gè)的標題上郵政
定位已定位,但這就是我們想要的嗎?顯然不是,因為這只是定位一個(gè)帖子,顯然不符合我們的需求。我們想要得到整個(gè)網(wǎng)頁(yè)(注意這是一個(gè)網(wǎng)頁(yè),不是網(wǎng)站)所有帖子的標題。
其實(shí)一個(gè)的定位已經(jīng)是一半了,因為其他帖子的tag結構和屬性都是一樣的,不會(huì )有什么區別,做過(guò)前端的兄弟都知道。那么問(wèn)題來(lái)了,既然是一樣的,為什么不直接使用呢?這又是一個(gè)前端知識。其實(shí)網(wǎng)站的大部分布局就像很多拼圖,所以這部分帖子是一體的。在拼圖中,我們現在要找到這塊拼圖。從Xpath語(yǔ)法的角度,我們通過(guò)路徑搜索和屬性值定位來(lái)定位標簽。如果直接用label屬性值來(lái)定位,就可以了,因為一下子就定位到了。顯然不可保,可能會(huì )有更多不需要的數據。
想法:
1、 先搜索路徑,找到存放所有帖子的父標簽
2、由于帖子的標簽結構和屬性值都是一樣的,隨便找一篇帖子分析一下就行了。后面寫(xiě)個(gè)例子看看效果
2.使用Xpath-helper插件驗證Xapth語(yǔ)法是否正確獲取數據
知道了數據的位置,我們就開(kāi)始寫(xiě)Xpath語(yǔ)法來(lái)定位數據,那我們怎么知道我們寫(xiě)的語(yǔ)法是否正確,這個(gè)就用我們的Xpath-helper插件來(lái)驗證。
1、 首先,我們觀(guān)察一下貼吧中一個(gè)網(wǎng)頁(yè)上有多少帖子
不收錄廣告,一共50條,所以只要我們寫(xiě)好語(yǔ)法就可以得到50條帖子的數據是正確的
2、使用插件,點(diǎn)擊右上角拼圖
3、點(diǎn)擊Xpath-helper插件
4、 彈出兩個(gè)框
5、 左邊的框是輸入我們的Xapth語(yǔ)法,右邊是根據語(yǔ)法自動(dòng)獲取的數據
編寫(xiě) Xpath 語(yǔ)法
1、只使用屬性值定位(不推薦)
使用鼠標定位其中一個(gè)帖子
提供日千萬(wàn)預算,長(cháng)期高價(jià)收wap量,正規無(wú)感廣告,尋站長(cháng)合作共
語(yǔ)法:
//a[@class="j_th_tit"]
影響:
可以得到五十條數據,語(yǔ)法正確,為什么不推薦呢,比如我們不使用class屬性而是使用rel屬性
//a[@rel="noreferrer"]
影響:
230條數據,明顯錯誤。
2、結合路徑搜索和屬性搜索(推薦)
首先,您需要知道帖子拼圖的標簽。您只需要收錄帖子這部分內容的標簽即可。
從圖中我們可以知道帖子的信息在li標簽中,我們想要的數據肯定在li標簽中,解析li標簽
我們可以根據a標簽逐層查找。有一個(gè)問(wèn)題,就是會(huì )出現同一個(gè)標簽,而且兩個(gè)級別相同,那么如何區分,如下圖:
可以看出我們想要的內容在第二個(gè)div標簽下。兩者如何區分,通過(guò)屬性值很容易區分。
語(yǔ)法:
//ul[@id="thread_list"]/li/div/div[@class="col2_right j_threadlist_li_right "]/div/div/a
影響:
語(yǔ)法的寫(xiě)法是自己決定的,只要得到正確的數據即可
3、獲取數據
我們上面所做的只是定位數據所在的標簽,并沒(méi)有真正獲取到值,根據標簽中數據的形式獲取
提供日千萬(wàn)預算,長(cháng)期高價(jià)收wap量,正規無(wú)感廣告,尋站長(cháng)合作共
可以看到a標簽的title屬性的值就是我們想要的數據,中間也有我們想要的值,所以有兩種寫(xiě)法,根據自己的喜好
語(yǔ)法:
寫(xiě)一:
//ul[@id="thread_list"]/li/div/div[@class="col2_right j_threadlist_li_right "]/div/div/a/text()
影響:
寫(xiě)作二:
//ul[@id="thread_list"]/li/div/div[@class="col2_right j_threadlist_li_right "]/div/div/a/@title
影響:
4、寫(xiě)代碼實(shí)現
代碼:
import requests
import time
from lxml import etree
def getHTMLContent(url):
# 偽裝用戶(hù)代理,防反爬
header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36'
}
# 向url發(fā)送get請求
respone = requests.get(url,headers = header)
# 將返回的二進(jìn)制流文件轉化成文本文件
content = respone.text
# 減少一些無(wú)用的標簽的干擾,這個(gè)標簽在html語(yǔ)言是屬于注釋標簽
content = content.replace('', '')
# 將返回的html文本文件轉化成xpath能解析的對象
tree = etree.HTML(content)
# 根據xpath語(yǔ)法獲取內容
titles = tree.xpath('//ul[@id="thread_list"]/li/div/div[@class="col2_right j_threadlist_li_right "]/div/div/a/text()')
# 循環(huán)打印結果
for title in titles:
print(title)
if __name__ =="__main__":
url = "https://tieba.baidu.com/f%3Fkw ... ot%3B
getHTMLContent(url)
結果:
查看全部
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(爬取某個(gè)前端知識分析之不會(huì )網(wǎng)站頁(yè)面的定位與布局
)
介紹
本案例只是為了鞏固Xpath語(yǔ)法的使用,不會(huì )涉及到爬蟲(chóng)知識太深
分析:
一般我們在爬取某個(gè)網(wǎng)站頁(yè)面時(shí),有以下幾個(gè)步驟:
1、獲取爬取目標地址
2、明確需求,即要知道網(wǎng)頁(yè)中獲取哪些數據
3、 明確目標后,通過(guò)相應的解析語(yǔ)法(Xpath)分析網(wǎng)頁(yè)的結構,得到想要的數據
4、寫(xiě)代碼實(shí)現
1、獲取爬取目標地址
以百度貼吧為例:
程序員吧-百度貼吧--程序員之家,全球最大的程序員中文交流區。--Programmer(英文程序員)是從事程序開(kāi)發(fā)和維護的專(zhuān)業(yè)人士。一般來(lái)說(shuō),程序員分為程序員和程序員,但兩者的界限不是很清楚。
2、明確需求
獲取貼吧的每個(gè)帖子的標題,如下圖:

3、使用Xpath解析網(wǎng)頁(yè)結構獲取想要的數據1、通過(guò)瀏覽器工具快速定位到網(wǎng)頁(yè)中需要獲取的數據的標簽位置
1、在網(wǎng)頁(yè)上右鍵,點(diǎn)擊檢查

2、 然后彈出

3、點(diǎn)擊左上角的箭頭標志

4、 鼠標懸停在網(wǎng)頁(yè)的數據上,左邊的顯示會(huì )自動(dòng)跳轉到對應的標簽,既然是獲取文章的標題,那么我們將鼠標懸停在一個(gè)的標題上郵政

定位已定位,但這就是我們想要的嗎?顯然不是,因為這只是定位一個(gè)帖子,顯然不符合我們的需求。我們想要得到整個(gè)網(wǎng)頁(yè)(注意這是一個(gè)網(wǎng)頁(yè),不是網(wǎng)站)所有帖子的標題。
其實(shí)一個(gè)的定位已經(jīng)是一半了,因為其他帖子的tag結構和屬性都是一樣的,不會(huì )有什么區別,做過(guò)前端的兄弟都知道。那么問(wèn)題來(lái)了,既然是一樣的,為什么不直接使用呢?這又是一個(gè)前端知識。其實(shí)網(wǎng)站的大部分布局就像很多拼圖,所以這部分帖子是一體的。在拼圖中,我們現在要找到這塊拼圖。從Xpath語(yǔ)法的角度,我們通過(guò)路徑搜索和屬性值定位來(lái)定位標簽。如果直接用label屬性值來(lái)定位,就可以了,因為一下子就定位到了。顯然不可保,可能會(huì )有更多不需要的數據。
想法:
1、 先搜索路徑,找到存放所有帖子的父標簽
2、由于帖子的標簽結構和屬性值都是一樣的,隨便找一篇帖子分析一下就行了。后面寫(xiě)個(gè)例子看看效果
2.使用Xpath-helper插件驗證Xapth語(yǔ)法是否正確獲取數據
知道了數據的位置,我們就開(kāi)始寫(xiě)Xpath語(yǔ)法來(lái)定位數據,那我們怎么知道我們寫(xiě)的語(yǔ)法是否正確,這個(gè)就用我們的Xpath-helper插件來(lái)驗證。
1、 首先,我們觀(guān)察一下貼吧中一個(gè)網(wǎng)頁(yè)上有多少帖子
不收錄廣告,一共50條,所以只要我們寫(xiě)好語(yǔ)法就可以得到50條帖子的數據是正確的
2、使用插件,點(diǎn)擊右上角拼圖

3、點(diǎn)擊Xpath-helper插件

4、 彈出兩個(gè)框

5、 左邊的框是輸入我們的Xapth語(yǔ)法,右邊是根據語(yǔ)法自動(dòng)獲取的數據
編寫(xiě) Xpath 語(yǔ)法
1、只使用屬性值定位(不推薦)
使用鼠標定位其中一個(gè)帖子
提供日千萬(wàn)預算,長(cháng)期高價(jià)收wap量,正規無(wú)感廣告,尋站長(cháng)合作共
語(yǔ)法:
//a[@class="j_th_tit"]
影響:

可以得到五十條數據,語(yǔ)法正確,為什么不推薦呢,比如我們不使用class屬性而是使用rel屬性
//a[@rel="noreferrer"]
影響:

230條數據,明顯錯誤。
2、結合路徑搜索和屬性搜索(推薦)
首先,您需要知道帖子拼圖的標簽。您只需要收錄帖子這部分內容的標簽即可。
從圖中我們可以知道帖子的信息在li標簽中,我們想要的數據肯定在li標簽中,解析li標簽

我們可以根據a標簽逐層查找。有一個(gè)問(wèn)題,就是會(huì )出現同一個(gè)標簽,而且兩個(gè)級別相同,那么如何區分,如下圖:

可以看出我們想要的內容在第二個(gè)div標簽下。兩者如何區分,通過(guò)屬性值很容易區分。
語(yǔ)法:
//ul[@id="thread_list"]/li/div/div[@class="col2_right j_threadlist_li_right "]/div/div/a
影響:

語(yǔ)法的寫(xiě)法是自己決定的,只要得到正確的數據即可
3、獲取數據
我們上面所做的只是定位數據所在的標簽,并沒(méi)有真正獲取到值,根據標簽中數據的形式獲取
提供日千萬(wàn)預算,長(cháng)期高價(jià)收wap量,正規無(wú)感廣告,尋站長(cháng)合作共
可以看到a標簽的title屬性的值就是我們想要的數據,中間也有我們想要的值,所以有兩種寫(xiě)法,根據自己的喜好
語(yǔ)法:
寫(xiě)一:
//ul[@id="thread_list"]/li/div/div[@class="col2_right j_threadlist_li_right "]/div/div/a/text()
影響:

寫(xiě)作二:
//ul[@id="thread_list"]/li/div/div[@class="col2_right j_threadlist_li_right "]/div/div/a/@title
影響:

4、寫(xiě)代碼實(shí)現
代碼:
import requests
import time
from lxml import etree
def getHTMLContent(url):
# 偽裝用戶(hù)代理,防反爬
header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36'
}
# 向url發(fā)送get請求
respone = requests.get(url,headers = header)
# 將返回的二進(jìn)制流文件轉化成文本文件
content = respone.text
# 減少一些無(wú)用的標簽的干擾,這個(gè)標簽在html語(yǔ)言是屬于注釋標簽
content = content.replace('', '')
# 將返回的html文本文件轉化成xpath能解析的對象
tree = etree.HTML(content)
# 根據xpath語(yǔ)法獲取內容
titles = tree.xpath('//ul[@id="thread_list"]/li/div/div[@class="col2_right j_threadlist_li_right "]/div/div/a/text()')
# 循環(huán)打印結果
for title in titles:
print(title)
if __name__ =="__main__":
url = "https://tieba.baidu.com/f%3Fkw ... ot%3B
getHTMLContent(url)
結果:

網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片( 網(wǎng)絡(luò )上爬行的一直蜘蛛,互聯(lián)網(wǎng)什么是爬蟲(chóng)爬蟲(chóng))
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 72 次瀏覽 ? 2021-11-08 04:07
網(wǎng)絡(luò )上爬行的一直蜘蛛,互聯(lián)網(wǎng)什么是爬蟲(chóng)爬蟲(chóng))
1.什么是爬蟲(chóng)
爬蟲(chóng),或網(wǎng)絡(luò )爬蟲(chóng),可以理解為無(wú)時(shí)無(wú)刻不在網(wǎng)絡(luò )上爬行的蜘蛛?;ヂ?lián)網(wǎng)就像一個(gè)大網(wǎng),爬蟲(chóng)就是在這個(gè)網(wǎng)上爬來(lái)爬去的蜘蛛。如果它遇到資源,那么它會(huì )被爬下來(lái)。你想爬什么?這取決于你來(lái)控制它。比如它在爬一個(gè)網(wǎng)頁(yè),他在這個(gè)網(wǎng)上找到了一條路,其實(shí)就是一個(gè)網(wǎng)頁(yè)的超鏈接,然后就可以爬到另一個(gè)網(wǎng)頁(yè)上獲取數據了。這樣一來(lái),整個(gè)相連的網(wǎng)都在這只蜘蛛的觸手可及的范圍內,分分鐘爬下來(lái)也不成問(wèn)題。
2.瀏覽網(wǎng)頁(yè)的過(guò)程
當用戶(hù)瀏覽網(wǎng)頁(yè)時(shí),我們可能會(huì )看到很多漂亮的圖片,比如我們會(huì )看到幾張圖片和百度搜索框。這個(gè)過(guò)程其實(shí)就是用戶(hù)輸入URL,通過(guò)DNS服務(wù)器找到服務(wù)器主機之后。向服務(wù)器發(fā)送請求。服務(wù)器解析后,將瀏覽器的HTML、JS、CSS等文件發(fā)送給用戶(hù)。瀏覽器解析出來(lái),用戶(hù)可以看到各種圖片。因此,用戶(hù)看到的網(wǎng)頁(yè)本質(zhì)上是由HTML代碼組成的,爬蟲(chóng)爬取這個(gè)內容。通過(guò)對這些HTML代碼進(jìn)行分析和過(guò)濾,可以獲得圖片、文字等資源。
3.URL的含義
URL,即統一資源定位符,也就是我們所說(shuō)的網(wǎng)址。統一資源定位符是互聯(lián)網(wǎng)上可用資源的位置和訪(fǎng)問(wèn)方式的簡(jiǎn)明表示,是互聯(lián)網(wǎng)上標準資源的地址。Internet 上的每個(gè)文件都有一個(gè)唯一的 URL,其中收錄指示文件位置以及瀏覽器應如何處理它的信息。
URL 的格式由三部分組成: ① 第一部分是協(xié)議(或稱(chēng)服務(wù)模式)。②第二部分是收錄資源的主機的IP地址(有時(shí)包括端口號)。③第三部分是宿主機資源的具體地址,如目錄、文件名等。
爬蟲(chóng)在爬取數據時(shí),必須要有目標網(wǎng)址才能獲取數據。因此,它是爬蟲(chóng)獲取數據的基本依據。準確理解其含義對爬蟲(chóng)學(xué)習有很大幫助。
4. 環(huán)境配置
學(xué)習Python,環(huán)境配置是必不可少的。一開(kāi)始我用的是Notepad++,但是發(fā)現它的提示功能太弱了,所以我在Windows下使用了PyCharm,Linux下使用了Eclipse for Python。有幾個(gè)優(yōu)秀的IDE,可以參考這個(gè)文章學(xué)習Python推薦的IDE。好的開(kāi)發(fā)工具是一種動(dòng)力。我希望你能找到適合你的 IDE。下一節,我們將正式進(jìn)入Python爬蟲(chóng)學(xué)習的殿堂。你準備好了嗎? 查看全部
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(
網(wǎng)絡(luò )上爬行的一直蜘蛛,互聯(lián)網(wǎng)什么是爬蟲(chóng)爬蟲(chóng))

1.什么是爬蟲(chóng)
爬蟲(chóng),或網(wǎng)絡(luò )爬蟲(chóng),可以理解為無(wú)時(shí)無(wú)刻不在網(wǎng)絡(luò )上爬行的蜘蛛?;ヂ?lián)網(wǎng)就像一個(gè)大網(wǎng),爬蟲(chóng)就是在這個(gè)網(wǎng)上爬來(lái)爬去的蜘蛛。如果它遇到資源,那么它會(huì )被爬下來(lái)。你想爬什么?這取決于你來(lái)控制它。比如它在爬一個(gè)網(wǎng)頁(yè),他在這個(gè)網(wǎng)上找到了一條路,其實(shí)就是一個(gè)網(wǎng)頁(yè)的超鏈接,然后就可以爬到另一個(gè)網(wǎng)頁(yè)上獲取數據了。這樣一來(lái),整個(gè)相連的網(wǎng)都在這只蜘蛛的觸手可及的范圍內,分分鐘爬下來(lái)也不成問(wèn)題。
2.瀏覽網(wǎng)頁(yè)的過(guò)程
當用戶(hù)瀏覽網(wǎng)頁(yè)時(shí),我們可能會(huì )看到很多漂亮的圖片,比如我們會(huì )看到幾張圖片和百度搜索框。這個(gè)過(guò)程其實(shí)就是用戶(hù)輸入URL,通過(guò)DNS服務(wù)器找到服務(wù)器主機之后。向服務(wù)器發(fā)送請求。服務(wù)器解析后,將瀏覽器的HTML、JS、CSS等文件發(fā)送給用戶(hù)。瀏覽器解析出來(lái),用戶(hù)可以看到各種圖片。因此,用戶(hù)看到的網(wǎng)頁(yè)本質(zhì)上是由HTML代碼組成的,爬蟲(chóng)爬取這個(gè)內容。通過(guò)對這些HTML代碼進(jìn)行分析和過(guò)濾,可以獲得圖片、文字等資源。
3.URL的含義
URL,即統一資源定位符,也就是我們所說(shuō)的網(wǎng)址。統一資源定位符是互聯(lián)網(wǎng)上可用資源的位置和訪(fǎng)問(wèn)方式的簡(jiǎn)明表示,是互聯(lián)網(wǎng)上標準資源的地址。Internet 上的每個(gè)文件都有一個(gè)唯一的 URL,其中收錄指示文件位置以及瀏覽器應如何處理它的信息。
URL 的格式由三部分組成: ① 第一部分是協(xié)議(或稱(chēng)服務(wù)模式)。②第二部分是收錄資源的主機的IP地址(有時(shí)包括端口號)。③第三部分是宿主機資源的具體地址,如目錄、文件名等。
爬蟲(chóng)在爬取數據時(shí),必須要有目標網(wǎng)址才能獲取數據。因此,它是爬蟲(chóng)獲取數據的基本依據。準確理解其含義對爬蟲(chóng)學(xué)習有很大幫助。
4. 環(huán)境配置
學(xué)習Python,環(huán)境配置是必不可少的。一開(kāi)始我用的是Notepad++,但是發(fā)現它的提示功能太弱了,所以我在Windows下使用了PyCharm,Linux下使用了Eclipse for Python。有幾個(gè)優(yōu)秀的IDE,可以參考這個(gè)文章學(xué)習Python推薦的IDE。好的開(kāi)發(fā)工具是一種動(dòng)力。我希望你能找到適合你的 IDE。下一節,我們將正式進(jìn)入Python爬蟲(chóng)學(xué)習的殿堂。你準備好了嗎?
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(淺談一下爬蟲(chóng)什么是爬蟲(chóng)?(二):請求網(wǎng)站并提取數據的自動(dòng)化程序)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 81 次瀏覽 ? 2021-11-07 19:27
前言
爬蟲(chóng)是一項非常有趣的技術(shù)。您可以使用爬蟲(chóng)技術(shù)來(lái)獲取其他人無(wú)法獲得或需要付費的東西。您還可以自動(dòng)抓取并保存大量數據,減少手動(dòng)完成一些繁瑣任務(wù)的時(shí)間和精力。
可以說(shuō)學(xué)編程的人很多,不玩爬蟲(chóng)的意義就少了很多。無(wú)論是業(yè)余愛(ài)好者、私人工作還是專(zhuān)業(yè)爬行動(dòng)物,爬行動(dòng)物世界都非常令人興奮。
今天給大家講一下爬蟲(chóng),目的是讓準備學(xué)習爬蟲(chóng)或者剛入門(mén)的人對爬蟲(chóng)有更深入、更全面的了解。
一、認識爬蟲(chóng)
1.什么是爬蟲(chóng)?
一句話(huà)介紹著(zhù)名的爬蟲(chóng):一個(gè)請求網(wǎng)站并提取數據的自動(dòng)化程序。
下面我們來(lái)拆解了解一下爬蟲(chóng):
網(wǎng)站的請求就是向網(wǎng)站發(fā)送請求。比如去百度搜索關(guān)鍵詞“Python”。這時(shí),我們的瀏覽器會(huì )向網(wǎng)站發(fā)送請求;
提取數據。數據包括圖片、文字、視頻等,統稱(chēng)為數據。我們發(fā)送請求后,網(wǎng)站 會(huì )將搜索結果呈現給我們。這實(shí)際上是返回數據。這時(shí)候我們可以查看數據來(lái)提取
自動(dòng)化的程序,也就是我們寫(xiě)的代碼,實(shí)現了過(guò)程數據的自動(dòng)提取,比如批量下載和保存返回的圖片,而不是手動(dòng)一一操作。
2. 爬蟲(chóng)分類(lèi)
根據使用場(chǎng)景,爬蟲(chóng)可以分為三類(lèi):
?、偃f(wàn)向履帶(大而全)
它具有強大的功能和廣泛的采集。它通常用于搜索引擎。比如百度瀏覽器就是一個(gè)大爬蟲(chóng)程序。
?、陉P(guān)注爬蟲(chóng)(小而精)
功能比較單一,只抓取特定網(wǎng)站的特定內容。比如去一個(gè)網(wǎng)站批量獲取一些數據。這也是我們最常用的爬蟲(chóng)。
?、墼隽颗老x(chóng)(僅采集更新內容)
這實(shí)際上是 Focused Crawler 的一個(gè)迭代爬蟲(chóng)。它只采集 更新數據。對于舊數據,它不是采集,相當于一直存在和運行。只要有符合要求的更新數據,就會(huì )自動(dòng)抓取新數據。
3.機器人協(xié)議
爬蟲(chóng)中有一個(gè)叫做Robots的協(xié)議需要注意,也稱(chēng)為“網(wǎng)絡(luò )爬蟲(chóng)排除標準”。它的作用是網(wǎng)站告訴你什么可以爬,什么不能爬。
在哪里看這個(gè)機器人協(xié)議?
一般情況下,可以直接在網(wǎng)站的首頁(yè)URL后添加/robots.txt進(jìn)行查看。例如,百度的機器人協(xié)議就在那里??梢钥吹接泻芏郩RL是規定不能爬取的,比如Disallow:/shifen/ 說(shuō)明目前Disallow:/shifen和Disallow:/shifen下的子目錄是不能爬取的。
實(shí)際上,這份Robots協(xié)議屬于君子協(xié)議。對于爬蟲(chóng)來(lái)說(shuō),基本上是口頭約定。如果你違反了它,你可能會(huì )被追究責任。但是,如果你不違反它,爬蟲(chóng)將無(wú)法抓取任何數據,所以通常雙方都視而不見(jiàn),只是不要太囂張。
二、爬取的基本過(guò)程
1.爬行4步
爬行動(dòng)物是如何工作的?
爬蟲(chóng)程序大致可以分為四個(gè)步驟:
?、侔l(fā)起請求
通過(guò)HTTP庫向目標站點(diǎn)發(fā)起請求,即發(fā)送一個(gè)Request,可以收錄額外的headers等信息,等待服務(wù)器響應。
?、讷@取回復內容
如果服務(wù)器可以正常響應,就會(huì )得到一個(gè)Response。Response的內容就是要獲取的頁(yè)面的內容。類(lèi)型可能包括 HTML、Json 字符串和二進(jìn)制數據(如圖片和視頻)。
?、蹆热莘治?br /> 獲取的內容可能是HTML,可以使用正則表達式和網(wǎng)頁(yè)解析庫進(jìn)行解析??赡苁荍son,可以直接轉成Json對象解析,也可能是二進(jìn)制數據,可以保存或者進(jìn)一步處理。
?、鼙4鏀祿?br /> 保存的數據有多種類(lèi)型,可以保存為文本、保存到數據庫或保存為特定格式的文件。
基本上,這是爬蟲(chóng)必須遵循的四個(gè)步驟。
2.請求和響應
請求和響應是爬蟲(chóng)最重要的部分。請求和響應之間是什么關(guān)系?
兩者的關(guān)系如下:
簡(jiǎn)單理解一下,當我們在電腦瀏覽器上搜索東西的時(shí)候,比如前面提到的在百度搜索“Python”,你點(diǎn)擊百度,已經(jīng)向百度的服務(wù)器發(fā)送了一個(gè)Request請求,Request中收錄很多信息,比如如身份信息、請求信息等,服務(wù)器收到請求后做出判斷,然后返回一個(gè)Response給我們的電腦,里面也收錄了很多信息,比如請求成功,比如我們請求的信息結果(文本、圖片、視頻等)。
應該很容易理解吧?
接下來(lái),讓我們仔細看看請求和響應。
三、了解RequestRequest中收錄什么?
它主要收錄以下內容:
1.請求方法
請求方法可以理解為你向網(wǎng)站問(wèn)好的方式。如果你從網(wǎng)站那里得到數據,你要以正確的方式迎接它,這樣它才能回應你,就像你從別人家借東西一樣,你要先敲門(mén)再說(shuō)你好??梢灾苯优郎洗皯?hù)進(jìn)去,看到的人必須出去。
主要的請求方法是GET和POST,還有其他方法如HEAD/PUT/DELETE/OPTIONS,最常用的方法是GET。
2.請求網(wǎng)址
什么是網(wǎng)址?
URL的全稱(chēng)是Uniform Resource Locator。例如,一個(gè)網(wǎng)頁(yè)文檔、圖片、視頻等都有一個(gè)唯一的網(wǎng)址,可以理解為爬蟲(chóng)中的網(wǎng)址或鏈接。
3.請求頭
請求頭是什么?
英文名稱(chēng)Request Headers通常是指請求中收錄的頭信息,如User-Agent、Host、Cookies等。
當你向網(wǎng)站發(fā)送請求時(shí),這些東西就相當于你的身份信息。經(jīng)常需要偽裝自己,偽裝成普通用戶(hù)來(lái)躲避你的目標。網(wǎng)站 識別你是爬蟲(chóng),避免一些反扒問(wèn)題,順利獲取數據。
4.請求正文
官方說(shuō)法是請求中攜帶的附加數據,例如提交表單時(shí)的表單數據。
在爬蟲(chóng)中如何理解?
例如,在某些頁(yè)面上,您必須先登錄,或者您必須告訴我您的請求。比如你在百度頁(yè)面搜索“Python”,那么關(guān)鍵詞“Python”就是你要攜帶的請求體,看到你的請求體,看到百度就知道你要做什么了。
當然,請求體通常用在 POST 請求方法中。GET 請求時(shí),我們通常將其拼接在 URL 中。先了解一下就夠了,后續具體爬蟲(chóng)可以去加深了解。
5.實(shí)用視圖請求
既然我們已經(jīng)講了Request的理論,那我們就可以進(jìn)入實(shí)際操作,看看Request在哪里,收錄什么。
以谷歌瀏覽器為例,我輸入關(guān)鍵詞“Python”就可以搜索到一堆結果。我們使用網(wǎng)頁(yè)自帶的控制臺窗口來(lái)分析我們發(fā)送的Request請求。
按住F12或者在網(wǎng)頁(yè)空白處右擊選擇“檢查”,然后就可以看到控制臺里有很多選項了。例如,上列有一個(gè)菜單欄。初級爬蟲(chóng)一般使用元素(Elements)。還有Network(網(wǎng)絡(luò )),其他的東西暫時(shí)不需要,等你學(xué)習更高級一點(diǎn)的爬蟲(chóng)時(shí)會(huì )用到,比如JS逆向工程可能會(huì )用到Application窗口,以后再學(xué)習。
Elements 收錄了所有請求結果的每一個(gè)元素,比如每張圖片的源代碼,尤其是點(diǎn)擊左上角的小箭頭,你移動(dòng)到的每一個(gè)地方都會(huì )在 Elements 窗口下顯示為源代碼。
網(wǎng)絡(luò )是爬蟲(chóng)常用的網(wǎng)絡(luò )信息。其中包括我們的請求。讓我們來(lái)看看。在“網(wǎng)絡(luò )”窗口下,選中“禁用緩存”并單擊“全部”。
刷新網(wǎng)頁(yè)看看效果。您可以看到我們發(fā)送了 132 個(gè)請求請求。不要對這個(gè)好奇。雖然我們只向百度發(fā)送了類(lèi)似“Python”這樣的請求,但其中一些是附加到網(wǎng)頁(yè)的請求。
雖然圖片格式有很多種,比如png、jpeg等,但是可以滑動(dòng)到頂部。在Type欄中,有文檔類(lèi)型,即web文檔的含義。點(diǎn)擊進(jìn)入,我們將是我們的。索取資料。
點(diǎn)擊文檔進(jìn)入后,有一個(gè)新的菜單欄。在Headers列下,我們可以看到Request URL,也就是我們之前提到的請求URL。這個(gè)URL就是我們實(shí)際從網(wǎng)頁(yè)請求的URL,然后返回 有一個(gè)請求方法,可以看出是一個(gè)GET請求。
如果再次向下滑動(dòng),還可以看到我們之前提到的 Request Headers。信息很多,但是我們前面提到的User-Agent、Host、Cookies都是我們提供給服務(wù)器的信息。
雖然Request Headers里面的內容很多,我們在寫(xiě)爬蟲(chóng)程序的時(shí)候也要做這方面的偽裝工作,但是不是所有的信息都要寫(xiě),有選擇的寫(xiě)一些重要的信息就足夠了,比如User-Agent必需的。Referer 和 Host 是可選區域。登錄時(shí)會(huì )攜帶cookies,常見(jiàn)的有4種需要偽裝。
至于請求體,我暫時(shí)不去查了,因為我們這里的請求方法是GET請求。請求正文只能在 POST 請求中查看。沒(méi)關(guān)系,爬蟲(chóng)什么時(shí)候用你自然就明白了。
四、了解響應
Response 主要包括 3 條內容,我們來(lái)一一看看。
1.響應狀態(tài)
我們發(fā)送請求后,網(wǎng)站會(huì )返回給我們一個(gè)Response,其中收錄響應狀態(tài)碼的響應狀態(tài),大致可以分為以下幾種:
?、倮缭?00以?xún)?,響應狀態(tài)碼200表示成功。
?、谌俚姆秶?,比如301就是跳躍。
?、鬯陌俜秶鷥?,如404找不到頁(yè)面。
?、芪灏俜秶鷥?,如502找不到頁(yè)面。
對于爬蟲(chóng)來(lái)說(shuō),兩三百是我們最想看到的響應狀態(tài),有可能獲取到數據,而四五百基本是冷的,獲取不到數據。
比如我們剛剛發(fā)送了之前的Request請求時(shí),在文檔文件中,在Headers窗口下的General中,可以看到響應狀態(tài)碼為200,表示網(wǎng)頁(yè)成功響應了我們的請求。
2. 響應頭
服務(wù)器給我們的信息也會(huì )收錄響應頭,其中包括內容類(lèi)型、內容長(cháng)度、服務(wù)器信息、設置cookies等。
其實(shí)響應頭對我們來(lái)說(shuō)并沒(méi)有那么重要,在這里了解一下就行了。
3.響應體
這一點(diǎn)很重要,除了上面第一點(diǎn)的響應狀態(tài),就是它,因為它收錄了請求資源的內容,比如網(wǎng)頁(yè)HTML和圖像二進(jìn)制數。
響應體在哪里?它也在文檔文件的響應列中??梢韵蛳禄瑒?dòng),看到有很多響應數據。這是我們得到的數據。有些可以直接下載,有些需要技術(shù)分析。知道了。
五、爬蟲(chóng)能得到什么樣的數據?
爬蟲(chóng)能得到什么樣的數據?基本上可以分為以下幾類(lèi):
?、?Web 文檔,如 HTML 文檔、Json 格式的文本等。
?、趫D片以二進(jìn)制文件形式獲取,可以保存為圖片格式。
?、垡曨l,也是二進(jìn)制文件,可以保存為視頻格式。
?、芷渌?,反正其他能看到的東西理論上爬蟲(chóng)都能得到,看難易程度。
六、如何解析數據?
從前面我們可以成功發(fā)送請求,網(wǎng)頁(yè)會(huì )返回給我們很多數據,有幾千甚至幾萬(wàn)個(gè)代碼,那么如何在這么多代碼中找到我們想要的數據呢?常用的方法如下:
?、僦苯又委?。當網(wǎng)頁(yè)返回的數據是一些文本時(shí),就是我們想要的內容,不需要過(guò)濾處理,直接處理即可。
?、贘son分析。如果返回的網(wǎng)頁(yè)不是HTML數據而是Json數據,則需要Json解析技術(shù)。
?、壅齽t表達式。如果返回的數據是符合正則表達式的數據,可以使用正則表達式進(jìn)行分析。
?、芷渌治龇椒?。常用的有XPath、BeautifulSoup、PyQuery,都是爬蟲(chóng)常用的解析庫。
七、如何保存數據?
獲取數據后,常用的保存數據的方法如下:
?、傥淖???梢灾苯颖4鏋榧兾谋?、EXCEL、Json、Xml等類(lèi)型的文本。
?、陉P(guān)系數據庫。數據可以保存到關(guān)系型數據庫,如MySQL和Oracle數據庫。
?、鄯顷P(guān)系型數據庫。比如MongoDB、Readis和Key-Value存儲。
?、?二進(jìn)制文件。比如圖片、視頻、音頻等可以直接保存為特定格式。
練習視頻: 查看全部
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(淺談一下爬蟲(chóng)什么是爬蟲(chóng)?(二):請求網(wǎng)站并提取數據的自動(dòng)化程序)
前言
爬蟲(chóng)是一項非常有趣的技術(shù)。您可以使用爬蟲(chóng)技術(shù)來(lái)獲取其他人無(wú)法獲得或需要付費的東西。您還可以自動(dòng)抓取并保存大量數據,減少手動(dòng)完成一些繁瑣任務(wù)的時(shí)間和精力。
可以說(shuō)學(xué)編程的人很多,不玩爬蟲(chóng)的意義就少了很多。無(wú)論是業(yè)余愛(ài)好者、私人工作還是專(zhuān)業(yè)爬行動(dòng)物,爬行動(dòng)物世界都非常令人興奮。
今天給大家講一下爬蟲(chóng),目的是讓準備學(xué)習爬蟲(chóng)或者剛入門(mén)的人對爬蟲(chóng)有更深入、更全面的了解。
一、認識爬蟲(chóng)
1.什么是爬蟲(chóng)?
一句話(huà)介紹著(zhù)名的爬蟲(chóng):一個(gè)請求網(wǎng)站并提取數據的自動(dòng)化程序。
下面我們來(lái)拆解了解一下爬蟲(chóng):
網(wǎng)站的請求就是向網(wǎng)站發(fā)送請求。比如去百度搜索關(guān)鍵詞“Python”。這時(shí),我們的瀏覽器會(huì )向網(wǎng)站發(fā)送請求;
提取數據。數據包括圖片、文字、視頻等,統稱(chēng)為數據。我們發(fā)送請求后,網(wǎng)站 會(huì )將搜索結果呈現給我們。這實(shí)際上是返回數據。這時(shí)候我們可以查看數據來(lái)提取
自動(dòng)化的程序,也就是我們寫(xiě)的代碼,實(shí)現了過(guò)程數據的自動(dòng)提取,比如批量下載和保存返回的圖片,而不是手動(dòng)一一操作。

2. 爬蟲(chóng)分類(lèi)
根據使用場(chǎng)景,爬蟲(chóng)可以分為三類(lèi):
?、偃f(wàn)向履帶(大而全)
它具有強大的功能和廣泛的采集。它通常用于搜索引擎。比如百度瀏覽器就是一個(gè)大爬蟲(chóng)程序。
?、陉P(guān)注爬蟲(chóng)(小而精)
功能比較單一,只抓取特定網(wǎng)站的特定內容。比如去一個(gè)網(wǎng)站批量獲取一些數據。這也是我們最常用的爬蟲(chóng)。
?、墼隽颗老x(chóng)(僅采集更新內容)
這實(shí)際上是 Focused Crawler 的一個(gè)迭代爬蟲(chóng)。它只采集 更新數據。對于舊數據,它不是采集,相當于一直存在和運行。只要有符合要求的更新數據,就會(huì )自動(dòng)抓取新數據。

3.機器人協(xié)議
爬蟲(chóng)中有一個(gè)叫做Robots的協(xié)議需要注意,也稱(chēng)為“網(wǎng)絡(luò )爬蟲(chóng)排除標準”。它的作用是網(wǎng)站告訴你什么可以爬,什么不能爬。
在哪里看這個(gè)機器人協(xié)議?
一般情況下,可以直接在網(wǎng)站的首頁(yè)URL后添加/robots.txt進(jìn)行查看。例如,百度的機器人協(xié)議就在那里??梢钥吹接泻芏郩RL是規定不能爬取的,比如Disallow:/shifen/ 說(shuō)明目前Disallow:/shifen和Disallow:/shifen下的子目錄是不能爬取的。

實(shí)際上,這份Robots協(xié)議屬于君子協(xié)議。對于爬蟲(chóng)來(lái)說(shuō),基本上是口頭約定。如果你違反了它,你可能會(huì )被追究責任。但是,如果你不違反它,爬蟲(chóng)將無(wú)法抓取任何數據,所以通常雙方都視而不見(jiàn),只是不要太囂張。

二、爬取的基本過(guò)程
1.爬行4步
爬行動(dòng)物是如何工作的?
爬蟲(chóng)程序大致可以分為四個(gè)步驟:
?、侔l(fā)起請求
通過(guò)HTTP庫向目標站點(diǎn)發(fā)起請求,即發(fā)送一個(gè)Request,可以收錄額外的headers等信息,等待服務(wù)器響應。
?、讷@取回復內容
如果服務(wù)器可以正常響應,就會(huì )得到一個(gè)Response。Response的內容就是要獲取的頁(yè)面的內容。類(lèi)型可能包括 HTML、Json 字符串和二進(jìn)制數據(如圖片和視頻)。
?、蹆热莘治?br /> 獲取的內容可能是HTML,可以使用正則表達式和網(wǎng)頁(yè)解析庫進(jìn)行解析??赡苁荍son,可以直接轉成Json對象解析,也可能是二進(jìn)制數據,可以保存或者進(jìn)一步處理。
?、鼙4鏀祿?br /> 保存的數據有多種類(lèi)型,可以保存為文本、保存到數據庫或保存為特定格式的文件。
基本上,這是爬蟲(chóng)必須遵循的四個(gè)步驟。
2.請求和響應
請求和響應是爬蟲(chóng)最重要的部分。請求和響應之間是什么關(guān)系?
兩者的關(guān)系如下:

簡(jiǎn)單理解一下,當我們在電腦瀏覽器上搜索東西的時(shí)候,比如前面提到的在百度搜索“Python”,你點(diǎn)擊百度,已經(jīng)向百度的服務(wù)器發(fā)送了一個(gè)Request請求,Request中收錄很多信息,比如如身份信息、請求信息等,服務(wù)器收到請求后做出判斷,然后返回一個(gè)Response給我們的電腦,里面也收錄了很多信息,比如請求成功,比如我們請求的信息結果(文本、圖片、視頻等)。
應該很容易理解吧?
接下來(lái),讓我們仔細看看請求和響應。
三、了解RequestRequest中收錄什么?
它主要收錄以下內容:
1.請求方法
請求方法可以理解為你向網(wǎng)站問(wèn)好的方式。如果你從網(wǎng)站那里得到數據,你要以正確的方式迎接它,這樣它才能回應你,就像你從別人家借東西一樣,你要先敲門(mén)再說(shuō)你好??梢灾苯优郎洗皯?hù)進(jìn)去,看到的人必須出去。
主要的請求方法是GET和POST,還有其他方法如HEAD/PUT/DELETE/OPTIONS,最常用的方法是GET。
2.請求網(wǎng)址
什么是網(wǎng)址?
URL的全稱(chēng)是Uniform Resource Locator。例如,一個(gè)網(wǎng)頁(yè)文檔、圖片、視頻等都有一個(gè)唯一的網(wǎng)址,可以理解為爬蟲(chóng)中的網(wǎng)址或鏈接。
3.請求頭
請求頭是什么?
英文名稱(chēng)Request Headers通常是指請求中收錄的頭信息,如User-Agent、Host、Cookies等。
當你向網(wǎng)站發(fā)送請求時(shí),這些東西就相當于你的身份信息。經(jīng)常需要偽裝自己,偽裝成普通用戶(hù)來(lái)躲避你的目標。網(wǎng)站 識別你是爬蟲(chóng),避免一些反扒問(wèn)題,順利獲取數據。
4.請求正文
官方說(shuō)法是請求中攜帶的附加數據,例如提交表單時(shí)的表單數據。
在爬蟲(chóng)中如何理解?
例如,在某些頁(yè)面上,您必須先登錄,或者您必須告訴我您的請求。比如你在百度頁(yè)面搜索“Python”,那么關(guān)鍵詞“Python”就是你要攜帶的請求體,看到你的請求體,看到百度就知道你要做什么了。
當然,請求體通常用在 POST 請求方法中。GET 請求時(shí),我們通常將其拼接在 URL 中。先了解一下就夠了,后續具體爬蟲(chóng)可以去加深了解。
5.實(shí)用視圖請求
既然我們已經(jīng)講了Request的理論,那我們就可以進(jìn)入實(shí)際操作,看看Request在哪里,收錄什么。
以谷歌瀏覽器為例,我輸入關(guān)鍵詞“Python”就可以搜索到一堆結果。我們使用網(wǎng)頁(yè)自帶的控制臺窗口來(lái)分析我們發(fā)送的Request請求。
按住F12或者在網(wǎng)頁(yè)空白處右擊選擇“檢查”,然后就可以看到控制臺里有很多選項了。例如,上列有一個(gè)菜單欄。初級爬蟲(chóng)一般使用元素(Elements)。還有Network(網(wǎng)絡(luò )),其他的東西暫時(shí)不需要,等你學(xué)習更高級一點(diǎn)的爬蟲(chóng)時(shí)會(huì )用到,比如JS逆向工程可能會(huì )用到Application窗口,以后再學(xué)習。
Elements 收錄了所有請求結果的每一個(gè)元素,比如每張圖片的源代碼,尤其是點(diǎn)擊左上角的小箭頭,你移動(dòng)到的每一個(gè)地方都會(huì )在 Elements 窗口下顯示為源代碼。

網(wǎng)絡(luò )是爬蟲(chóng)常用的網(wǎng)絡(luò )信息。其中包括我們的請求。讓我們來(lái)看看。在“網(wǎng)絡(luò )”窗口下,選中“禁用緩存”并單擊“全部”。

刷新網(wǎng)頁(yè)看看效果。您可以看到我們發(fā)送了 132 個(gè)請求請求。不要對這個(gè)好奇。雖然我們只向百度發(fā)送了類(lèi)似“Python”這樣的請求,但其中一些是附加到網(wǎng)頁(yè)的請求。

雖然圖片格式有很多種,比如png、jpeg等,但是可以滑動(dòng)到頂部。在Type欄中,有文檔類(lèi)型,即web文檔的含義。點(diǎn)擊進(jìn)入,我們將是我們的。索取資料。

點(diǎn)擊文檔進(jìn)入后,有一個(gè)新的菜單欄。在Headers列下,我們可以看到Request URL,也就是我們之前提到的請求URL。這個(gè)URL就是我們實(shí)際從網(wǎng)頁(yè)請求的URL,然后返回 有一個(gè)請求方法,可以看出是一個(gè)GET請求。

如果再次向下滑動(dòng),還可以看到我們之前提到的 Request Headers。信息很多,但是我們前面提到的User-Agent、Host、Cookies都是我們提供給服務(wù)器的信息。

雖然Request Headers里面的內容很多,我們在寫(xiě)爬蟲(chóng)程序的時(shí)候也要做這方面的偽裝工作,但是不是所有的信息都要寫(xiě),有選擇的寫(xiě)一些重要的信息就足夠了,比如User-Agent必需的。Referer 和 Host 是可選區域。登錄時(shí)會(huì )攜帶cookies,常見(jiàn)的有4種需要偽裝。
至于請求體,我暫時(shí)不去查了,因為我們這里的請求方法是GET請求。請求正文只能在 POST 請求中查看。沒(méi)關(guān)系,爬蟲(chóng)什么時(shí)候用你自然就明白了。
四、了解響應
Response 主要包括 3 條內容,我們來(lái)一一看看。
1.響應狀態(tài)
我們發(fā)送請求后,網(wǎng)站會(huì )返回給我們一個(gè)Response,其中收錄響應狀態(tài)碼的響應狀態(tài),大致可以分為以下幾種:
?、倮缭?00以?xún)?,響應狀態(tài)碼200表示成功。
?、谌俚姆秶?,比如301就是跳躍。
?、鬯陌俜秶鷥?,如404找不到頁(yè)面。
?、芪灏俜秶鷥?,如502找不到頁(yè)面。
對于爬蟲(chóng)來(lái)說(shuō),兩三百是我們最想看到的響應狀態(tài),有可能獲取到數據,而四五百基本是冷的,獲取不到數據。
比如我們剛剛發(fā)送了之前的Request請求時(shí),在文檔文件中,在Headers窗口下的General中,可以看到響應狀態(tài)碼為200,表示網(wǎng)頁(yè)成功響應了我們的請求。
2. 響應頭
服務(wù)器給我們的信息也會(huì )收錄響應頭,其中包括內容類(lèi)型、內容長(cháng)度、服務(wù)器信息、設置cookies等。
其實(shí)響應頭對我們來(lái)說(shuō)并沒(méi)有那么重要,在這里了解一下就行了。
3.響應體
這一點(diǎn)很重要,除了上面第一點(diǎn)的響應狀態(tài),就是它,因為它收錄了請求資源的內容,比如網(wǎng)頁(yè)HTML和圖像二進(jìn)制數。
響應體在哪里?它也在文檔文件的響應列中??梢韵蛳禄瑒?dòng),看到有很多響應數據。這是我們得到的數據。有些可以直接下載,有些需要技術(shù)分析。知道了。
五、爬蟲(chóng)能得到什么樣的數據?
爬蟲(chóng)能得到什么樣的數據?基本上可以分為以下幾類(lèi):
?、?Web 文檔,如 HTML 文檔、Json 格式的文本等。
?、趫D片以二進(jìn)制文件形式獲取,可以保存為圖片格式。
?、垡曨l,也是二進(jìn)制文件,可以保存為視頻格式。
?、芷渌?,反正其他能看到的東西理論上爬蟲(chóng)都能得到,看難易程度。
六、如何解析數據?
從前面我們可以成功發(fā)送請求,網(wǎng)頁(yè)會(huì )返回給我們很多數據,有幾千甚至幾萬(wàn)個(gè)代碼,那么如何在這么多代碼中找到我們想要的數據呢?常用的方法如下:
?、僦苯又委?。當網(wǎng)頁(yè)返回的數據是一些文本時(shí),就是我們想要的內容,不需要過(guò)濾處理,直接處理即可。
?、贘son分析。如果返回的網(wǎng)頁(yè)不是HTML數據而是Json數據,則需要Json解析技術(shù)。
?、壅齽t表達式。如果返回的數據是符合正則表達式的數據,可以使用正則表達式進(jìn)行分析。
?、芷渌治龇椒?。常用的有XPath、BeautifulSoup、PyQuery,都是爬蟲(chóng)常用的解析庫。
七、如何保存數據?
獲取數據后,常用的保存數據的方法如下:
?、傥淖???梢灾苯颖4鏋榧兾谋?、EXCEL、Json、Xml等類(lèi)型的文本。
?、陉P(guān)系數據庫。數據可以保存到關(guān)系型數據庫,如MySQL和Oracle數據庫。
?、鄯顷P(guān)系型數據庫。比如MongoDB、Readis和Key-Value存儲。
?、?二進(jìn)制文件。比如圖片、視頻、音頻等可以直接保存為特定格式。
練習視頻:
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(什么是網(wǎng)絡(luò )爬蟲(chóng)?向日葵智能實(shí)戰小項目)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 59 次瀏覽 ? 2021-11-07 08:00
原帖:向日葵智能
現在基于python的爬蟲(chóng)實(shí)戰項目,網(wǎng)上資料還是很多的,但是本節介紹的爬蟲(chóng)略有不同:同樣是下載某個(gè)網(wǎng)頁(yè)的漂亮圖片,不同的是我們使用人工智能過(guò)濾掉漂亮的。. 慢慢說(shuō)爬蟲(chóng)吧。過(guò)濾的原理很簡(jiǎn)單。參考python實(shí)戰項目,人臉檢測,讓電腦給你的外表打分。
什么是網(wǎng)絡(luò )爬蟲(chóng)?
網(wǎng)絡(luò )爬蟲(chóng)也稱(chēng)為網(wǎng)絡(luò )蜘蛛。它的官方定義可以在百科全書(shū)中找到。這里我們只說(shuō)什么是網(wǎng)絡(luò )爬蟲(chóng),可能不準確,但相對來(lái)說(shuō)比較好理解,舉個(gè)例子吧。
有時(shí),您可能會(huì )從某個(gè)網(wǎng)頁(yè)上看到一條信息,并覺(jué)得它符合您的口味,因此您將其保存。這種讀取和存儲數據的過(guò)程類(lèi)似于網(wǎng)絡(luò )爬蟲(chóng)。百度、谷歌等搜索引擎,相信大家都用過(guò),他們是怎么實(shí)現搜索功能的?
事實(shí)上,這一切都取決于爬蟲(chóng)。他們的網(wǎng)絡(luò )爬蟲(chóng)不斷地爬取互聯(lián)網(wǎng)上的信息,并保存他們認為有用的信息。當用戶(hù)輸入關(guān)鍵詞進(jìn)行搜索時(shí),百度谷歌將關(guān)鍵詞與自己的數據庫進(jìn)行匹配,匹配最相關(guān)的網(wǎng)頁(yè)展示給用戶(hù),從而完成一次搜索。
再設想一個(gè)場(chǎng)景:有一天,你可能會(huì )看到某個(gè)網(wǎng)站的很多信息非常好,一個(gè)個(gè)打開(kāi)和存儲網(wǎng)頁(yè)真的很麻煩。那么這時(shí)候就可以使用網(wǎng)絡(luò )爬蟲(chóng)爬下整個(gè)網(wǎng)站的信息了。這也是爬蟲(chóng)的一個(gè)目的。
Python實(shí)戰項目
經(jīng)過(guò)上面的解釋?zhuān)覀兛梢灾谰W(wǎng)絡(luò )爬蟲(chóng)的行為和我們?yōu)g覽器的行為非常相似。所以,這里介紹的python網(wǎng)絡(luò )爬蟲(chóng)其實(shí)就是模擬一個(gè)瀏覽器。
上圖是一組圖片。如果我們要保存這些圖片,要一一保存就太麻煩了。貌似迅雷可以下載所有的鏈接,但它也會(huì )下載不該下載的,比如紅框里的怪人。
右鍵查看網(wǎng)頁(yè)源碼:
我們得到的字符很多,我們只關(guān)心圖片鏈接,打開(kāi)上圖紅框中的鏈接,得到的圖片如下:
明明圖片的鏈接在網(wǎng)頁(yè)的源碼里,那么這個(gè)python實(shí)戰項目,網(wǎng)絡(luò )爬蟲(chóng)怎么寫(xiě)呢?
Python實(shí)戰項目,網(wǎng)絡(luò )爬蟲(chóng)1. 先獲取網(wǎng)頁(yè)源碼
其實(shí)就是模擬瀏覽器請求圖片頁(yè)面的URL。話(huà)不多說(shuō),看源碼,很簡(jiǎn)單
#coding:utf-8
import requests
# url 即為圖片網(wǎng)頁(yè)的網(wǎng)址
url = "https://image.baidu.com/search ... mp%3B【...】"
data = requests.get(url)
print data.content
Python
復制
運行后會(huì )發(fā)現我們剛才在瀏覽器中查看的源代碼已經(jīng)打印出來(lái)了。
2. Python項目實(shí)戰,提取圖片鏈接
如何從大量字符中提取關(guān)鍵美女圖片鏈接?答案是使用正則表達式。關(guān)于正則表達式,可以參考:
Python基礎,什么是正則表達式,正則表達式的使用
使用正則表達式的第一步是找出鏈接的模式及其出現的位置。這是一個(gè)粗略的嘗試:
注意"objURL":和逗號(,)之間存在鏈接,那么我們的實(shí)戰項目,python網(wǎng)絡(luò )爬蟲(chóng)的正則表達式代碼可以這樣寫(xiě):
#coding:utf-8
import requests
# url 即為圖片網(wǎng)頁(yè)的網(wǎng)址
url = "https://image.baidu.com/search ... mp%3B【...】"
data = requests.get(url)
#print data.content
# 正則表達式的使用,可參照上一節
pattern = re.compile(r'.*?"objURL":"(.*?)",', re.S)
result = pattern.findall(data.content)
for item in result:
print item
Python
復制
運行實(shí)戰項目的python網(wǎng)絡(luò )爬蟲(chóng)腳本,發(fā)現成功了,得到了一系列圖片地址:
3. Python實(shí)戰項目,下載圖片
獲取到圖片的鏈接后,我們如何保存它們?答案是模擬瀏覽器訪(fǎng)問(wèn)一次圖片鏈接,然后將獲取到的數據寫(xiě)入文件。我們直接上傳代碼:
#coding:utf-8
import requests
# url 即為圖片網(wǎng)頁(yè)的網(wǎng)址
url = "https://image.baidu.com/search ... mp%3B【...】"
data = requests.get(url)
#print data.content
# 正則表達式的使用,可參照上一節
pattern = re.compile(r'.*?"objURL":"(.*?)",', re.S)
result = pattern.findall(data.content)
for item in result:
try:
pic = requests.get(item, timeout=2)
fp = open("pic/%d.jpg"%i, "w+")
fp.write(pic.content)
fp.close()
i = i + 1
except Exception, e:
pass
Python
復制
執行代碼前,創(chuàng )建一個(gè)文件夾pic存放圖片,然后執行實(shí)戰項目python腳本得到
這是一個(gè)成功!
4. Python實(shí)戰項目,過(guò)濾圖片
可以看到,雖然圖片被爬下來(lái)了,但并不完美,因為怪人也被下載了。如何過(guò)濾?其實(shí)可以參考我們之前的博客:
Python實(shí)戰小項目,人臉檢測,讓電腦給你的顏值打分。我們只下載女(女),顏值大于55分,代碼如下:
#coding:utf-8
import requests
import urllib2
import random
import time, re
import base64
import urllib, json
from token import GetToken
faceDetectUrl = "https://aip.baidubce.com/rest/ ... ot%3B
# 根據人臉檢測的顏值打分,判斷是否下載
def IfDownLoad(pic, token):
img = base64.b64encode(pic)
params = {
"face_fields":"age,beauty,expression,faceshape,gender,glasses,landmark,race,qualities","image":img,"max_face_num":5}
params = urllib.urlencode(params)
request_url = faceDetectUrl + "?access_token=" + token
request = urllib2.Request(url=request_url, data=params)
request.add_header('Content-Type', 'application/x-www-form-urlencoded')
response = urllib2.urlopen(request)
content = response.read()
if content:
js = json.loads(content)
for item in js['result']:
print "age: %d, beauty: %d" % (item['age'], item['beauty'])
if 0 == cmp('female', item['gender']):
if (item['age']55): # 只下載女孩,年齡小于 29,顏值大于 55分
return True
return False
def DownLoad(url, i):
fp = open("pic/%d.jpg"%i, "w+")
fp.write(pic.content)
fp.close()
if __name__ == "__main__":
# 獲取網(wǎng)頁(yè)源代碼
url = "https://image.baidu.com/search ... mp%3B【...】"
data = requests.get(url)
# print data.content
# 獲取鏈接并判斷是否下載
pattern = re.compile(r'.*?"objURL":"(.*?)",', re.S)
result = pattern.findall(data.content)
i = 0
token = GetToken()
for item in result:
print item
try:
pic = requests.get(item, timeout=2)
if(True == IfDownLoad(pic.content, token)):
DownLoad(pic.content, i)
i = i + 1
except Exception, e:
pass
Python
復制
運行實(shí)戰項目python腳本,結果如??下:
可以看到,怪人都被淘汰了,下載的圖片基本都是顏值高的美圖。這樣我們就完成了實(shí)戰項目,python人工智能爬蟲(chóng)-圖片的選擇性爬取。 查看全部
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(什么是網(wǎng)絡(luò )爬蟲(chóng)?向日葵智能實(shí)戰小項目)
原帖:向日葵智能
現在基于python的爬蟲(chóng)實(shí)戰項目,網(wǎng)上資料還是很多的,但是本節介紹的爬蟲(chóng)略有不同:同樣是下載某個(gè)網(wǎng)頁(yè)的漂亮圖片,不同的是我們使用人工智能過(guò)濾掉漂亮的。. 慢慢說(shuō)爬蟲(chóng)吧。過(guò)濾的原理很簡(jiǎn)單。參考python實(shí)戰項目,人臉檢測,讓電腦給你的外表打分。
什么是網(wǎng)絡(luò )爬蟲(chóng)?
網(wǎng)絡(luò )爬蟲(chóng)也稱(chēng)為網(wǎng)絡(luò )蜘蛛。它的官方定義可以在百科全書(shū)中找到。這里我們只說(shuō)什么是網(wǎng)絡(luò )爬蟲(chóng),可能不準確,但相對來(lái)說(shuō)比較好理解,舉個(gè)例子吧。
有時(shí),您可能會(huì )從某個(gè)網(wǎng)頁(yè)上看到一條信息,并覺(jué)得它符合您的口味,因此您將其保存。這種讀取和存儲數據的過(guò)程類(lèi)似于網(wǎng)絡(luò )爬蟲(chóng)。百度、谷歌等搜索引擎,相信大家都用過(guò),他們是怎么實(shí)現搜索功能的?

事實(shí)上,這一切都取決于爬蟲(chóng)。他們的網(wǎng)絡(luò )爬蟲(chóng)不斷地爬取互聯(lián)網(wǎng)上的信息,并保存他們認為有用的信息。當用戶(hù)輸入關(guān)鍵詞進(jìn)行搜索時(shí),百度谷歌將關(guān)鍵詞與自己的數據庫進(jìn)行匹配,匹配最相關(guān)的網(wǎng)頁(yè)展示給用戶(hù),從而完成一次搜索。
再設想一個(gè)場(chǎng)景:有一天,你可能會(huì )看到某個(gè)網(wǎng)站的很多信息非常好,一個(gè)個(gè)打開(kāi)和存儲網(wǎng)頁(yè)真的很麻煩。那么這時(shí)候就可以使用網(wǎng)絡(luò )爬蟲(chóng)爬下整個(gè)網(wǎng)站的信息了。這也是爬蟲(chóng)的一個(gè)目的。
Python實(shí)戰項目
經(jīng)過(guò)上面的解釋?zhuān)覀兛梢灾谰W(wǎng)絡(luò )爬蟲(chóng)的行為和我們?yōu)g覽器的行為非常相似。所以,這里介紹的python網(wǎng)絡(luò )爬蟲(chóng)其實(shí)就是模擬一個(gè)瀏覽器。

上圖是一組圖片。如果我們要保存這些圖片,要一一保存就太麻煩了。貌似迅雷可以下載所有的鏈接,但它也會(huì )下載不該下載的,比如紅框里的怪人。
右鍵查看網(wǎng)頁(yè)源碼:

我們得到的字符很多,我們只關(guān)心圖片鏈接,打開(kāi)上圖紅框中的鏈接,得到的圖片如下:

明明圖片的鏈接在網(wǎng)頁(yè)的源碼里,那么這個(gè)python實(shí)戰項目,網(wǎng)絡(luò )爬蟲(chóng)怎么寫(xiě)呢?
Python實(shí)戰項目,網(wǎng)絡(luò )爬蟲(chóng)1. 先獲取網(wǎng)頁(yè)源碼
其實(shí)就是模擬瀏覽器請求圖片頁(yè)面的URL。話(huà)不多說(shuō),看源碼,很簡(jiǎn)單
#coding:utf-8
import requests
# url 即為圖片網(wǎng)頁(yè)的網(wǎng)址
url = "https://image.baidu.com/search ... mp%3B【...】"
data = requests.get(url)
print data.content
Python
復制
運行后會(huì )發(fā)現我們剛才在瀏覽器中查看的源代碼已經(jīng)打印出來(lái)了。
2. Python項目實(shí)戰,提取圖片鏈接
如何從大量字符中提取關(guān)鍵美女圖片鏈接?答案是使用正則表達式。關(guān)于正則表達式,可以參考:
Python基礎,什么是正則表達式,正則表達式的使用
使用正則表達式的第一步是找出鏈接的模式及其出現的位置。這是一個(gè)粗略的嘗試:

注意"objURL":和逗號(,)之間存在鏈接,那么我們的實(shí)戰項目,python網(wǎng)絡(luò )爬蟲(chóng)的正則表達式代碼可以這樣寫(xiě):
#coding:utf-8
import requests
# url 即為圖片網(wǎng)頁(yè)的網(wǎng)址
url = "https://image.baidu.com/search ... mp%3B【...】"
data = requests.get(url)
#print data.content
# 正則表達式的使用,可參照上一節
pattern = re.compile(r'.*?"objURL":"(.*?)",', re.S)
result = pattern.findall(data.content)
for item in result:
print item
Python
復制
運行實(shí)戰項目的python網(wǎng)絡(luò )爬蟲(chóng)腳本,發(fā)現成功了,得到了一系列圖片地址:

3. Python實(shí)戰項目,下載圖片
獲取到圖片的鏈接后,我們如何保存它們?答案是模擬瀏覽器訪(fǎng)問(wèn)一次圖片鏈接,然后將獲取到的數據寫(xiě)入文件。我們直接上傳代碼:
#coding:utf-8
import requests
# url 即為圖片網(wǎng)頁(yè)的網(wǎng)址
url = "https://image.baidu.com/search ... mp%3B【...】"
data = requests.get(url)
#print data.content
# 正則表達式的使用,可參照上一節
pattern = re.compile(r'.*?"objURL":"(.*?)",', re.S)
result = pattern.findall(data.content)
for item in result:
try:
pic = requests.get(item, timeout=2)
fp = open("pic/%d.jpg"%i, "w+")
fp.write(pic.content)
fp.close()
i = i + 1
except Exception, e:
pass
Python
復制
執行代碼前,創(chuàng )建一個(gè)文件夾pic存放圖片,然后執行實(shí)戰項目python腳本得到

這是一個(gè)成功!
4. Python實(shí)戰項目,過(guò)濾圖片
可以看到,雖然圖片被爬下來(lái)了,但并不完美,因為怪人也被下載了。如何過(guò)濾?其實(shí)可以參考我們之前的博客:
Python實(shí)戰小項目,人臉檢測,讓電腦給你的顏值打分。我們只下載女(女),顏值大于55分,代碼如下:
#coding:utf-8
import requests
import urllib2
import random
import time, re
import base64
import urllib, json
from token import GetToken
faceDetectUrl = "https://aip.baidubce.com/rest/ ... ot%3B
# 根據人臉檢測的顏值打分,判斷是否下載
def IfDownLoad(pic, token):
img = base64.b64encode(pic)
params = {
"face_fields":"age,beauty,expression,faceshape,gender,glasses,landmark,race,qualities","image":img,"max_face_num":5}
params = urllib.urlencode(params)
request_url = faceDetectUrl + "?access_token=" + token
request = urllib2.Request(url=request_url, data=params)
request.add_header('Content-Type', 'application/x-www-form-urlencoded')
response = urllib2.urlopen(request)
content = response.read()
if content:
js = json.loads(content)
for item in js['result']:
print "age: %d, beauty: %d" % (item['age'], item['beauty'])
if 0 == cmp('female', item['gender']):
if (item['age']55): # 只下載女孩,年齡小于 29,顏值大于 55分
return True
return False
def DownLoad(url, i):
fp = open("pic/%d.jpg"%i, "w+")
fp.write(pic.content)
fp.close()
if __name__ == "__main__":
# 獲取網(wǎng)頁(yè)源代碼
url = "https://image.baidu.com/search ... mp%3B【...】"
data = requests.get(url)
# print data.content
# 獲取鏈接并判斷是否下載
pattern = re.compile(r'.*?"objURL":"(.*?)",', re.S)
result = pattern.findall(data.content)
i = 0
token = GetToken()
for item in result:
print item
try:
pic = requests.get(item, timeout=2)
if(True == IfDownLoad(pic.content, token)):
DownLoad(pic.content, i)
i = i + 1
except Exception, e:
pass
Python
復制
運行實(shí)戰項目python腳本,結果如??下:

可以看到,怪人都被淘汰了,下載的圖片基本都是顏值高的美圖。這樣我們就完成了實(shí)戰項目,python人工智能爬蟲(chóng)-圖片的選擇性爬取。
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(來(lái)自《Python項目案例開(kāi)發(fā)從入門(mén)到實(shí)戰》(清華大學(xué)出版社鄭秋生夏敏捷主編) )
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 74 次瀏覽 ? 2021-11-04 19:10
)
來(lái)自《Python項目案例開(kāi)發(fā)從入門(mén)到實(shí)戰》(清華大學(xué)出版社鄭秋生、夏敏毅主編)爬蟲(chóng)應用-抓取百度圖片
本文使用請求庫爬取了一張網(wǎng)站的圖片。博文前幾章介紹了如何使用urllib庫爬取網(wǎng)頁(yè)。本文主要使用請求庫抓取網(wǎng)頁(yè)內容以及使用方法基本相同,只是請求方法比較簡(jiǎn)單
別忘了爬蟲(chóng)的基本思想:
1. 指定要爬取的鏈接然后抓取網(wǎng)站源碼
2.提取你想要的內容,比如你想爬取圖片信息,可以選擇用正則表達式過(guò)濾或者使用提取
如何標記
3.循環(huán)獲取要爬取的內容列表,保存文件
這里的代碼和我博客前幾章的區別(圖片爬蟲(chóng)系列一)是:
1. requests 庫用于提取網(wǎng)頁(yè)
2.保存圖片時(shí),后綴不總是使用png或jpg,而是圖片本身的后綴名
3.保存圖片時(shí),不要使用urllib.request.urlretrieve函數,而是使用文件讀寫(xiě)操作保存圖片
具體代碼如下圖所示:
1 # 使用requests、bs4庫下載華僑大學(xué)主頁(yè)上的所有圖片
2 import os
3 import requests
4 from bs4 import BeautifulSoup
5 import shutil
6 from pathlib import Path # 關(guān)于文件路徑操作的庫,這里主要為了得到圖片后綴名
7
8
9 # 該方法傳入url,返回url的html的源代碼
10 def getHtmlCode(url):
11 # 偽裝請求的頭部來(lái)隱藏自己
12 headers = {
13 'User-Agent': 'MMozilla/5.0(Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0'
14 }
15 # 獲取網(wǎng)頁(yè)
16 r = requests.get(url, headers=headers)
17 # 指定網(wǎng)頁(yè)解析的編碼格式
18 r.encoding = 'UTF-8'
19 # 獲取url頁(yè)面的源代碼字符串文本
20 page = r.text
21 return page
22
23
24 # 該方法傳入html的源代碼,通過(guò)截取其中的img標簽,將圖片保存到本機
25 def getImg(page, localPath):
26 # 判斷文件夾是否存在,存在則刪除,最后都要重新新的文件夾
27 if os.path.exists(localPath):
28 shutil.rmtree(localPath)
29 os.mkdir(localPath)
30
31 # 按照Html格式解析頁(yè)面
32 soup = BeautifulSoup(page, 'html.parser')
33 # 返回的是一個(gè)包含所有img標簽的列表
34 imgList = soup.find_all('img')
35 x = 0
36 # 循環(huán)url列表
37 for imgUrl in imgList:
38 try:
39 # 得到img標簽中的src具體內容
40 imgUrl_src = imgUrl.get('src')
41 # 排除 src='' 的情況
42 if imgUrl_src != '':
43 print('正在下載第 %d : %s 張圖片' % (x+1, imgUrl_src))
44 # 判斷圖片是否是從絕對路徑https開(kāi)始,具體為什么這樣操作可以看下圖所示
45 if "https://" not in imgUrl_src:
46 m = 'https://www.hqu.edu.cn/' + imgUrl_src
47 print('正在下載: %s' % m)
48 # 獲取圖片
49 ir = requests.get(m)
50 else:
51 ir = requests.get(imgUrl_src)
52 # 設置Path變量,為了使用Pahtlib庫中的方法提取后綴名
53 p = Path(imgUrl_src)
54 # 得到后綴,返回的是如 '.jpg'
55 p_suffix = p.suffix
56 # 用write()方法寫(xiě)入本地文件中,存儲的后綴名用原始的后綴名稱(chēng)
57 open(localPath + str(x) + p_suffix, 'wb').write(ir.content)
58 x = x + 1
59 except:
60 continue
61
62
63 if __name__ == '__main__':
64 # 指定爬取圖片鏈接
65 url = 'https://www.hqu.edu.cn/index.htm'
66 # 指定存儲圖片路徑
67 localPath = './img/'
68 # 得到網(wǎng)頁(yè)源代碼
69 page = getHtmlCode(url)
70 # 保存圖片
71 getImg(page, localPath)
注意,我們之所以判斷圖片鏈接是否以“https://”開(kāi)頭,主要是因為我們需要完整的絕對路徑來(lái)下載圖片,而要得到這個(gè),我們需要查看原創(chuàng )網(wǎng)頁(yè)代碼,選擇一張圖片,點(diǎn)擊html所在的代碼,鼠標懸停,可以看到絕對路徑,然后根據這個(gè)絕對路徑設置需要添加的缺失部分,如下圖:
查看全部
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(來(lái)自《Python項目案例開(kāi)發(fā)從入門(mén)到實(shí)戰》(清華大學(xué)出版社鄭秋生夏敏捷主編)
)
來(lái)自《Python項目案例開(kāi)發(fā)從入門(mén)到實(shí)戰》(清華大學(xué)出版社鄭秋生、夏敏毅主編)爬蟲(chóng)應用-抓取百度圖片
本文使用請求庫爬取了一張網(wǎng)站的圖片。博文前幾章介紹了如何使用urllib庫爬取網(wǎng)頁(yè)。本文主要使用請求庫抓取網(wǎng)頁(yè)內容以及使用方法基本相同,只是請求方法比較簡(jiǎn)單
別忘了爬蟲(chóng)的基本思想:
1. 指定要爬取的鏈接然后抓取網(wǎng)站源碼
2.提取你想要的內容,比如你想爬取圖片信息,可以選擇用正則表達式過(guò)濾或者使用提取
如何標記
3.循環(huán)獲取要爬取的內容列表,保存文件
這里的代碼和我博客前幾章的區別(圖片爬蟲(chóng)系列一)是:
1. requests 庫用于提取網(wǎng)頁(yè)
2.保存圖片時(shí),后綴不總是使用png或jpg,而是圖片本身的后綴名
3.保存圖片時(shí),不要使用urllib.request.urlretrieve函數,而是使用文件讀寫(xiě)操作保存圖片
具體代碼如下圖所示:
1 # 使用requests、bs4庫下載華僑大學(xué)主頁(yè)上的所有圖片
2 import os
3 import requests
4 from bs4 import BeautifulSoup
5 import shutil
6 from pathlib import Path # 關(guān)于文件路徑操作的庫,這里主要為了得到圖片后綴名
7
8
9 # 該方法傳入url,返回url的html的源代碼
10 def getHtmlCode(url):
11 # 偽裝請求的頭部來(lái)隱藏自己
12 headers = {
13 'User-Agent': 'MMozilla/5.0(Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0'
14 }
15 # 獲取網(wǎng)頁(yè)
16 r = requests.get(url, headers=headers)
17 # 指定網(wǎng)頁(yè)解析的編碼格式
18 r.encoding = 'UTF-8'
19 # 獲取url頁(yè)面的源代碼字符串文本
20 page = r.text
21 return page
22
23
24 # 該方法傳入html的源代碼,通過(guò)截取其中的img標簽,將圖片保存到本機
25 def getImg(page, localPath):
26 # 判斷文件夾是否存在,存在則刪除,最后都要重新新的文件夾
27 if os.path.exists(localPath):
28 shutil.rmtree(localPath)
29 os.mkdir(localPath)
30
31 # 按照Html格式解析頁(yè)面
32 soup = BeautifulSoup(page, 'html.parser')
33 # 返回的是一個(gè)包含所有img標簽的列表
34 imgList = soup.find_all('img')
35 x = 0
36 # 循環(huán)url列表
37 for imgUrl in imgList:
38 try:
39 # 得到img標簽中的src具體內容
40 imgUrl_src = imgUrl.get('src')
41 # 排除 src='' 的情況
42 if imgUrl_src != '':
43 print('正在下載第 %d : %s 張圖片' % (x+1, imgUrl_src))
44 # 判斷圖片是否是從絕對路徑https開(kāi)始,具體為什么這樣操作可以看下圖所示
45 if "https://" not in imgUrl_src:
46 m = 'https://www.hqu.edu.cn/' + imgUrl_src
47 print('正在下載: %s' % m)
48 # 獲取圖片
49 ir = requests.get(m)
50 else:
51 ir = requests.get(imgUrl_src)
52 # 設置Path變量,為了使用Pahtlib庫中的方法提取后綴名
53 p = Path(imgUrl_src)
54 # 得到后綴,返回的是如 '.jpg'
55 p_suffix = p.suffix
56 # 用write()方法寫(xiě)入本地文件中,存儲的后綴名用原始的后綴名稱(chēng)
57 open(localPath + str(x) + p_suffix, 'wb').write(ir.content)
58 x = x + 1
59 except:
60 continue
61
62
63 if __name__ == '__main__':
64 # 指定爬取圖片鏈接
65 url = 'https://www.hqu.edu.cn/index.htm'
66 # 指定存儲圖片路徑
67 localPath = './img/'
68 # 得到網(wǎng)頁(yè)源代碼
69 page = getHtmlCode(url)
70 # 保存圖片
71 getImg(page, localPath)
注意,我們之所以判斷圖片鏈接是否以“https://”開(kāi)頭,主要是因為我們需要完整的絕對路徑來(lái)下載圖片,而要得到這個(gè),我們需要查看原創(chuàng )網(wǎng)頁(yè)代碼,選擇一張圖片,點(diǎn)擊html所在的代碼,鼠標懸停,可以看到絕對路徑,然后根據這個(gè)絕對路徑設置需要添加的缺失部分,如下圖:

網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(微信公眾號后臺的數據經(jīng)過(guò)數據加密處理,才能獲取)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 143 次瀏覽 ? 2021-11-03 12:02
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片就可以。但要獲取其微信公眾號后臺的二維碼,才能獲取。公眾號后臺抓取的數據經(jīng)過(guò)數據加密處理,對于企業(yè)來(lái)說(shuō)是安全的。
沒(méi)有一套api白給人家的,沒(méi)錯,就是沒(méi)錯。被別人鉆漏洞怎么辦?小明開(kāi)始學(xué)我講課了:這個(gè)頁(yè)面是什么?小明,那是公眾號的后臺頁(yè)面!我來(lái)假設你想要一個(gè)能爬的鏈接,你又要實(shí)現這個(gè)功能,這個(gè)數據需要隨著(zhù)你的公眾號數據和圖片在服務(wù)器端獲取,我們用python,來(lái)實(shí)現這個(gè)功能。小明突然開(kāi)始崩潰了:這個(gè)數據存哪里?怎么讓這個(gè)數據會(huì )轉儲到公眾號?..小明崩潰了,小明崩潰了,..小明崩潰了,小明崩潰了,小明。 查看全部
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(微信公眾號后臺的數據經(jīng)過(guò)數據加密處理,才能獲取)
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片就可以。但要獲取其微信公眾號后臺的二維碼,才能獲取。公眾號后臺抓取的數據經(jīng)過(guò)數據加密處理,對于企業(yè)來(lái)說(shuō)是安全的。
沒(méi)有一套api白給人家的,沒(méi)錯,就是沒(méi)錯。被別人鉆漏洞怎么辦?小明開(kāi)始學(xué)我講課了:這個(gè)頁(yè)面是什么?小明,那是公眾號的后臺頁(yè)面!我來(lái)假設你想要一個(gè)能爬的鏈接,你又要實(shí)現這個(gè)功能,這個(gè)數據需要隨著(zhù)你的公眾號數據和圖片在服務(wù)器端獲取,我們用python,來(lái)實(shí)現這個(gè)功能。小明突然開(kāi)始崩潰了:這個(gè)數據存哪里?怎么讓這個(gè)數據會(huì )轉儲到公眾號?..小明崩潰了,小明崩潰了,..小明崩潰了,小明崩潰了,小明。
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(淺談一下爬蟲(chóng)目的是讓準備學(xué)爬蟲(chóng)或者剛開(kāi)始起步的 )
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 66 次瀏覽 ? 2021-11-03 08:25
)
前言
爬蟲(chóng)是一項非常有趣的技術(shù)。你可以利用爬蟲(chóng)技術(shù)獲取別人無(wú)法獲取或需要付費才能獲取的東西。它還可以自動(dòng)抓取并保存大量數據,以減少手動(dòng)做一些累人的工作的時(shí)間和精力。
可以說(shuō)很多人是學(xué)編程的,不玩爬蟲(chóng)的。這意味著(zhù)無(wú)論是業(yè)余、私人工作還是專(zhuān)業(yè)爬行動(dòng)物,爬行動(dòng)物的世界都非常精彩。
今天給大家講講爬行。爬行的目的是讓準備學(xué)習爬行或剛入門(mén)的朋友對爬行有更深入、更全面的了解。
文章目錄前言一、認識爬蟲(chóng)1.什么是爬蟲(chóng)2.爬蟲(chóng)的分類(lèi)3.機器人協(xié)議二、爬蟲(chóng)的基本流程1.爬蟲(chóng)4步2.請求和響應三、理解請求1.請求方法2.請求URL3.請求頭4.請求體5.實(shí)操查看Request 四、了解Response1.Response status2.Response header3.Response body五、爬蟲(chóng)能得到什么樣的數據六、如何解析數據七、如何保存數據一、了解爬蟲(chóng)1.什么是爬蟲(chóng)
一句話(huà)給大家介紹一下著(zhù)名的爬蟲(chóng)請求網(wǎng)站以及提取數據的自動(dòng)化程序。
下面我們來(lái)拆解了解一下爬蟲(chóng):
網(wǎng)站的請求就是向網(wǎng)站發(fā)送請求。比如去百度搜索關(guān)鍵詞“Python”。這時(shí)候我們的瀏覽器會(huì )向網(wǎng)站發(fā)送請求
提取數據 包括圖片、文本、視頻等在內的數據稱(chēng)為數據。我們發(fā)送請求后,網(wǎng)站 會(huì )將搜索結果呈現給我們。這實(shí)際上是返回的數據。這時(shí)候我們就可以提取數據了。
自動(dòng)化程序是我們編寫(xiě)的代碼,用于實(shí)現過(guò)程數據的自動(dòng)提取,如批量下載和保存返回的圖片,而不是一一手動(dòng)操作。
2. 爬蟲(chóng)分類(lèi)
根據使用場(chǎng)景,爬蟲(chóng)可以分為三類(lèi)
?、僖话懵膸Т蠖R全
強大的采集 人臉被百度瀏覽器等搜索引擎廣泛使用,是一個(gè)大型爬蟲(chóng)程序。
?、趯?zhuān)注于小而精的爬行動(dòng)物
功能比較單一,只抓取特定網(wǎng)站的特定內容。比如去某個(gè)網(wǎng)站批量獲取一些數據。這也是我們個(gè)人使用的最常見(jiàn)的爬蟲(chóng)類(lèi)型。
?、墼隽颗老x(chóng)只采集更新內容
這實(shí)際上是聚焦爬蟲(chóng)的迭代爬蟲(chóng)。它只是 采集 更新的數據與舊數據相比嗎?采集 相當于一直存在和運行。只要有符合要求的數據更新,就會(huì )自動(dòng)爬取新的數據。
3.機器人協(xié)議
在爬蟲(chóng)中,有一個(gè)叫做 Robots 的協(xié)議。您需要注意它,也稱(chēng)為“網(wǎng)絡(luò )爬蟲(chóng)排除標準”。它的作用是網(wǎng)站告訴你哪些東西可以爬,哪些東西不能爬。
在哪里可以看到這個(gè)機器人協(xié)議。一般情況下,可以直接在網(wǎng)站的首頁(yè)URL后添加/robots.txt進(jìn)行查看。比如百度的Robots協(xié)議可以看到有很多URL是規定不能爬取的。例如Disallow:/shifen/表示當前Disallow:/shifen及Disallow:/shifen下的子目錄無(wú)法爬取。
實(shí)際上,這份Robots協(xié)議屬于君子協(xié)議。對于爬行動(dòng)物來(lái)說(shuō),基本上是口頭約定。如果你違反了,你可能會(huì )被追究法律責任,但如果不違反,爬蟲(chóng)將無(wú)法抓取任何數據,所以通常雙方都會(huì )保留一份。閉上眼睛,不要太囂張。
二、爬取基本流程1.爬取4步
爬蟲(chóng)是如何工作的?爬蟲(chóng)程序大致可以分為四個(gè)步驟。
?、侔l(fā)起請求
一個(gè)請求通過(guò) HTTP 庫發(fā)送到目標站點(diǎn),該請求可以收錄額外的頭部和其他等待服務(wù)器響應的信息。
?、讷@取回復內容
如果服務(wù)器可以正常響應,就會(huì )得到一個(gè)ResponseResponse內容。獲取的頁(yè)面內容類(lèi)型可以包括HTML、Json字符串、二進(jìn)制數據(如圖片、視頻等)。
?、蹆热莘治?br /> 獲取的內容可能是HTML,可以使用正則表達式和網(wǎng)頁(yè)解析庫進(jìn)行解析??赡苁荍son,可以直接轉成Json對象。它可以是可以保存或進(jìn)一步處理的二進(jìn)制數據。
?、鼙4鏀祿?br /> 許多保存的數據樣式可以保存為文本或保存到數據庫或保存為特定格式的文件。
基本上,這是爬蟲(chóng)必須遵循的四個(gè)步驟。
2.請求和響應
請求和響應是爬蟲(chóng)最重要的部分。請求和響應之間是什么關(guān)系??jì)烧叩年P(guān)系如下
簡(jiǎn)單的理解,當我們在電腦瀏覽器上搜索東西的時(shí)候,比如前面提到的在百度搜索“Python”,你已經(jīng)通過(guò)點(diǎn)擊百度向百度服務(wù)器發(fā)送了一個(gè)Request。請求收錄大量信息。比如身份信息,請求信息等,服務(wù)器收到請求后,做出判斷,返回一個(gè)Response給我們的電腦。這里面也收錄了很多請求成功等信息,比如我們請求的信息的文字、圖片、視頻等。
這應該很容易理解。接下來(lái),讓我們仔細看看請求和響應。
三、理解請求
請求收錄什么?它主要收錄以下內容
1.請求方法
請求方法可以理解為你向網(wǎng)站問(wèn)好的方式。你必須從 網(wǎng)站 獲取數據,你必須以正確的方式迎接它。和你打交道是可以的,就像你要別人借一樣。你必須先敲門(mén)打招呼。你可以爬上窗戶(hù)進(jìn)去。任何人看到它都必須為你扔掉。
主要的請求方法是 GET 和 POST。還有其他方法,例如 HEAD/PUT/DELETE/OPTIONS。最常用的方法是GET。
2.請求網(wǎng)址
什么是網(wǎng)址?URL 的全名是統一的資源定位符。比如一個(gè)網(wǎng)頁(yè)文檔、圖片、視頻等,在爬蟲(chóng)中都有一個(gè)唯一的URL,我們可以理解為一個(gè)URL或者一個(gè)鏈接。
3.請求頭
請求頭的英文名稱(chēng)是什么Request Headers通常是指請求中收錄的頭信息,比如User-Agent、Host、Cookies等。
當你向網(wǎng)站發(fā)送請求時(shí),這些東西就相當于你的身份信息。您經(jīng)常需要將自己偽裝成普通用戶(hù)來(lái)逃避您的目標。網(wǎng)站 將您標識為爬蟲(chóng)并避免了一些反采摘問(wèn)題。順利獲取數據。
4.請求正文
官方說(shuō)法是請求中攜帶的附加數據,例如提交表單時(shí)的表單數據。
怎么理解,比如去公公家提親,總不能空手去提親吧?
在爬蟲(chóng)中如何理解。例如,在某些頁(yè)面上,您必須先登錄,或者您必須告訴我您的請求。比如你在百度網(wǎng)頁(yè)上搜索“Python”,那么關(guān)鍵詞“Python”就是你要承載的請求,看到你的請求,百度就知道你要做什么了。
當然,請求體通常用在 POST 請求方法中。GET請求的時(shí)候,我們一般會(huì )在URL中拼接。先了解一下。后續具體爬蟲(chóng)可以加深理解。
5.實(shí)用視圖請求
說(shuō)完了Request的理論,我們可以去實(shí)際操作,看看Request在哪里,收錄什么。
以谷歌瀏覽器為例,我輸入關(guān)鍵字“Python”,找到了一堆結果。我們使用網(wǎng)頁(yè)自帶的控制臺窗口來(lái)分析我們發(fā)送的Request請求。
按住F12或在網(wǎng)頁(yè)空白處右擊選擇“檢查”,可以看到控制臺中有很多選項。例如,上列有一個(gè)菜單欄。主要爬蟲(chóng)一般我們使用元素元素和網(wǎng)絡(luò )網(wǎng)絡(luò )其他更常見(jiàn)。東西暫時(shí)不用。當你學(xué)習更高級的爬蟲(chóng)時(shí),你會(huì )使用它。比如JS逆向工程的時(shí)候,可能會(huì )用到Application窗口,后面再理解。
Elements 收錄請求結果的所有元素,例如每張圖片的源代碼。特別是當您單擊左上角的小箭頭時(shí),您移動(dòng)到的每個(gè)位置都會(huì )顯示在“元素”窗口中。代碼。
網(wǎng)絡(luò )是爬蟲(chóng)常用的網(wǎng)絡(luò )信息。其中包括我們的請求。讓我們檢查網(wǎng)絡(luò )窗口下的禁用緩存,然后單擊全部。
刷新網(wǎng)頁(yè)看看效果。您可以看到我們發(fā)送了 132 個(gè)請求請求。不要好奇。雖然我們只向百度發(fā)送了類(lèi)似“Python”這樣的請求,但有些請求是附在網(wǎng)頁(yè)上的。
雖然有很多類(lèi)型的圖像格式,例如png、jpeg 等,但是您可以滑動(dòng)到頂部。在類(lèi)型列中,有文檔。這種類(lèi)型是網(wǎng)絡(luò )文檔的含義。單擊它以獲取我們的請求信息。
單擊文檔后,會(huì )出現一個(gè)新的菜單欄。在Headers列下,我們可以看到Request URL,也就是我們前面提到的請求URL。這個(gè)URL就是我們實(shí)際從網(wǎng)頁(yè)請求的URL,可以看到請求方法。這是一個(gè) GET 請求。
再次向下滑動(dòng)可以看到我們前面提到的Request Headers有很多信息,但是我們前面提到的User-Agent、Host、Cookies都是我們提供給服務(wù)器的信息。
雖然Request Headers里面的內容很多,但是我們在編寫(xiě)爬蟲(chóng)程序的時(shí)候也要做這方面的偽裝工作,但是并不是所有的信息我們都要選擇性的寫(xiě)一些重要的信息。例如,User-Agent 必須帶 Referer,而 Host 是選擇性使用 cookie。登錄的時(shí)候會(huì )帶四個(gè)常用物品來(lái)偽裝。
至于請求體,我暫時(shí)不去查,因為我們的請求方式是GET請求只能在POST請求中查看。爬蟲(chóng)用了沒(méi)有關(guān)系,你自然就懂了。
四、了解響應
Response 主要包括 3 條內容,我們來(lái)一一看看。
1.響應狀態(tài)
我們發(fā)送請求后,網(wǎng)站 會(huì )返回一個(gè)Response,其中收錄響應狀態(tài)碼。響應狀態(tài)大致可以分為以下幾種
?、俜秶鸀?00,例如響應狀態(tài)碼200表示成功。
?、诜秶鸀槿?,如301,表示跳躍。
?、鬯陌俜秶?,如404,找不到網(wǎng)頁(yè)。
?、芪灏俚姆秶?,比如502,找不到網(wǎng)頁(yè)。
對于爬蟲(chóng)來(lái)說(shuō),兩三百是我們最想看到的響應狀態(tài)。獲取數據是可能的。四五百基本都冷了,拿不到數據。
比如我們剛剛發(fā)送了之前的Request請求,在文檔文件的Headers窗口下的General中可以看到響應狀態(tài)碼為200,說(shuō)明網(wǎng)頁(yè)成功響應了我們的請求。
2. 響應頭
服務(wù)器提供給我們的信息中也會(huì )有一個(gè)響應頭。這部分收錄內容類(lèi)型、內容長(cháng)度、服務(wù)器信息、設置cookies等。
事實(shí)上,響應頭對我們來(lái)說(shuō)并沒(méi)有那么重要??纯催@里。
3. 響應正文
這一點(diǎn)很重要,除了上面第一點(diǎn)的響應狀態(tài),因為它收錄了請求資源的內容,比如網(wǎng)頁(yè) HTML 和圖像二進(jìn)制數。
哪里的響應正文也在文檔文件的Response欄中,向下滑動(dòng)可以看到里面有很多響應數據。這是我們得到的數據,有的可以直接下載,有的需要技術(shù)分析才能得到。
五、爬蟲(chóng)能得到什么樣的數據
爬蟲(chóng)能夠獲取什么樣的數據,基本上可以分為這幾類(lèi)
?、?Web 文檔,如 HTML 文檔、Json 格式的文本等。
?、趫D片是將二進(jìn)制文件保存為圖片格式得到的。
?、垡曨l也是二進(jìn)制文件,可以保存為視頻格式。
?、芷渌?反正能看到的其他東西,理論上都是爬蟲(chóng)能得到的,看難易程度。
六、如何解析數據
從上面可以看出,我們可以成功發(fā)送請求,網(wǎng)頁(yè)會(huì )返回大量數據。有數千甚至數萬(wàn)個(gè)代碼。那么如何在這么多的代碼中找到我們想要的數據就是以下常用的方法
?、僦苯又委?。當網(wǎng)頁(yè)返回的數據是一些文本時(shí),我們想要的內容可以直接處理,無(wú)需過(guò)濾。
?、贘son分析。如果返回的網(wǎng)頁(yè)不是HTML數據而是Json數據,則需要Json解析技術(shù)。
?、壅齽t表達式。如果返回的數據是符合正則表達式的數據,則可以使用正則表達式進(jìn)行分析。
?、芷渌治龇椒?。常用的有XPath、BeautifulSoup、PyQuery,都是爬蟲(chóng)常用的解析庫。
七、如何保存數據
獲取數據后常用的保存數據的方法如下
?、傥淖???梢灾苯颖4鏋榧兾谋?、EXCEL、Json、Xml等類(lèi)型的文本。
?、陉P(guān)系數據庫。數據可以保存到MySQL、Oracle等關(guān)系型數據庫中。
?、鄯顷P(guān)系型數據庫。比如MongoDB、Readis和Key-Value存儲。
?、?二進(jìn)制文件。比如圖片、視頻、音頻等可以直接保存為特定格式。
今天聊聊爬蟲(chóng),歡迎大家在下方評論區留言。
查看全部
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(淺談一下爬蟲(chóng)目的是讓準備學(xué)爬蟲(chóng)或者剛開(kāi)始起步的
)
前言
爬蟲(chóng)是一項非常有趣的技術(shù)。你可以利用爬蟲(chóng)技術(shù)獲取別人無(wú)法獲取或需要付費才能獲取的東西。它還可以自動(dòng)抓取并保存大量數據,以減少手動(dòng)做一些累人的工作的時(shí)間和精力。
可以說(shuō)很多人是學(xué)編程的,不玩爬蟲(chóng)的。這意味著(zhù)無(wú)論是業(yè)余、私人工作還是專(zhuān)業(yè)爬行動(dòng)物,爬行動(dòng)物的世界都非常精彩。
今天給大家講講爬行。爬行的目的是讓準備學(xué)習爬行或剛入門(mén)的朋友對爬行有更深入、更全面的了解。

文章目錄前言一、認識爬蟲(chóng)1.什么是爬蟲(chóng)2.爬蟲(chóng)的分類(lèi)3.機器人協(xié)議二、爬蟲(chóng)的基本流程1.爬蟲(chóng)4步2.請求和響應三、理解請求1.請求方法2.請求URL3.請求頭4.請求體5.實(shí)操查看Request 四、了解Response1.Response status2.Response header3.Response body五、爬蟲(chóng)能得到什么樣的數據六、如何解析數據七、如何保存數據一、了解爬蟲(chóng)1.什么是爬蟲(chóng)
一句話(huà)給大家介紹一下著(zhù)名的爬蟲(chóng)請求網(wǎng)站以及提取數據的自動(dòng)化程序。
下面我們來(lái)拆解了解一下爬蟲(chóng):
網(wǎng)站的請求就是向網(wǎng)站發(fā)送請求。比如去百度搜索關(guān)鍵詞“Python”。這時(shí)候我們的瀏覽器會(huì )向網(wǎng)站發(fā)送請求
提取數據 包括圖片、文本、視頻等在內的數據稱(chēng)為數據。我們發(fā)送請求后,網(wǎng)站 會(huì )將搜索結果呈現給我們。這實(shí)際上是返回的數據。這時(shí)候我們就可以提取數據了。
自動(dòng)化程序是我們編寫(xiě)的代碼,用于實(shí)現過(guò)程數據的自動(dòng)提取,如批量下載和保存返回的圖片,而不是一一手動(dòng)操作。

2. 爬蟲(chóng)分類(lèi)
根據使用場(chǎng)景,爬蟲(chóng)可以分為三類(lèi)
?、僖话懵膸Т蠖R全
強大的采集 人臉被百度瀏覽器等搜索引擎廣泛使用,是一個(gè)大型爬蟲(chóng)程序。
?、趯?zhuān)注于小而精的爬行動(dòng)物
功能比較單一,只抓取特定網(wǎng)站的特定內容。比如去某個(gè)網(wǎng)站批量獲取一些數據。這也是我們個(gè)人使用的最常見(jiàn)的爬蟲(chóng)類(lèi)型。
?、墼隽颗老x(chóng)只采集更新內容
這實(shí)際上是聚焦爬蟲(chóng)的迭代爬蟲(chóng)。它只是 采集 更新的數據與舊數據相比嗎?采集 相當于一直存在和運行。只要有符合要求的數據更新,就會(huì )自動(dòng)爬取新的數據。

3.機器人協(xié)議
在爬蟲(chóng)中,有一個(gè)叫做 Robots 的協(xié)議。您需要注意它,也稱(chēng)為“網(wǎng)絡(luò )爬蟲(chóng)排除標準”。它的作用是網(wǎng)站告訴你哪些東西可以爬,哪些東西不能爬。
在哪里可以看到這個(gè)機器人協(xié)議。一般情況下,可以直接在網(wǎng)站的首頁(yè)URL后添加/robots.txt進(jìn)行查看。比如百度的Robots協(xié)議可以看到有很多URL是規定不能爬取的。例如Disallow:/shifen/表示當前Disallow:/shifen及Disallow:/shifen下的子目錄無(wú)法爬取。

實(shí)際上,這份Robots協(xié)議屬于君子協(xié)議。對于爬行動(dòng)物來(lái)說(shuō),基本上是口頭約定。如果你違反了,你可能會(huì )被追究法律責任,但如果不違反,爬蟲(chóng)將無(wú)法抓取任何數據,所以通常雙方都會(huì )保留一份。閉上眼睛,不要太囂張。

二、爬取基本流程1.爬取4步
爬蟲(chóng)是如何工作的?爬蟲(chóng)程序大致可以分為四個(gè)步驟。
?、侔l(fā)起請求
一個(gè)請求通過(guò) HTTP 庫發(fā)送到目標站點(diǎn),該請求可以收錄額外的頭部和其他等待服務(wù)器響應的信息。
?、讷@取回復內容
如果服務(wù)器可以正常響應,就會(huì )得到一個(gè)ResponseResponse內容。獲取的頁(yè)面內容類(lèi)型可以包括HTML、Json字符串、二進(jìn)制數據(如圖片、視頻等)。
?、蹆热莘治?br /> 獲取的內容可能是HTML,可以使用正則表達式和網(wǎng)頁(yè)解析庫進(jìn)行解析??赡苁荍son,可以直接轉成Json對象。它可以是可以保存或進(jìn)一步處理的二進(jìn)制數據。
?、鼙4鏀祿?br /> 許多保存的數據樣式可以保存為文本或保存到數據庫或保存為特定格式的文件。
基本上,這是爬蟲(chóng)必須遵循的四個(gè)步驟。
2.請求和響應
請求和響應是爬蟲(chóng)最重要的部分。請求和響應之間是什么關(guān)系??jì)烧叩年P(guān)系如下

簡(jiǎn)單的理解,當我們在電腦瀏覽器上搜索東西的時(shí)候,比如前面提到的在百度搜索“Python”,你已經(jīng)通過(guò)點(diǎn)擊百度向百度服務(wù)器發(fā)送了一個(gè)Request。請求收錄大量信息。比如身份信息,請求信息等,服務(wù)器收到請求后,做出判斷,返回一個(gè)Response給我們的電腦。這里面也收錄了很多請求成功等信息,比如我們請求的信息的文字、圖片、視頻等。
這應該很容易理解。接下來(lái),讓我們仔細看看請求和響應。
三、理解請求
請求收錄什么?它主要收錄以下內容
1.請求方法
請求方法可以理解為你向網(wǎng)站問(wèn)好的方式。你必須從 網(wǎng)站 獲取數據,你必須以正確的方式迎接它。和你打交道是可以的,就像你要別人借一樣。你必須先敲門(mén)打招呼。你可以爬上窗戶(hù)進(jìn)去。任何人看到它都必須為你扔掉。

主要的請求方法是 GET 和 POST。還有其他方法,例如 HEAD/PUT/DELETE/OPTIONS。最常用的方法是GET。
2.請求網(wǎng)址
什么是網(wǎng)址?URL 的全名是統一的資源定位符。比如一個(gè)網(wǎng)頁(yè)文檔、圖片、視頻等,在爬蟲(chóng)中都有一個(gè)唯一的URL,我們可以理解為一個(gè)URL或者一個(gè)鏈接。
3.請求頭
請求頭的英文名稱(chēng)是什么Request Headers通常是指請求中收錄的頭信息,比如User-Agent、Host、Cookies等。
當你向網(wǎng)站發(fā)送請求時(shí),這些東西就相當于你的身份信息。您經(jīng)常需要將自己偽裝成普通用戶(hù)來(lái)逃避您的目標。網(wǎng)站 將您標識為爬蟲(chóng)并避免了一些反采摘問(wèn)題。順利獲取數據。
4.請求正文
官方說(shuō)法是請求中攜帶的附加數據,例如提交表單時(shí)的表單數據。
怎么理解,比如去公公家提親,總不能空手去提親吧?

在爬蟲(chóng)中如何理解。例如,在某些頁(yè)面上,您必須先登錄,或者您必須告訴我您的請求。比如你在百度網(wǎng)頁(yè)上搜索“Python”,那么關(guān)鍵詞“Python”就是你要承載的請求,看到你的請求,百度就知道你要做什么了。
當然,請求體通常用在 POST 請求方法中。GET請求的時(shí)候,我們一般會(huì )在URL中拼接。先了解一下。后續具體爬蟲(chóng)可以加深理解。
5.實(shí)用視圖請求
說(shuō)完了Request的理論,我們可以去實(shí)際操作,看看Request在哪里,收錄什么。
以谷歌瀏覽器為例,我輸入關(guān)鍵字“Python”,找到了一堆結果。我們使用網(wǎng)頁(yè)自帶的控制臺窗口來(lái)分析我們發(fā)送的Request請求。
按住F12或在網(wǎng)頁(yè)空白處右擊選擇“檢查”,可以看到控制臺中有很多選項。例如,上列有一個(gè)菜單欄。主要爬蟲(chóng)一般我們使用元素元素和網(wǎng)絡(luò )網(wǎng)絡(luò )其他更常見(jiàn)。東西暫時(shí)不用。當你學(xué)習更高級的爬蟲(chóng)時(shí),你會(huì )使用它。比如JS逆向工程的時(shí)候,可能會(huì )用到Application窗口,后面再理解。
Elements 收錄請求結果的所有元素,例如每張圖片的源代碼。特別是當您單擊左上角的小箭頭時(shí),您移動(dòng)到的每個(gè)位置都會(huì )顯示在“元素”窗口中。代碼。

網(wǎng)絡(luò )是爬蟲(chóng)常用的網(wǎng)絡(luò )信息。其中包括我們的請求。讓我們檢查網(wǎng)絡(luò )窗口下的禁用緩存,然后單擊全部。

刷新網(wǎng)頁(yè)看看效果。您可以看到我們發(fā)送了 132 個(gè)請求請求。不要好奇。雖然我們只向百度發(fā)送了類(lèi)似“Python”這樣的請求,但有些請求是附在網(wǎng)頁(yè)上的。

雖然有很多類(lèi)型的圖像格式,例如png、jpeg 等,但是您可以滑動(dòng)到頂部。在類(lèi)型列中,有文檔。這種類(lèi)型是網(wǎng)絡(luò )文檔的含義。單擊它以獲取我們的請求信息。

單擊文檔后,會(huì )出現一個(gè)新的菜單欄。在Headers列下,我們可以看到Request URL,也就是我們前面提到的請求URL。這個(gè)URL就是我們實(shí)際從網(wǎng)頁(yè)請求的URL,可以看到請求方法。這是一個(gè) GET 請求。

再次向下滑動(dòng)可以看到我們前面提到的Request Headers有很多信息,但是我們前面提到的User-Agent、Host、Cookies都是我們提供給服務(wù)器的信息。

雖然Request Headers里面的內容很多,但是我們在編寫(xiě)爬蟲(chóng)程序的時(shí)候也要做這方面的偽裝工作,但是并不是所有的信息我們都要選擇性的寫(xiě)一些重要的信息。例如,User-Agent 必須帶 Referer,而 Host 是選擇性使用 cookie。登錄的時(shí)候會(huì )帶四個(gè)常用物品來(lái)偽裝。
至于請求體,我暫時(shí)不去查,因為我們的請求方式是GET請求只能在POST請求中查看。爬蟲(chóng)用了沒(méi)有關(guān)系,你自然就懂了。
四、了解響應
Response 主要包括 3 條內容,我們來(lái)一一看看。
1.響應狀態(tài)
我們發(fā)送請求后,網(wǎng)站 會(huì )返回一個(gè)Response,其中收錄響應狀態(tài)碼。響應狀態(tài)大致可以分為以下幾種
?、俜秶鸀?00,例如響應狀態(tài)碼200表示成功。
?、诜秶鸀槿?,如301,表示跳躍。
?、鬯陌俜秶?,如404,找不到網(wǎng)頁(yè)。
?、芪灏俚姆秶?,比如502,找不到網(wǎng)頁(yè)。
對于爬蟲(chóng)來(lái)說(shuō),兩三百是我們最想看到的響應狀態(tài)。獲取數據是可能的。四五百基本都冷了,拿不到數據。
比如我們剛剛發(fā)送了之前的Request請求,在文檔文件的Headers窗口下的General中可以看到響應狀態(tài)碼為200,說(shuō)明網(wǎng)頁(yè)成功響應了我們的請求。

2. 響應頭
服務(wù)器提供給我們的信息中也會(huì )有一個(gè)響應頭。這部分收錄內容類(lèi)型、內容長(cháng)度、服務(wù)器信息、設置cookies等。
事實(shí)上,響應頭對我們來(lái)說(shuō)并沒(méi)有那么重要??纯催@里。
3. 響應正文
這一點(diǎn)很重要,除了上面第一點(diǎn)的響應狀態(tài),因為它收錄了請求資源的內容,比如網(wǎng)頁(yè) HTML 和圖像二進(jìn)制數。
哪里的響應正文也在文檔文件的Response欄中,向下滑動(dòng)可以看到里面有很多響應數據。這是我們得到的數據,有的可以直接下載,有的需要技術(shù)分析才能得到。

五、爬蟲(chóng)能得到什么樣的數據
爬蟲(chóng)能夠獲取什么樣的數據,基本上可以分為這幾類(lèi)
?、?Web 文檔,如 HTML 文檔、Json 格式的文本等。
?、趫D片是將二進(jìn)制文件保存為圖片格式得到的。
?、垡曨l也是二進(jìn)制文件,可以保存為視頻格式。
?、芷渌?反正能看到的其他東西,理論上都是爬蟲(chóng)能得到的,看難易程度。
六、如何解析數據
從上面可以看出,我們可以成功發(fā)送請求,網(wǎng)頁(yè)會(huì )返回大量數據。有數千甚至數萬(wàn)個(gè)代碼。那么如何在這么多的代碼中找到我們想要的數據就是以下常用的方法
?、僦苯又委?。當網(wǎng)頁(yè)返回的數據是一些文本時(shí),我們想要的內容可以直接處理,無(wú)需過(guò)濾。
?、贘son分析。如果返回的網(wǎng)頁(yè)不是HTML數據而是Json數據,則需要Json解析技術(shù)。
?、壅齽t表達式。如果返回的數據是符合正則表達式的數據,則可以使用正則表達式進(jìn)行分析。
?、芷渌治龇椒?。常用的有XPath、BeautifulSoup、PyQuery,都是爬蟲(chóng)常用的解析庫。
七、如何保存數據
獲取數據后常用的保存數據的方法如下
?、傥淖???梢灾苯颖4鏋榧兾谋?、EXCEL、Json、Xml等類(lèi)型的文本。
?、陉P(guān)系數據庫。數據可以保存到MySQL、Oracle等關(guān)系型數據庫中。
?、鄯顷P(guān)系型數據庫。比如MongoDB、Readis和Key-Value存儲。
?、?二進(jìn)制文件。比如圖片、視頻、音頻等可以直接保存為特定格式。
今天聊聊爬蟲(chóng),歡迎大家在下方評論區留言。

網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(百度只收錄了一個(gè)首頁(yè)是什么原因,怎么辦抓取策略)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 76 次瀏覽 ? 2021-11-02 23:20
不管是新站還是老站,百度只有收錄首頁(yè)的問(wèn)題,很多SEO從業(yè)者都遇到過(guò)這個(gè)問(wèn)題,上一篇文章《百度只有收錄一個(gè)是什么原因主頁(yè)以及怎么做?”純經(jīng)驗談,從四個(gè)方面講述了百度只有收錄一個(gè)主頁(yè)的常見(jiàn)原因。本文將幫助您從搜索引擎抓取策略的層面分析可能的原因。
這里我們需要了解搜索引擎爬蟲(chóng)的兩種爬取策略:
1、搜索引擎深度優(yōu)先爬取策略
2、搜索引擎廣度優(yōu)先爬取策略
為了讓大家更容易理解這兩種策略,我舉個(gè)例子。如果是深度優(yōu)先的爬取策略,搜索引擎爬蟲(chóng)的爬取路徑為:
這時(shí)候搜索引擎抓取的順序是:首頁(yè)、1、頁(yè)A、G頁(yè)、B頁(yè)、2、頁(yè)C、D頁(yè)
一個(gè)簡(jiǎn)單的句子就是:通往黑暗的一種方式
如果是廣度優(yōu)先的爬取策略,搜索引擎爬蟲(chóng)的爬取路徑為:
此時(shí)搜索引擎抓取的順序為:首頁(yè)、欄目1、欄目2、欄目3、網(wǎng)頁(yè)A、網(wǎng)頁(yè)B、網(wǎng)頁(yè)C、網(wǎng)頁(yè)D
一個(gè)簡(jiǎn)單的句子就是:螃蟹走路
搜索引擎實(shí)際上針對不同的網(wǎng)站采取了不同的爬取策略。對于新站點(diǎn)或低權重的網(wǎng)站,一般采用廣度優(yōu)先的爬取策略。
所以,對于一個(gè)新站點(diǎn),一般是第一個(gè)收錄首頁(yè),然后是收錄欄目頁(yè),最后是內容頁(yè)。其實(shí)發(fā)生這種情況后,不用擔心,只要你的文章質(zhì)量好,你遲早會(huì )收錄的。
總結:百度只有收錄一個(gè)主頁(yè)的原因有很多。以上內容只是一些小細節,僅供參考! 查看全部
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(百度只收錄了一個(gè)首頁(yè)是什么原因,怎么辦抓取策略)
不管是新站還是老站,百度只有收錄首頁(yè)的問(wèn)題,很多SEO從業(yè)者都遇到過(guò)這個(gè)問(wèn)題,上一篇文章《百度只有收錄一個(gè)是什么原因主頁(yè)以及怎么做?”純經(jīng)驗談,從四個(gè)方面講述了百度只有收錄一個(gè)主頁(yè)的常見(jiàn)原因。本文將幫助您從搜索引擎抓取策略的層面分析可能的原因。
這里我們需要了解搜索引擎爬蟲(chóng)的兩種爬取策略:
1、搜索引擎深度優(yōu)先爬取策略
2、搜索引擎廣度優(yōu)先爬取策略
為了讓大家更容易理解這兩種策略,我舉個(gè)例子。如果是深度優(yōu)先的爬取策略,搜索引擎爬蟲(chóng)的爬取路徑為:
這時(shí)候搜索引擎抓取的順序是:首頁(yè)、1、頁(yè)A、G頁(yè)、B頁(yè)、2、頁(yè)C、D頁(yè)
一個(gè)簡(jiǎn)單的句子就是:通往黑暗的一種方式
如果是廣度優(yōu)先的爬取策略,搜索引擎爬蟲(chóng)的爬取路徑為:
此時(shí)搜索引擎抓取的順序為:首頁(yè)、欄目1、欄目2、欄目3、網(wǎng)頁(yè)A、網(wǎng)頁(yè)B、網(wǎng)頁(yè)C、網(wǎng)頁(yè)D
一個(gè)簡(jiǎn)單的句子就是:螃蟹走路
搜索引擎實(shí)際上針對不同的網(wǎng)站采取了不同的爬取策略。對于新站點(diǎn)或低權重的網(wǎng)站,一般采用廣度優(yōu)先的爬取策略。
所以,對于一個(gè)新站點(diǎn),一般是第一個(gè)收錄首頁(yè),然后是收錄欄目頁(yè),最后是內容頁(yè)。其實(shí)發(fā)生這種情況后,不用擔心,只要你的文章質(zhì)量好,你遲早會(huì )收錄的。
總結:百度只有收錄一個(gè)主頁(yè)的原因有很多。以上內容只是一些小細節,僅供參考!
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(【知識點(diǎn)】HTML代碼分析的基本原理(一))
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 67 次瀏覽 ? 2021-11-02 00:03
第一節 搜索引擎原理
1、基本概念
來(lái)自中文維基百科的解釋?zhuān)海ɑヂ?lián)網(wǎng))搜索引擎是指自動(dòng)從互聯(lián)網(wǎng)上采集信息,并經(jīng)過(guò)一定的排序,為用戶(hù)提供查詢(xún)的系統。
英文維基百科的解釋?zhuān)壕W(wǎng)絡(luò )搜索引擎提供了一個(gè)界面來(lái)搜索萬(wàn)維網(wǎng)上的信息。信息可能包括網(wǎng)頁(yè)、圖像和其他類(lèi)型的文件。(網(wǎng)絡(luò )搜索引擎提供了一個(gè)接口,可以在萬(wàn)維網(wǎng)上搜索信息。這些信息包括網(wǎng)頁(yè)、圖片和其他類(lèi)型的文檔)
2、類(lèi)別
根據工作原理的不同,它們可以分為兩個(gè)基本類(lèi)別:全文搜索引擎和目錄)。
分類(lèi)目錄是人工采集整理網(wǎng)站數據形成數據庫,如雅虎中國和國內搜狐、新浪、網(wǎng)易目錄。此外,互聯(lián)網(wǎng)上的一些導航網(wǎng)站也可以歸入原創(chuàng )分類(lèi)目錄,例如“網(wǎng)站之家”()。
全文搜索引擎自動(dòng)分析網(wǎng)頁(yè)的超鏈接,依靠對超鏈接和HTML代碼的分析來(lái)獲取網(wǎng)頁(yè)的信息內容,并根據預先設計好的索引進(jìn)行分析和整理。用戶(hù)查詢(xún)規則。
兩者的區別可以用一句話(huà)概括:類(lèi)別目錄是手動(dòng)創(chuàng )建的網(wǎng)站索引,全文搜索是自動(dòng)創(chuàng )建的網(wǎng)頁(yè)索引。(有些人經(jīng)常將搜索引擎與數據庫搜索進(jìn)行比較,但他們實(shí)際上是錯誤的)。
3、全文搜索是如何工作的?
全文搜索引擎一般信息采集、索引、搜索三部分,詳細信息可以由搜索器、分析器、索引器、搜索器和用戶(hù)界面等五部分組成
?。?)Information采集(Webcrawling):信息采集的工作是由搜索者和分析者共同完成的。搜索引擎使用爬蟲(chóng),蜘蛛,或者稱(chēng)為robots的自動(dòng)搜索機器人程序來(lái)查找網(wǎng)頁(yè)上的超鏈接。
進(jìn)一步解釋?zhuān)骸皺C器人”實(shí)際上是一些基于網(wǎng)絡(luò )的程序。他們請求網(wǎng)站上的 HTML 頁(yè)面采集 HTML 頁(yè)面。它遍歷指定范圍內的整個(gè)Web空間,并從一個(gè)網(wǎng)頁(yè)中不斷傳輸。到另一個(gè)網(wǎng)頁(yè),從一個(gè)站點(diǎn)移動(dòng)到另一個(gè)站點(diǎn),并將網(wǎng)頁(yè)采集添加到網(wǎng)頁(yè)數據庫中?!皺C器人”每次遇到一個(gè)新的網(wǎng)頁(yè),都要搜索里面的所有鏈接,所以理論上來(lái)說(shuō),如果為“機器人”建立了一個(gè)合適的初始頁(yè)面集,從這個(gè)初始頁(yè)面集開(kāi)始,所有的鏈接都是遍歷后,“機器人”將能夠采集 到整個(gè)網(wǎng)絡(luò )空間中的網(wǎng)頁(yè)。
在一些開(kāi)源社區中可以找到很多開(kāi)源爬蟲(chóng)程序。
關(guān)鍵點(diǎn)1:核心在于html分析,所以嚴謹、結構化、可讀、無(wú)錯誤的html代碼更容易被采集機器人和采集分析。比如某個(gè)頁(yè)面有這樣的結尾,在頁(yè)面上顯示不是問(wèn)題,但是很可能被采集收錄拒絕,比如類(lèi)似../../***.htm 這樣的超鏈接也可能導致蜘蛛無(wú)法識別。這也是需要推廣網(wǎng)絡(luò )標準的原因之一。按照網(wǎng)絡(luò )標準制作的網(wǎng)頁(yè)更容易被搜索引擎檢索和收錄。
關(guān)鍵點(diǎn)2:搜索機器人有專(zhuān)門(mén)的搜索鏈接庫。搜索同一個(gè)超鏈接時(shí),會(huì )自動(dòng)比較新舊網(wǎng)頁(yè)的內容和大小。如果它們相同,則不會(huì )是采集。因此,有人擔心修改后的網(wǎng)頁(yè)是否可以收錄,這是多余的。
?。?)索引:搜索引擎組織信息的過(guò)程稱(chēng)為“索引”。搜索引擎不僅需要保存采集到的信息,還要按照一定的規則進(jìn)行排列。索引可以是一般的大型數據庫,如如ORACLE、Sybase等,也可以定義自己的文件格式進(jìn)行存儲。索引是搜索中比較復雜的部分,涉及到網(wǎng)頁(yè)結構分析、分詞、排序等技術(shù),一個(gè)好的索引可以大大提高檢索速度。
關(guān)鍵點(diǎn)一:雖然目前的搜索引擎都支持增量索引,但創(chuàng )建索引仍然需要很長(cháng)時(shí)間。搜索引擎會(huì )定期更新索引。因此,即使爬蟲(chóng)來(lái)了,直到我們可以在頁(yè)面上進(jìn)行搜索之前,都會(huì )有一定的時(shí)間間隔。
關(guān)鍵點(diǎn)2:索引是區分好搜索和壞搜索的重要標志。
?。?)Searching:用戶(hù)向搜索引擎發(fā)送查詢(xún),搜索引擎接受查詢(xún)并將信息返回給用戶(hù)。有些系統在返回結果之前會(huì )計算和評估網(wǎng)頁(yè)的相關(guān)性,并基于相關(guān)度排序,將相關(guān)度高的放在首位,相關(guān)度低的放在后面;有的系統在用戶(hù)查詢(xún)之前已經(jīng)計算了每個(gè)網(wǎng)頁(yè)的頁(yè)面排名(PageRank會(huì )在后面介紹),返回頁(yè)面排名查詢(xún)結果返回時(shí),較大的放在前面,較小的放在后面。
關(guān)鍵點(diǎn)一:不同的搜索引擎有不同的排序規則,所以在不同的搜索引擎中搜索相同的關(guān)鍵詞時(shí),排序是不同的。
第二節 百度搜索引擎的工作原理
我所知道的百度搜索:由于工作原因,小生有幸一直在使用百度的Bestcom企業(yè)搜索引擎(該部門(mén)現已下崗,主要是百度的戰略開(kāi)始向谷歌靠攏,不再單獨銷(xiāo)售搜索引擎,并切換到搜索服務(wù)),據百度銷(xiāo)售人員介紹,Besttone的搜索核心與Big Search相同,只是版本可能略低,所以我有理由相信搜索的工作方式是相似的。以下是一些簡(jiǎn)單的介紹和注意事項:
1、關(guān)于網(wǎng)站搜索的更新頻率
百度搜索可以設置網(wǎng)站的更新頻率和時(shí)間。一般網(wǎng)站的更新頻率非???,會(huì )設置獨立的爬蟲(chóng)進(jìn)行跟蹤。不過(guò)百度比較勤快,中小網(wǎng)站一般天天更新。所以,如果你想讓你的網(wǎng)站更新更快,最好把你的鏈接放在一個(gè)大分類(lèi)目錄(比如yahoosina網(wǎng)易),或者百度自己的相關(guān)網(wǎng)站,有你的網(wǎng)站 超鏈接位于或您的 網(wǎng)站 位于某個(gè)大型 網(wǎng)站 中,例如大型 網(wǎng)站 博客。
2、關(guān)于采集的深度
百度搜索可以定義采集的深度,也就是說(shuō)百度不一定會(huì )檢索到你網(wǎng)站的所有內容。它可能只會(huì )索引你的網(wǎng)站首頁(yè)的內容,特別是對于小網(wǎng)站Speak。
3、采集關(guān)于經(jīng)常不和網(wǎng)站交流
百度對網(wǎng)站的連接和斷開(kāi)有特別的判斷。如果發(fā)現某個(gè)網(wǎng)站不可用,尤其是一些中小網(wǎng)站,百度會(huì )自動(dòng)停止向這些網(wǎng)站發(fā)送爬蟲(chóng),所以選擇很重要一個(gè)好的服務(wù)器并保持 網(wǎng)站 一天 24 小時(shí)開(kāi)放。
4、關(guān)于更改IP網(wǎng)站
百度搜索可以基于域名或IP地址。如果是域名,會(huì )自動(dòng)解析為對應的ip地址。因此,會(huì )有兩個(gè)問(wèn)題。首先是如果你的網(wǎng)站和其他人使用相同的IP地址,如果別人的網(wǎng)站被百度處罰,你的網(wǎng)站就會(huì )受到牽連。二是如果你更改ip地址,百度會(huì )發(fā)現你的域名與之前的ip地址不對應,會(huì )拒絕給你的網(wǎng)站發(fā)送爬蟲(chóng)。所以建議不要隨意更改ip地址。如果可能,嘗試獨享ip。保持網(wǎng)站的穩定性很重要。
5、關(guān)于靜態(tài)和動(dòng)態(tài)網(wǎng)站采集
很多人擔心是不是像asp?id=這樣的頁(yè)面很難采集,像html這樣的頁(yè)面容易采集。事實(shí)上,情況并沒(méi)有想象的那么糟糕。目前大部分搜索引擎都支持動(dòng)態(tài)網(wǎng)站的采集和檢索,包括需要登錄的網(wǎng)站,都可以檢索到,所以你不用擔心你的自己的動(dòng)態(tài)。網(wǎng)站 搜索引擎無(wú)法識別它們。百度搜索支持動(dòng)態(tài)。定制。但是,如果可能,請嘗試生成靜態(tài)頁(yè)面。同時(shí),對于大多數搜索引擎來(lái)說(shuō),腳本跳轉(JS)、框架(frame)、
Flash 超鏈接,動(dòng)態(tài)頁(yè)面中含有非法字符的頁(yè)面是無(wú)奈之舉。
6、關(guān)于索引的消失
如前所述,需要創(chuàng )建搜索索引。通常,良好搜索的索引是文本文件,而不是數據庫。因此,刪除索引中的記錄并不是一件方便的事情。例如,百度需要使用特殊工具手動(dòng)刪除索引記錄。據百度員工介紹,百度有一群人負責這件事——受理投訴、刪除記錄、人工。當然也可以直接刪除某個(gè)規則下的所有索引,即可以刪除某個(gè)網(wǎng)站下的所有索引。還有一個(gè)機制(未驗證),即過(guò)期網(wǎng)頁(yè)和作弊網(wǎng)頁(yè)(主要是網(wǎng)頁(yè)標題,關(guān)鍵詞和內容不匹配),在索引過(guò)程中也會(huì )被刪除。
7、關(guān)于重復數據刪除
百度搜索的去重不如谷歌的理想。主要是區分文章的標題和來(lái)源地址。只要不一樣,就不會(huì )自動(dòng)去重,所以不用擔心采集內容相似,很快就被Google搜索懲罰不一樣,人不多同時(shí)具有相同的標題 收錄。
另外,不要把搜索引擎想的那么聰明。他們基本上遵循一定的規則和公式。如果你不想被搜索引擎懲罰,就避開(kāi)這些規則。
第三節 谷歌搜索排名技術(shù)
搜索方面,谷歌比百度好,主要原因是谷歌更公平,而百度人為因素很多(這也符合中國國情),谷歌的公平源于其排名技術(shù)PageRank。
很多人都知道PageRank,也就是網(wǎng)站的質(zhì)量等級。值越小,網(wǎng)站越好。實(shí)際上,PageRank 是根據特殊公式計算得出的。當我們在 Google 上搜索 關(guān)鍵詞 時(shí),頁(yè)面排名較低的頁(yè)面的排名會(huì )更高。這個(gè)公式?jīng)]有人為干預,所以是公平的。
PageRank的最初想法來(lái)自紙質(zhì)檔案的管理。我們知道每篇論文最后都有參考文獻。如果某個(gè)文章被不同的論文多次引用,那么這個(gè)文章就可以被認為是一篇文章。優(yōu)秀的文章。
同理,簡(jiǎn)單的說(shuō),PageRank 可以對網(wǎng)頁(yè)的重要性做出客觀(guān)的評價(jià)。PageRank 不計算直接鏈接的數量,而是將網(wǎng)頁(yè) A 到網(wǎng)頁(yè) B 的鏈接解釋為網(wǎng)頁(yè) A 到網(wǎng)頁(yè) B 的投票。這樣,PageRank 將根據收到的投票數來(lái)評估頁(yè)面的重要性B頁(yè)面。此外,PageRank還會(huì )評估每個(gè)投票頁(yè)面的重要性,因為某些頁(yè)面的投票被認為具有更高的價(jià)值,因此它所鏈接的頁(yè)面可以獲得更高的價(jià)值。
這里省略了Page Rank的公式,說(shuō)說(shuō)影響Page Rank的主要因素
1、 指向您的 網(wǎng)站 的超鏈接數(您的 網(wǎng)站 被他人引用)。數字越大,您的 網(wǎng)站 就越重要。通俗的說(shuō),是其他網(wǎng)站友情鏈接,還是你的網(wǎng)站推薦鏈接;
2、超鏈接對你的網(wǎng)站的重要性,說(shuō)明質(zhì)量好的網(wǎng)站有你的網(wǎng)站的超鏈接,說(shuō)明你的網(wǎng)站也很出眾。
3、 網(wǎng)頁(yè)特定因素:包括網(wǎng)頁(yè)的內容、標題和網(wǎng)址,即關(guān)鍵詞 和網(wǎng)頁(yè)的位置。
第四季新網(wǎng)站如何處理搜索
以下是對以上分析的總結:
1、為什么不用搜索引擎收錄你的網(wǎng)站,有以下幾種可能(不是絕對的,要看各自的情況)
?。?)沒(méi)有島網(wǎng)頁(yè)鏈接,收錄的網(wǎng)站也沒(méi)有超鏈接給你,搜索引擎將無(wú)法找到你;
?。?)網(wǎng)站 網(wǎng)頁(yè)性質(zhì)和文件類(lèi)型(如flash、JS跳轉、一些動(dòng)態(tài)網(wǎng)頁(yè)、frame等)搜索引擎無(wú)法識別;
?。?)你的網(wǎng)站所在的服務(wù)器已經(jīng)被搜索引擎懲罰,而不是與收錄同IP的內容;
?。?)最近更改了服務(wù)器的IP地址,搜索引擎需要一段時(shí)間重新采集;
?。?)服務(wù)器不穩定,頻繁宕機,或無(wú)法承受爬蟲(chóng)的壓力采集;
?。?)網(wǎng)頁(yè)代碼低劣,搜索無(wú)法正確分析頁(yè)面內容。請至少學(xué)習HTML的基本語(yǔ)法。推薦XHTML;
?。?)網(wǎng)站 使用robots(robots.txt)協(xié)議拒絕搜索引擎抓取的網(wǎng)頁(yè);
?。?)使用關(guān)鍵詞作弊網(wǎng)頁(yè),網(wǎng)頁(yè)關(guān)鍵詞與內容嚴重不匹配,或部分關(guān)鍵詞密度過(guò)高;
?。?) 含有非法內容的網(wǎng)頁(yè);
?。?0)same網(wǎng)站 存在大量同名網(wǎng)頁(yè),或者網(wǎng)頁(yè)標題沒(méi)有實(shí)際意義;
2、如何正確做新站(僅供參考)
?。?)與優(yōu)秀的網(wǎng)站交換鏈接;
?。?)廣泛登錄各種網(wǎng)站的網(wǎng)站目錄列表;
?。?)多去優(yōu)質(zhì)論壇發(fā)言,發(fā)言質(zhì)量要好,最好不要回復。在發(fā)言中留下你的網(wǎng)站地址;
?。?)申請網(wǎng)站的博客(新浪、網(wǎng)易、CSDN),在博客中推廣自己的網(wǎng)站;
?。?)使用好的建站程序,最好生成靜態(tài)頁(yè)面,自動(dòng)生成關(guān)鍵詞;
?。?)注意每個(gè)網(wǎng)頁(yè)的標題和區域,盡量把匹配的關(guān)鍵詞放在這些容易搜索和索引的位置,注意文章的開(kāi)頭@>,并嘗試將其放在文章的開(kāi)頭部分,使用了類(lèi)似abstract的功能(可以學(xué)習網(wǎng)易的文章風(fēng)格)。
例如,“基于開(kāi)源jabber(XMPP)構建內部即時(shí)通訊服務(wù)的解決方案”;
標題部分:基于開(kāi)源jabber(XMPP)搭建內部即時(shí)通訊服務(wù)解決方案-肥龍(消耗品)專(zhuān)欄-PROG3.COM
關(guān)鍵詞部分:安裝,">
文章說(shuō)明部分:是知名的即時(shí)通訊服務(wù)服務(wù)器。它是一個(gè)免費的開(kāi)源軟件,允許用戶(hù)建立自己的即時(shí)通訊服務(wù)器,可以在互聯(lián)網(wǎng)或局域網(wǎng)中使用。
XMPP(Extensible Message Processing Field Protocol)是一種基于可擴展標記語(yǔ)言(XML)的協(xié)議,用于即時(shí)通訊(IM)和在線(xiàn)現場(chǎng)檢測。它正在促進(jìn)
準實(shí)時(shí)運行時(shí)間。該協(xié)議最終可能允許 Internet 用戶(hù)向 Internet 上的任何其他人發(fā)送即時(shí)消息,即使他們的操作系統和瀏覽器不同。XMPP 的技術(shù)來(lái)源于
對于 Jabber 來(lái)說(shuō),它其實(shí)是 Jabber 的核心協(xié)議,所以 XMPP 有時(shí)會(huì )被誤稱(chēng)為 Jabber 協(xié)議。Jabber 是一個(gè)基于 XMPP 協(xié)議的 IM 應用程序。除了 Jabber,XMPP 還支持許多應用程序。 查看全部
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(【知識點(diǎn)】HTML代碼分析的基本原理(一))
第一節 搜索引擎原理
1、基本概念
來(lái)自中文維基百科的解釋?zhuān)海ɑヂ?lián)網(wǎng))搜索引擎是指自動(dòng)從互聯(lián)網(wǎng)上采集信息,并經(jīng)過(guò)一定的排序,為用戶(hù)提供查詢(xún)的系統。
英文維基百科的解釋?zhuān)壕W(wǎng)絡(luò )搜索引擎提供了一個(gè)界面來(lái)搜索萬(wàn)維網(wǎng)上的信息。信息可能包括網(wǎng)頁(yè)、圖像和其他類(lèi)型的文件。(網(wǎng)絡(luò )搜索引擎提供了一個(gè)接口,可以在萬(wàn)維網(wǎng)上搜索信息。這些信息包括網(wǎng)頁(yè)、圖片和其他類(lèi)型的文檔)
2、類(lèi)別
根據工作原理的不同,它們可以分為兩個(gè)基本類(lèi)別:全文搜索引擎和目錄)。
分類(lèi)目錄是人工采集整理網(wǎng)站數據形成數據庫,如雅虎中國和國內搜狐、新浪、網(wǎng)易目錄。此外,互聯(lián)網(wǎng)上的一些導航網(wǎng)站也可以歸入原創(chuàng )分類(lèi)目錄,例如“網(wǎng)站之家”()。
全文搜索引擎自動(dòng)分析網(wǎng)頁(yè)的超鏈接,依靠對超鏈接和HTML代碼的分析來(lái)獲取網(wǎng)頁(yè)的信息內容,并根據預先設計好的索引進(jìn)行分析和整理。用戶(hù)查詢(xún)規則。
兩者的區別可以用一句話(huà)概括:類(lèi)別目錄是手動(dòng)創(chuàng )建的網(wǎng)站索引,全文搜索是自動(dòng)創(chuàng )建的網(wǎng)頁(yè)索引。(有些人經(jīng)常將搜索引擎與數據庫搜索進(jìn)行比較,但他們實(shí)際上是錯誤的)。
3、全文搜索是如何工作的?
全文搜索引擎一般信息采集、索引、搜索三部分,詳細信息可以由搜索器、分析器、索引器、搜索器和用戶(hù)界面等五部分組成
?。?)Information采集(Webcrawling):信息采集的工作是由搜索者和分析者共同完成的。搜索引擎使用爬蟲(chóng),蜘蛛,或者稱(chēng)為robots的自動(dòng)搜索機器人程序來(lái)查找網(wǎng)頁(yè)上的超鏈接。
進(jìn)一步解釋?zhuān)骸皺C器人”實(shí)際上是一些基于網(wǎng)絡(luò )的程序。他們請求網(wǎng)站上的 HTML 頁(yè)面采集 HTML 頁(yè)面。它遍歷指定范圍內的整個(gè)Web空間,并從一個(gè)網(wǎng)頁(yè)中不斷傳輸。到另一個(gè)網(wǎng)頁(yè),從一個(gè)站點(diǎn)移動(dòng)到另一個(gè)站點(diǎn),并將網(wǎng)頁(yè)采集添加到網(wǎng)頁(yè)數據庫中?!皺C器人”每次遇到一個(gè)新的網(wǎng)頁(yè),都要搜索里面的所有鏈接,所以理論上來(lái)說(shuō),如果為“機器人”建立了一個(gè)合適的初始頁(yè)面集,從這個(gè)初始頁(yè)面集開(kāi)始,所有的鏈接都是遍歷后,“機器人”將能夠采集 到整個(gè)網(wǎng)絡(luò )空間中的網(wǎng)頁(yè)。
在一些開(kāi)源社區中可以找到很多開(kāi)源爬蟲(chóng)程序。
關(guān)鍵點(diǎn)1:核心在于html分析,所以嚴謹、結構化、可讀、無(wú)錯誤的html代碼更容易被采集機器人和采集分析。比如某個(gè)頁(yè)面有這樣的結尾,在頁(yè)面上顯示不是問(wèn)題,但是很可能被采集收錄拒絕,比如類(lèi)似../../***.htm 這樣的超鏈接也可能導致蜘蛛無(wú)法識別。這也是需要推廣網(wǎng)絡(luò )標準的原因之一。按照網(wǎng)絡(luò )標準制作的網(wǎng)頁(yè)更容易被搜索引擎檢索和收錄。
關(guān)鍵點(diǎn)2:搜索機器人有專(zhuān)門(mén)的搜索鏈接庫。搜索同一個(gè)超鏈接時(shí),會(huì )自動(dòng)比較新舊網(wǎng)頁(yè)的內容和大小。如果它們相同,則不會(huì )是采集。因此,有人擔心修改后的網(wǎng)頁(yè)是否可以收錄,這是多余的。
?。?)索引:搜索引擎組織信息的過(guò)程稱(chēng)為“索引”。搜索引擎不僅需要保存采集到的信息,還要按照一定的規則進(jìn)行排列。索引可以是一般的大型數據庫,如如ORACLE、Sybase等,也可以定義自己的文件格式進(jìn)行存儲。索引是搜索中比較復雜的部分,涉及到網(wǎng)頁(yè)結構分析、分詞、排序等技術(shù),一個(gè)好的索引可以大大提高檢索速度。
關(guān)鍵點(diǎn)一:雖然目前的搜索引擎都支持增量索引,但創(chuàng )建索引仍然需要很長(cháng)時(shí)間。搜索引擎會(huì )定期更新索引。因此,即使爬蟲(chóng)來(lái)了,直到我們可以在頁(yè)面上進(jìn)行搜索之前,都會(huì )有一定的時(shí)間間隔。
關(guān)鍵點(diǎn)2:索引是區分好搜索和壞搜索的重要標志。
?。?)Searching:用戶(hù)向搜索引擎發(fā)送查詢(xún),搜索引擎接受查詢(xún)并將信息返回給用戶(hù)。有些系統在返回結果之前會(huì )計算和評估網(wǎng)頁(yè)的相關(guān)性,并基于相關(guān)度排序,將相關(guān)度高的放在首位,相關(guān)度低的放在后面;有的系統在用戶(hù)查詢(xún)之前已經(jīng)計算了每個(gè)網(wǎng)頁(yè)的頁(yè)面排名(PageRank會(huì )在后面介紹),返回頁(yè)面排名查詢(xún)結果返回時(shí),較大的放在前面,較小的放在后面。
關(guān)鍵點(diǎn)一:不同的搜索引擎有不同的排序規則,所以在不同的搜索引擎中搜索相同的關(guān)鍵詞時(shí),排序是不同的。
第二節 百度搜索引擎的工作原理
我所知道的百度搜索:由于工作原因,小生有幸一直在使用百度的Bestcom企業(yè)搜索引擎(該部門(mén)現已下崗,主要是百度的戰略開(kāi)始向谷歌靠攏,不再單獨銷(xiāo)售搜索引擎,并切換到搜索服務(wù)),據百度銷(xiāo)售人員介紹,Besttone的搜索核心與Big Search相同,只是版本可能略低,所以我有理由相信搜索的工作方式是相似的。以下是一些簡(jiǎn)單的介紹和注意事項:
1、關(guān)于網(wǎng)站搜索的更新頻率
百度搜索可以設置網(wǎng)站的更新頻率和時(shí)間。一般網(wǎng)站的更新頻率非???,會(huì )設置獨立的爬蟲(chóng)進(jìn)行跟蹤。不過(guò)百度比較勤快,中小網(wǎng)站一般天天更新。所以,如果你想讓你的網(wǎng)站更新更快,最好把你的鏈接放在一個(gè)大分類(lèi)目錄(比如yahoosina網(wǎng)易),或者百度自己的相關(guān)網(wǎng)站,有你的網(wǎng)站 超鏈接位于或您的 網(wǎng)站 位于某個(gè)大型 網(wǎng)站 中,例如大型 網(wǎng)站 博客。
2、關(guān)于采集的深度
百度搜索可以定義采集的深度,也就是說(shuō)百度不一定會(huì )檢索到你網(wǎng)站的所有內容。它可能只會(huì )索引你的網(wǎng)站首頁(yè)的內容,特別是對于小網(wǎng)站Speak。
3、采集關(guān)于經(jīng)常不和網(wǎng)站交流
百度對網(wǎng)站的連接和斷開(kāi)有特別的判斷。如果發(fā)現某個(gè)網(wǎng)站不可用,尤其是一些中小網(wǎng)站,百度會(huì )自動(dòng)停止向這些網(wǎng)站發(fā)送爬蟲(chóng),所以選擇很重要一個(gè)好的服務(wù)器并保持 網(wǎng)站 一天 24 小時(shí)開(kāi)放。
4、關(guān)于更改IP網(wǎng)站
百度搜索可以基于域名或IP地址。如果是域名,會(huì )自動(dòng)解析為對應的ip地址。因此,會(huì )有兩個(gè)問(wèn)題。首先是如果你的網(wǎng)站和其他人使用相同的IP地址,如果別人的網(wǎng)站被百度處罰,你的網(wǎng)站就會(huì )受到牽連。二是如果你更改ip地址,百度會(huì )發(fā)現你的域名與之前的ip地址不對應,會(huì )拒絕給你的網(wǎng)站發(fā)送爬蟲(chóng)。所以建議不要隨意更改ip地址。如果可能,嘗試獨享ip。保持網(wǎng)站的穩定性很重要。
5、關(guān)于靜態(tài)和動(dòng)態(tài)網(wǎng)站采集
很多人擔心是不是像asp?id=這樣的頁(yè)面很難采集,像html這樣的頁(yè)面容易采集。事實(shí)上,情況并沒(méi)有想象的那么糟糕。目前大部分搜索引擎都支持動(dòng)態(tài)網(wǎng)站的采集和檢索,包括需要登錄的網(wǎng)站,都可以檢索到,所以你不用擔心你的自己的動(dòng)態(tài)。網(wǎng)站 搜索引擎無(wú)法識別它們。百度搜索支持動(dòng)態(tài)。定制。但是,如果可能,請嘗試生成靜態(tài)頁(yè)面。同時(shí),對于大多數搜索引擎來(lái)說(shuō),腳本跳轉(JS)、框架(frame)、
Flash 超鏈接,動(dòng)態(tài)頁(yè)面中含有非法字符的頁(yè)面是無(wú)奈之舉。
6、關(guān)于索引的消失
如前所述,需要創(chuàng )建搜索索引。通常,良好搜索的索引是文本文件,而不是數據庫。因此,刪除索引中的記錄并不是一件方便的事情。例如,百度需要使用特殊工具手動(dòng)刪除索引記錄。據百度員工介紹,百度有一群人負責這件事——受理投訴、刪除記錄、人工。當然也可以直接刪除某個(gè)規則下的所有索引,即可以刪除某個(gè)網(wǎng)站下的所有索引。還有一個(gè)機制(未驗證),即過(guò)期網(wǎng)頁(yè)和作弊網(wǎng)頁(yè)(主要是網(wǎng)頁(yè)標題,關(guān)鍵詞和內容不匹配),在索引過(guò)程中也會(huì )被刪除。
7、關(guān)于重復數據刪除
百度搜索的去重不如谷歌的理想。主要是區分文章的標題和來(lái)源地址。只要不一樣,就不會(huì )自動(dòng)去重,所以不用擔心采集內容相似,很快就被Google搜索懲罰不一樣,人不多同時(shí)具有相同的標題 收錄。
另外,不要把搜索引擎想的那么聰明。他們基本上遵循一定的規則和公式。如果你不想被搜索引擎懲罰,就避開(kāi)這些規則。
第三節 谷歌搜索排名技術(shù)
搜索方面,谷歌比百度好,主要原因是谷歌更公平,而百度人為因素很多(這也符合中國國情),谷歌的公平源于其排名技術(shù)PageRank。
很多人都知道PageRank,也就是網(wǎng)站的質(zhì)量等級。值越小,網(wǎng)站越好。實(shí)際上,PageRank 是根據特殊公式計算得出的。當我們在 Google 上搜索 關(guān)鍵詞 時(shí),頁(yè)面排名較低的頁(yè)面的排名會(huì )更高。這個(gè)公式?jīng)]有人為干預,所以是公平的。
PageRank的最初想法來(lái)自紙質(zhì)檔案的管理。我們知道每篇論文最后都有參考文獻。如果某個(gè)文章被不同的論文多次引用,那么這個(gè)文章就可以被認為是一篇文章。優(yōu)秀的文章。
同理,簡(jiǎn)單的說(shuō),PageRank 可以對網(wǎng)頁(yè)的重要性做出客觀(guān)的評價(jià)。PageRank 不計算直接鏈接的數量,而是將網(wǎng)頁(yè) A 到網(wǎng)頁(yè) B 的鏈接解釋為網(wǎng)頁(yè) A 到網(wǎng)頁(yè) B 的投票。這樣,PageRank 將根據收到的投票數來(lái)評估頁(yè)面的重要性B頁(yè)面。此外,PageRank還會(huì )評估每個(gè)投票頁(yè)面的重要性,因為某些頁(yè)面的投票被認為具有更高的價(jià)值,因此它所鏈接的頁(yè)面可以獲得更高的價(jià)值。
這里省略了Page Rank的公式,說(shuō)說(shuō)影響Page Rank的主要因素
1、 指向您的 網(wǎng)站 的超鏈接數(您的 網(wǎng)站 被他人引用)。數字越大,您的 網(wǎng)站 就越重要。通俗的說(shuō),是其他網(wǎng)站友情鏈接,還是你的網(wǎng)站推薦鏈接;
2、超鏈接對你的網(wǎng)站的重要性,說(shuō)明質(zhì)量好的網(wǎng)站有你的網(wǎng)站的超鏈接,說(shuō)明你的網(wǎng)站也很出眾。
3、 網(wǎng)頁(yè)特定因素:包括網(wǎng)頁(yè)的內容、標題和網(wǎng)址,即關(guān)鍵詞 和網(wǎng)頁(yè)的位置。
第四季新網(wǎng)站如何處理搜索
以下是對以上分析的總結:
1、為什么不用搜索引擎收錄你的網(wǎng)站,有以下幾種可能(不是絕對的,要看各自的情況)
?。?)沒(méi)有島網(wǎng)頁(yè)鏈接,收錄的網(wǎng)站也沒(méi)有超鏈接給你,搜索引擎將無(wú)法找到你;
?。?)網(wǎng)站 網(wǎng)頁(yè)性質(zhì)和文件類(lèi)型(如flash、JS跳轉、一些動(dòng)態(tài)網(wǎng)頁(yè)、frame等)搜索引擎無(wú)法識別;
?。?)你的網(wǎng)站所在的服務(wù)器已經(jīng)被搜索引擎懲罰,而不是與收錄同IP的內容;
?。?)最近更改了服務(wù)器的IP地址,搜索引擎需要一段時(shí)間重新采集;
?。?)服務(wù)器不穩定,頻繁宕機,或無(wú)法承受爬蟲(chóng)的壓力采集;
?。?)網(wǎng)頁(yè)代碼低劣,搜索無(wú)法正確分析頁(yè)面內容。請至少學(xué)習HTML的基本語(yǔ)法。推薦XHTML;
?。?)網(wǎng)站 使用robots(robots.txt)協(xié)議拒絕搜索引擎抓取的網(wǎng)頁(yè);
?。?)使用關(guān)鍵詞作弊網(wǎng)頁(yè),網(wǎng)頁(yè)關(guān)鍵詞與內容嚴重不匹配,或部分關(guān)鍵詞密度過(guò)高;
?。?) 含有非法內容的網(wǎng)頁(yè);
?。?0)same網(wǎng)站 存在大量同名網(wǎng)頁(yè),或者網(wǎng)頁(yè)標題沒(méi)有實(shí)際意義;
2、如何正確做新站(僅供參考)
?。?)與優(yōu)秀的網(wǎng)站交換鏈接;
?。?)廣泛登錄各種網(wǎng)站的網(wǎng)站目錄列表;
?。?)多去優(yōu)質(zhì)論壇發(fā)言,發(fā)言質(zhì)量要好,最好不要回復。在發(fā)言中留下你的網(wǎng)站地址;
?。?)申請網(wǎng)站的博客(新浪、網(wǎng)易、CSDN),在博客中推廣自己的網(wǎng)站;
?。?)使用好的建站程序,最好生成靜態(tài)頁(yè)面,自動(dòng)生成關(guān)鍵詞;
?。?)注意每個(gè)網(wǎng)頁(yè)的標題和區域,盡量把匹配的關(guān)鍵詞放在這些容易搜索和索引的位置,注意文章的開(kāi)頭@>,并嘗試將其放在文章的開(kāi)頭部分,使用了類(lèi)似abstract的功能(可以學(xué)習網(wǎng)易的文章風(fēng)格)。
例如,“基于開(kāi)源jabber(XMPP)構建內部即時(shí)通訊服務(wù)的解決方案”;
標題部分:基于開(kāi)源jabber(XMPP)搭建內部即時(shí)通訊服務(wù)解決方案-肥龍(消耗品)專(zhuān)欄-PROG3.COM
關(guān)鍵詞部分:安裝,">
文章說(shuō)明部分:是知名的即時(shí)通訊服務(wù)服務(wù)器。它是一個(gè)免費的開(kāi)源軟件,允許用戶(hù)建立自己的即時(shí)通訊服務(wù)器,可以在互聯(lián)網(wǎng)或局域網(wǎng)中使用。
XMPP(Extensible Message Processing Field Protocol)是一種基于可擴展標記語(yǔ)言(XML)的協(xié)議,用于即時(shí)通訊(IM)和在線(xiàn)現場(chǎng)檢測。它正在促進(jìn)
準實(shí)時(shí)運行時(shí)間。該協(xié)議最終可能允許 Internet 用戶(hù)向 Internet 上的任何其他人發(fā)送即時(shí)消息,即使他們的操作系統和瀏覽器不同。XMPP 的技術(shù)來(lái)源于
對于 Jabber 來(lái)說(shuō),它其實(shí)是 Jabber 的核心協(xié)議,所以 XMPP 有時(shí)會(huì )被誤稱(chēng)為 Jabber 協(xié)議。Jabber 是一個(gè)基于 XMPP 協(xié)議的 IM 應用程序。除了 Jabber,XMPP 還支持許多應用程序。
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(Python語(yǔ)言程序簡(jiǎn)單高效,編寫(xiě)網(wǎng)絡(luò )爬蟲(chóng)有特別的優(yōu)勢)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 89 次瀏覽 ? 2021-11-01 18:06
1.什么是爬蟲(chóng)
爬蟲(chóng)是網(wǎng)絡(luò )爬蟲(chóng)。大家可以把它理解為在互聯(lián)網(wǎng)上爬行的蜘蛛?;ヂ?lián)網(wǎng)就像一個(gè)大網(wǎng),爬蟲(chóng)就是在這個(gè)網(wǎng)上爬來(lái)爬去的蜘蛛。如果它遇到資源,那么它會(huì )被爬下來(lái)。你想爬什么?這取決于你來(lái)控制它。比如它在爬一個(gè)網(wǎng)頁(yè),他在這個(gè)網(wǎng)頁(yè)上找到了一條路,其實(shí)就是一個(gè)網(wǎng)頁(yè)的超鏈接,然后就可以爬到另一個(gè)網(wǎng)頁(yè)上獲取數據了。這樣一來(lái),整個(gè)相連的網(wǎng)都在這只蜘蛛的觸手可及的范圍內,分分鐘爬下來(lái)也不成問(wèn)題。
網(wǎng)絡(luò )爬蟲(chóng)是一組可以自動(dòng)從網(wǎng)站的相關(guān)網(wǎng)頁(yè)中搜索和提取數據的程序。提取和存儲這些數據是進(jìn)一步數據分析的關(guān)鍵和前提。Python語(yǔ)言程序簡(jiǎn)單高效,編寫(xiě)網(wǎng)絡(luò )爬蟲(chóng)有特殊優(yōu)勢。尤其是業(yè)界有各種專(zhuān)門(mén)為Python編寫(xiě)的爬蟲(chóng)程序框架,使得爬蟲(chóng)程序的編寫(xiě)更加簡(jiǎn)單高效。
Python 是一種面向對象的解釋型計算機編程語(yǔ)言。該語(yǔ)言開(kāi)源、免費、功能強大,語(yǔ)法簡(jiǎn)單明了,庫豐富而強大,是目前廣泛使用的編程語(yǔ)言。
2.瀏覽網(wǎng)頁(yè)的過(guò)程
在用戶(hù)瀏覽網(wǎng)頁(yè)的過(guò)程中,我們可能會(huì )看到很多漂亮的圖片,比如我們會(huì )看到一些圖片和百度搜索框。這個(gè)過(guò)程其實(shí)就是用戶(hù)輸入URL,通過(guò)DNS服務(wù)器找到服務(wù)器主機之后。向服務(wù)器發(fā)送請求。服務(wù)器解析后,將瀏覽器的HTML、JS、CSS等文件發(fā)送給用戶(hù)。瀏覽器解析出來(lái),用戶(hù)可以看到各種圖片。
因此,用戶(hù)看到的網(wǎng)頁(yè)本質(zhì)上是由HTML代碼組成的,爬蟲(chóng)爬取這個(gè)內容。通過(guò)對這些HTML代碼進(jìn)行分析和過(guò)濾,可以獲得圖片、文字等資源。 查看全部
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(Python語(yǔ)言程序簡(jiǎn)單高效,編寫(xiě)網(wǎng)絡(luò )爬蟲(chóng)有特別的優(yōu)勢)
1.什么是爬蟲(chóng)
爬蟲(chóng)是網(wǎng)絡(luò )爬蟲(chóng)。大家可以把它理解為在互聯(lián)網(wǎng)上爬行的蜘蛛?;ヂ?lián)網(wǎng)就像一個(gè)大網(wǎng),爬蟲(chóng)就是在這個(gè)網(wǎng)上爬來(lái)爬去的蜘蛛。如果它遇到資源,那么它會(huì )被爬下來(lái)。你想爬什么?這取決于你來(lái)控制它。比如它在爬一個(gè)網(wǎng)頁(yè),他在這個(gè)網(wǎng)頁(yè)上找到了一條路,其實(shí)就是一個(gè)網(wǎng)頁(yè)的超鏈接,然后就可以爬到另一個(gè)網(wǎng)頁(yè)上獲取數據了。這樣一來(lái),整個(gè)相連的網(wǎng)都在這只蜘蛛的觸手可及的范圍內,分分鐘爬下來(lái)也不成問(wèn)題。
網(wǎng)絡(luò )爬蟲(chóng)是一組可以自動(dòng)從網(wǎng)站的相關(guān)網(wǎng)頁(yè)中搜索和提取數據的程序。提取和存儲這些數據是進(jìn)一步數據分析的關(guān)鍵和前提。Python語(yǔ)言程序簡(jiǎn)單高效,編寫(xiě)網(wǎng)絡(luò )爬蟲(chóng)有特殊優(yōu)勢。尤其是業(yè)界有各種專(zhuān)門(mén)為Python編寫(xiě)的爬蟲(chóng)程序框架,使得爬蟲(chóng)程序的編寫(xiě)更加簡(jiǎn)單高效。
Python 是一種面向對象的解釋型計算機編程語(yǔ)言。該語(yǔ)言開(kāi)源、免費、功能強大,語(yǔ)法簡(jiǎn)單明了,庫豐富而強大,是目前廣泛使用的編程語(yǔ)言。
2.瀏覽網(wǎng)頁(yè)的過(guò)程
在用戶(hù)瀏覽網(wǎng)頁(yè)的過(guò)程中,我們可能會(huì )看到很多漂亮的圖片,比如我們會(huì )看到一些圖片和百度搜索框。這個(gè)過(guò)程其實(shí)就是用戶(hù)輸入URL,通過(guò)DNS服務(wù)器找到服務(wù)器主機之后。向服務(wù)器發(fā)送請求。服務(wù)器解析后,將瀏覽器的HTML、JS、CSS等文件發(fā)送給用戶(hù)。瀏覽器解析出來(lái),用戶(hù)可以看到各種圖片。
因此,用戶(hù)看到的網(wǎng)頁(yè)本質(zhì)上是由HTML代碼組成的,爬蟲(chóng)爬取這個(gè)內容。通過(guò)對這些HTML代碼進(jìn)行分析和過(guò)濾,可以獲得圖片、文字等資源。
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(Excel教程Excel函數的Xpath路徑,快速檢驗我們爬取的信息是否正確)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 149 次瀏覽 ? 2021-10-31 20:02
2、如何搜索關(guān)鍵詞?
通過(guò)URL我們可以發(fā)現,你只需要在kw=()和ffa括號中輸入你要搜索的內容即可。這樣,我們就可以用一個(gè) {} 來(lái)代替它,后面我們會(huì )循環(huán)遍歷它。
【五、項目實(shí)施】
1、創(chuàng )建一個(gè)名為BaiduImageSpider的類(lèi),定義一個(gè)main方法main和一個(gè)初始化方法init。導入所需的庫。
import requests
from lxml import etree
from urllib import parse
class BaiduImageSpider(object):
def __init__(self, tieba_name):
pass
def main(self):
pass
if __name__ == '__main__':
inout_word = input("請輸入你要查詢(xún)的信息:")
spider.main()
pass
if __name__ == '__main__':
spider= ImageSpider()
spider.main()
2、準備url地址和請求頭來(lái)請求數據。
import requests
from lxml import etree
from urllib import parse
class BaiduImageSpider(object):
def __init__(self, tieba_name):
self.tieba_name = tieba_name #輸入的名字
self.url = "http://tieba.baidu.com/f?kw={}&ie=utf-8&pn=0"
self.headers = {
'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3)'
}
'''發(fā)送請求 獲取響應'''
def get_parse_page(self, url, xpath):
html = requests.get(url=url, headers=self.headers).content.decode("utf-8")
parse_html = etree.HTML(html)
r_list = parse_html.xpath(xpath)
return r_list
def main(self):
url = self.url.format(self.tieba_name)
if __name__ == '__main__':
inout_word = input("請輸入你要查詢(xún)的信息:")
key_word = parse.quote(inout_word)
spider = BaiduImageSpider(key_word)
spider.main()
3、xpath 數據分析
3.1、chrome_Xpath 插件安裝
1) 這里使用了一個(gè)插件。它可以快速檢查我們抓取的信息是否正確。具體安裝方法如下。
2)百度下載chrome_Xpath_v2.0.2.crx,chrome瀏覽器輸入:/extensions/
3) 將chrome_Xpath_v2.0.2.crx 直接拖到擴展頁(yè)面;
4) 如果安裝失敗,彈出提示“無(wú)法從這個(gè)網(wǎng)站添加應用程序、擴展和用戶(hù)腳本”。如果遇到這個(gè)問(wèn)題,解決方法是:打開(kāi)開(kāi)發(fā)者模式保存crx文件(直接或者修改后綴為rar)解壓到一個(gè)文件夾,點(diǎn)擊開(kāi)發(fā)者模式加載解壓后的擴展,選擇解壓后的文件夾,點(diǎn)擊確定,安裝成功;
3.2、chrome_Xpath 插件使用
上面的chrome_Xpath插件我們已經(jīng)安裝好了,接下來(lái)就要用到了。
打開(kāi)瀏覽器,按快捷鍵F12。
選擇下圖所示的元素。
3) 右擊,然后選擇“Copy XPath”,如下圖。
3.3、寫(xiě)代碼,獲取鏈接函數。
我們已經(jīng)獲得了上面鏈接函數的Xpath路徑,然后定義了一個(gè)鏈接函數get_tlink并繼承self來(lái)實(shí)現多頁(yè)面抓取。
'''獲取鏈接函數'''
def get_tlink(self, url):
xpath = '//div[@class="threadlist_lz clearfix"]/div/a/@href'
t_list = self.get_parse_page(url, xpath)
# print(len(t_list))
for t in t_list:
t_link = "http://www.tieba.com" + t
'''接下來(lái)對帖子地址發(fā)送請求 將保存到本地'''
self.write_image(t_link)
4、保存數據
這里定義了一個(gè)write_image方法來(lái)保存數據,如下圖。
'''保存到本地函數'''
d
1000
ef write_image(self, t_link):
xpath = "//div[@class='d_post_content j_d_post_content clearfix']/img[@class='BDE_Image']/@src | //div[@class='video_src_wrapper']/embed/@data-video"
img_list = self.get_parse_page(t_link, xpath)
for img_link in img_list:
html = requests.get(url=img_link, headers=self.headers).content
filename = "百度/"+img_link[-10:]
with open(filename, 'wb') as f:
f.write(html)
print("%s下載成功" % filename)
注:@data-video 為 URL 中的視頻,如下圖所示。
【六、效果展示】
1、點(diǎn)擊運行,如下圖(請輸入您要查詢(xún)的信息):
2、以吳京為例輸入后回車(chē):
3、將下載的圖片保存在名為“百度”的文件夾中,該文件夾需要提前在本地創(chuàng )建。一定要記得提前在當前代碼的同級目錄下新建一個(gè)名為“百度”的文件夾,否則系統會(huì )找不到文件夾,會(huì )報錯找不到文件夾“百度”。
4、下圖中的MP4為評論區視頻。
[七、總結]
1、 不建議抓取太多數據,可能造成服務(wù)器負載,簡(jiǎn)單試一下。
2、本文基于Python網(wǎng)絡(luò )爬蟲(chóng),利用爬蟲(chóng)庫實(shí)現百度貼吧評論區爬取。對Python爬取百度貼吧的一些難點(diǎn)進(jìn)行詳細講解并提供有效的解決方案。
3、歡迎積極嘗試。有時(shí)你看到別人實(shí)施起來(lái)很容易,但自己動(dòng)手時(shí),總會(huì )出現各種問(wèn)題。不要自卑,勤于理解。深刻的。學(xué)習r(shí)equests庫的使用和爬蟲(chóng)程序的編寫(xiě)。
4、 通過(guò)這個(gè)項目,你可以更快的得到你想要的信息。
5、如需本文源碼,請后臺回復“百度貼吧”獲取。
看完這篇文章你學(xué)會(huì )了嗎?請轉發(fā)并分享給更多人
IT共享之家 查看全部
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(Excel教程Excel函數的Xpath路徑,快速檢驗我們爬取的信息是否正確)
2、如何搜索關(guān)鍵詞?
通過(guò)URL我們可以發(fā)現,你只需要在kw=()和ffa括號中輸入你要搜索的內容即可。這樣,我們就可以用一個(gè) {} 來(lái)代替它,后面我們會(huì )循環(huán)遍歷它。
【五、項目實(shí)施】
1、創(chuàng )建一個(gè)名為BaiduImageSpider的類(lèi),定義一個(gè)main方法main和一個(gè)初始化方法init。導入所需的庫。
import requests
from lxml import etree
from urllib import parse
class BaiduImageSpider(object):
def __init__(self, tieba_name):
pass
def main(self):
pass
if __name__ == '__main__':
inout_word = input("請輸入你要查詢(xún)的信息:")
spider.main()
pass
if __name__ == '__main__':
spider= ImageSpider()
spider.main()
2、準備url地址和請求頭來(lái)請求數據。
import requests
from lxml import etree
from urllib import parse
class BaiduImageSpider(object):
def __init__(self, tieba_name):
self.tieba_name = tieba_name #輸入的名字
self.url = "http://tieba.baidu.com/f?kw={}&ie=utf-8&pn=0"
self.headers = {
'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3)'
}
'''發(fā)送請求 獲取響應'''
def get_parse_page(self, url, xpath):
html = requests.get(url=url, headers=self.headers).content.decode("utf-8")
parse_html = etree.HTML(html)
r_list = parse_html.xpath(xpath)
return r_list
def main(self):
url = self.url.format(self.tieba_name)
if __name__ == '__main__':
inout_word = input("請輸入你要查詢(xún)的信息:")
key_word = parse.quote(inout_word)
spider = BaiduImageSpider(key_word)
spider.main()
3、xpath 數據分析
3.1、chrome_Xpath 插件安裝
1) 這里使用了一個(gè)插件。它可以快速檢查我們抓取的信息是否正確。具體安裝方法如下。
2)百度下載chrome_Xpath_v2.0.2.crx,chrome瀏覽器輸入:/extensions/

3) 將chrome_Xpath_v2.0.2.crx 直接拖到擴展頁(yè)面;
4) 如果安裝失敗,彈出提示“無(wú)法從這個(gè)網(wǎng)站添加應用程序、擴展和用戶(hù)腳本”。如果遇到這個(gè)問(wèn)題,解決方法是:打開(kāi)開(kāi)發(fā)者模式保存crx文件(直接或者修改后綴為rar)解壓到一個(gè)文件夾,點(diǎn)擊開(kāi)發(fā)者模式加載解壓后的擴展,選擇解壓后的文件夾,點(diǎn)擊確定,安裝成功;
3.2、chrome_Xpath 插件使用
上面的chrome_Xpath插件我們已經(jīng)安裝好了,接下來(lái)就要用到了。
打開(kāi)瀏覽器,按快捷鍵F12。
選擇下圖所示的元素。

3) 右擊,然后選擇“Copy XPath”,如下圖。

3.3、寫(xiě)代碼,獲取鏈接函數。
我們已經(jīng)獲得了上面鏈接函數的Xpath路徑,然后定義了一個(gè)鏈接函數get_tlink并繼承self來(lái)實(shí)現多頁(yè)面抓取。
'''獲取鏈接函數'''
def get_tlink(self, url):
xpath = '//div[@class="threadlist_lz clearfix"]/div/a/@href'
t_list = self.get_parse_page(url, xpath)
# print(len(t_list))
for t in t_list:
t_link = "http://www.tieba.com" + t
'''接下來(lái)對帖子地址發(fā)送請求 將保存到本地'''
self.write_image(t_link)
4、保存數據
這里定義了一個(gè)write_image方法來(lái)保存數據,如下圖。
'''保存到本地函數'''
d
1000
ef write_image(self, t_link):
xpath = "//div[@class='d_post_content j_d_post_content clearfix']/img[@class='BDE_Image']/@src | //div[@class='video_src_wrapper']/embed/@data-video"
img_list = self.get_parse_page(t_link, xpath)
for img_link in img_list:
html = requests.get(url=img_link, headers=self.headers).content
filename = "百度/"+img_link[-10:]
with open(filename, 'wb') as f:
f.write(html)
print("%s下載成功" % filename)
注:@data-video 為 URL 中的視頻,如下圖所示。

【六、效果展示】
1、點(diǎn)擊運行,如下圖(請輸入您要查詢(xún)的信息):
2、以吳京為例輸入后回車(chē):

3、將下載的圖片保存在名為“百度”的文件夾中,該文件夾需要提前在本地創(chuàng )建。一定要記得提前在當前代碼的同級目錄下新建一個(gè)名為“百度”的文件夾,否則系統會(huì )找不到文件夾,會(huì )報錯找不到文件夾“百度”。

4、下圖中的MP4為評論區視頻。

[七、總結]
1、 不建議抓取太多數據,可能造成服務(wù)器負載,簡(jiǎn)單試一下。
2、本文基于Python網(wǎng)絡(luò )爬蟲(chóng),利用爬蟲(chóng)庫實(shí)現百度貼吧評論區爬取。對Python爬取百度貼吧的一些難點(diǎn)進(jìn)行詳細講解并提供有效的解決方案。
3、歡迎積極嘗試。有時(shí)你看到別人實(shí)施起來(lái)很容易,但自己動(dòng)手時(shí),總會(huì )出現各種問(wèn)題。不要自卑,勤于理解。深刻的。學(xué)習r(shí)equests庫的使用和爬蟲(chóng)程序的編寫(xiě)。
4、 通過(guò)這個(gè)項目,你可以更快的得到你想要的信息。
5、如需本文源碼,請后臺回復“百度貼吧”獲取。
看完這篇文章你學(xué)會(huì )了嗎?請轉發(fā)并分享給更多人
IT共享之家
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(如何實(shí)現搜索關(guān)鍵字?(一)_e操盤(pán)_)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 66 次瀏覽 ? 2021-10-30 10:05
2、如何搜索關(guān)鍵詞?
通過(guò)URL,我們可以發(fā)現我們只需要在kw=()和括號中輸入你要搜索的內容即可。這樣,我們就可以用一個(gè) {} 來(lái)代替它,后面我們會(huì )循環(huán)遍歷它。
【五、項目實(shí)施】
1、創(chuàng )建一個(gè)名為BaiduImageSpider的類(lèi),定義一個(gè)main方法main和一個(gè)初始化方法init。導入所需的庫。
import requests
from lxml import etree
from urllib import parse
class BaiduImageSpider(object):
def __init__(self, tieba_name):
pass
def main(self):
pass
if __name__ == '__main__':
inout_word = input("請輸入你要查詢(xún)的信息:")
spider.main()
pass
if __name__ == '__main__':
spider= ImageSpider()
spider.main()
2、準備url地址和請求頭來(lái)請求數據。
import requests
from lxml import etree
from urllib import parse
class BaiduImageSpider(object):
def __init__(self, tieba_name):
self.tieba_name = tieba_name #輸入的名字
self.url = "http://tieba.baidu.com/f?kw={}&ie=utf-8&pn=0"
self.headers = {
'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3)'
}
'''發(fā)送請求 獲取響應'''
def get_parse_page(self, url, xpath):
html = requests.get(url=url, headers=self.headers).content.decode("utf-8")
parse_html = etree.HTML(html)
r_list = parse_html.xpath(xpath)
return r_list
def main(self):
url = self.url.format(self.tieba_name)
if __name__ == '__main__':
inout_word = input("請輸入你要查詢(xún)的信息:")
key_word = parse.quote(inout_word)
spider = BaiduImageSpider(key_word)
spider.main()
3、xpath 數據分析
3.1、chrome_Xpath 插件安裝
1) 這里使用了一個(gè)插件。它可以快速檢查我們抓取的信息是否正確。具體安裝方法如下。
2)百度下載chrome_Xpath_v2.0.2.crx,chrome瀏覽器輸入:chrome://extensions/
3) 將chrome_Xpath_v2.0.2.crx 直接拖到擴展頁(yè)面;
4) 如果安裝失敗,彈出提示“無(wú)法從這個(gè)網(wǎng)站添加應用程序、擴展和用戶(hù)腳本”。如果遇到這個(gè)問(wèn)題,解決方法是:打開(kāi)開(kāi)發(fā)者模式保存crx文件(直接或者修改后綴為rar)解壓到一個(gè)文件夾,點(diǎn)擊開(kāi)發(fā)者模式加載解壓后的擴展,選擇解壓后的文件夾,點(diǎn)擊確定,安裝成功;
3.2、chrome_Xpath 插件使用
上面的chrome_Xpath插件我們已經(jīng)安裝好了,接下來(lái)就要用到了。
1) 打開(kāi)瀏覽器,按快捷鍵F12。
2) 選擇下圖所示的元素。
3) 右擊,然后選擇“Copy XPath”,如下圖。
3.3、寫(xiě)代碼,獲取鏈接函數。
我們已經(jīng)獲得了上面鏈接函數的Xpath路徑,然后定義了一個(gè)鏈接函數get_tlink并繼承self來(lái)實(shí)現多頁(yè)面抓取。
'''獲取鏈接函數'''
def get_tlink(self, url):
xpath = '//div[@class="threadlist_lz clearfix"]/div/a/@href'
t_list = self.get_parse_page(url, xpath)
# print(len(t_list))
for t in t_list:
t_link = "http://www.tieba.com" + t
'''接下來(lái)對帖子地址發(fā)送請求 將保存到本地'''
self.write_image(t_link)
4、保存數據
這里定義了一個(gè)write_image方法來(lái)保存數據,如下圖。
'''保存到本地函數'''
def write_image(self, t_link):
xpath = "//div[@class='d_post_content j_d_post_content clearfix']/img[@class='BDE_Image']/@src | //div[@class='video_src_wrapper']/embed/@data-video"
img_list = self.get_parse_page(t_link, xpath)
for img_link in img_list:
html = requests.get(url=img_link, headers=self.headers).content
filename = "百度/"+img_link[-10:]
with open(filename, 'wb') as f:
f.write(html)
print("%s下載成功" % filename)
注:@data-video 為 URL 中的視頻,如下圖所示。
【六、效果展示】
1、點(diǎn)擊運行,如下圖(請輸入您要查詢(xún)的信息):
2、以吳京為例輸入后回車(chē):
3、將下載的圖片保存在名為“百度”的文件夾中,該文件夾需要提前在本地創(chuàng )建。記得提前在當前代碼的同級目錄下新建一個(gè)名為“百度”的文件夾,否則系統找不到文件夾,會(huì )報錯找不到文件夾“百度”。
4、 下圖中的MP4為評論區視頻。
[七、總結]
1、 不建議抓取太多數據,可能造成服務(wù)器負載,簡(jiǎn)單試一下。
2、本文基于Python網(wǎng)絡(luò )爬蟲(chóng),利用爬蟲(chóng)庫實(shí)現百度貼吧評論區爬取。對Python爬取百度貼吧的一些難點(diǎn)進(jìn)行詳細講解并提供有效的解決方案。
3、歡迎積極嘗試。有時(shí)你看到別人實(shí)施起來(lái)很容易,但自己動(dòng)手時(shí),總會(huì )出現各種問(wèn)題。不看高手,努力理解更好。深刻的。學(xué)習r(shí)equests庫的使用和爬蟲(chóng)程序的編寫(xiě)。
4、 通過(guò)這個(gè)項目,你可以更快的得到你想要的信息。
5、如需本文源碼,請后臺回復“百度貼吧”獲取。
看完這篇文章你學(xué)會(huì )了嗎?請轉發(fā)并分享給更多人
IT共享之家 查看全部
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(如何實(shí)現搜索關(guān)鍵字?(一)_e操盤(pán)_)
2、如何搜索關(guān)鍵詞?
通過(guò)URL,我們可以發(fā)現我們只需要在kw=()和括號中輸入你要搜索的內容即可。這樣,我們就可以用一個(gè) {} 來(lái)代替它,后面我們會(huì )循環(huán)遍歷它。
【五、項目實(shí)施】
1、創(chuàng )建一個(gè)名為BaiduImageSpider的類(lèi),定義一個(gè)main方法main和一個(gè)初始化方法init。導入所需的庫。
import requests
from lxml import etree
from urllib import parse
class BaiduImageSpider(object):
def __init__(self, tieba_name):
pass
def main(self):
pass
if __name__ == '__main__':
inout_word = input("請輸入你要查詢(xún)的信息:")
spider.main()
pass
if __name__ == '__main__':
spider= ImageSpider()
spider.main()
2、準備url地址和請求頭來(lái)請求數據。
import requests
from lxml import etree
from urllib import parse
class BaiduImageSpider(object):
def __init__(self, tieba_name):
self.tieba_name = tieba_name #輸入的名字
self.url = "http://tieba.baidu.com/f?kw={}&ie=utf-8&pn=0"
self.headers = {
'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3)'
}
'''發(fā)送請求 獲取響應'''
def get_parse_page(self, url, xpath):
html = requests.get(url=url, headers=self.headers).content.decode("utf-8")
parse_html = etree.HTML(html)
r_list = parse_html.xpath(xpath)
return r_list
def main(self):
url = self.url.format(self.tieba_name)
if __name__ == '__main__':
inout_word = input("請輸入你要查詢(xún)的信息:")
key_word = parse.quote(inout_word)
spider = BaiduImageSpider(key_word)
spider.main()
3、xpath 數據分析
3.1、chrome_Xpath 插件安裝
1) 這里使用了一個(gè)插件。它可以快速檢查我們抓取的信息是否正確。具體安裝方法如下。
2)百度下載chrome_Xpath_v2.0.2.crx,chrome瀏覽器輸入:chrome://extensions/
3) 將chrome_Xpath_v2.0.2.crx 直接拖到擴展頁(yè)面;
4) 如果安裝失敗,彈出提示“無(wú)法從這個(gè)網(wǎng)站添加應用程序、擴展和用戶(hù)腳本”。如果遇到這個(gè)問(wèn)題,解決方法是:打開(kāi)開(kāi)發(fā)者模式保存crx文件(直接或者修改后綴為rar)解壓到一個(gè)文件夾,點(diǎn)擊開(kāi)發(fā)者模式加載解壓后的擴展,選擇解壓后的文件夾,點(diǎn)擊確定,安裝成功;
3.2、chrome_Xpath 插件使用
上面的chrome_Xpath插件我們已經(jīng)安裝好了,接下來(lái)就要用到了。
1) 打開(kāi)瀏覽器,按快捷鍵F12。
2) 選擇下圖所示的元素。
3) 右擊,然后選擇“Copy XPath”,如下圖。

3.3、寫(xiě)代碼,獲取鏈接函數。
我們已經(jīng)獲得了上面鏈接函數的Xpath路徑,然后定義了一個(gè)鏈接函數get_tlink并繼承self來(lái)實(shí)現多頁(yè)面抓取。
'''獲取鏈接函數'''
def get_tlink(self, url):
xpath = '//div[@class="threadlist_lz clearfix"]/div/a/@href'
t_list = self.get_parse_page(url, xpath)
# print(len(t_list))
for t in t_list:
t_link = "http://www.tieba.com" + t
'''接下來(lái)對帖子地址發(fā)送請求 將保存到本地'''
self.write_image(t_link)
4、保存數據
這里定義了一個(gè)write_image方法來(lái)保存數據,如下圖。
'''保存到本地函數'''
def write_image(self, t_link):
xpath = "//div[@class='d_post_content j_d_post_content clearfix']/img[@class='BDE_Image']/@src | //div[@class='video_src_wrapper']/embed/@data-video"
img_list = self.get_parse_page(t_link, xpath)
for img_link in img_list:
html = requests.get(url=img_link, headers=self.headers).content
filename = "百度/"+img_link[-10:]
with open(filename, 'wb') as f:
f.write(html)
print("%s下載成功" % filename)
注:@data-video 為 URL 中的視頻,如下圖所示。
【六、效果展示】
1、點(diǎn)擊運行,如下圖(請輸入您要查詢(xún)的信息):
2、以吳京為例輸入后回車(chē):
3、將下載的圖片保存在名為“百度”的文件夾中,該文件夾需要提前在本地創(chuàng )建。記得提前在當前代碼的同級目錄下新建一個(gè)名為“百度”的文件夾,否則系統找不到文件夾,會(huì )報錯找不到文件夾“百度”。
4、 下圖中的MP4為評論區視頻。

[七、總結]
1、 不建議抓取太多數據,可能造成服務(wù)器負載,簡(jiǎn)單試一下。
2、本文基于Python網(wǎng)絡(luò )爬蟲(chóng),利用爬蟲(chóng)庫實(shí)現百度貼吧評論區爬取。對Python爬取百度貼吧的一些難點(diǎn)進(jìn)行詳細講解并提供有效的解決方案。
3、歡迎積極嘗試。有時(shí)你看到別人實(shí)施起來(lái)很容易,但自己動(dòng)手時(shí),總會(huì )出現各種問(wèn)題。不看高手,努力理解更好。深刻的。學(xué)習r(shí)equests庫的使用和爬蟲(chóng)程序的編寫(xiě)。
4、 通過(guò)這個(gè)項目,你可以更快的得到你想要的信息。
5、如需本文源碼,請后臺回復“百度貼吧”獲取。
看完這篇文章你學(xué)會(huì )了嗎?請轉發(fā)并分享給更多人
IT共享之家
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(如何實(shí)現搜索關(guān)鍵字?(一)_e操盤(pán)_)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 126 次瀏覽 ? 2021-10-29 15:21
2、如何搜索關(guān)鍵詞?
通過(guò)URL,我們可以發(fā)現我們只需要在kw=()和括號中輸入你要搜索的內容即可。這樣,我們就可以用一個(gè) {} 來(lái)代替它,后面我們會(huì )循環(huán)遍歷它。
【五、項目實(shí)施】
1、創(chuàng )建一個(gè)名為BaiduImageSpider的類(lèi),定義一個(gè)main方法main和一個(gè)初始化方法init。導入所需的庫。
import requests
from lxml import etree
from urllib import parse
class BaiduImageSpider(object):
def __init__(self, tieba_name):
pass
def main(self):
pass
if __name__ == '__main__':
inout_word = input("請輸入你要查詢(xún)的信息:")
spider.main()
pass
if __name__ == '__main__':
spider= ImageSpider()
spider.main()
2、準備url地址和請求頭來(lái)請求數據。
import requests
from lxml import etree
from urllib import parse
class BaiduImageSpider(object):
def __init__(self, tieba_name):
self.tieba_name = tieba_name #輸入的名字
self.url = "http://tieba.baidu.com/f?kw={}&ie=utf-8&pn=0"
self.headers = {
'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3)'
}
'''發(fā)送請求 獲取響應'''
def get_parse_page(self, url, xpath):
html = requests.get(url=url, headers=self.headers).content.decode("utf-8")
parse_html = etree.HTML(html)
r_list = parse_html.xpath(xpath)
return r_list
def main(self):
url = self.url.format(self.tieba_name)
if __name__ == '__main__':
inout_word = input("請輸入你要查詢(xún)的信息:")
key_word = parse.quote(inout_word)
spider = BaiduImageSpider(key_word)
spider.main()
3、xpath 數據分析
3.1、chrome_Xpath 插件安裝
1) 這里使用了一個(gè)插件。它可以快速檢查我們抓取的信息是否正確。具體安裝方法如下。
2)百度下載chrome_Xpath_v2.0.2.crx,chrome瀏覽器輸入:chrome://extensions/
3) 將chrome_Xpath_v2.0.2.crx 直接拖到擴展頁(yè)面;
4) 如果安裝失敗,彈窗提示“無(wú)法從這個(gè)網(wǎng)站添加應用程序、擴展和用戶(hù)腳本”。如果遇到這個(gè)問(wèn)題,解決方法是:打開(kāi)開(kāi)發(fā)者模式保存crx文件(直接或者修改后綴為rar)解壓到一個(gè)文件夾,點(diǎn)擊開(kāi)發(fā)者模式加載解壓后的擴展,選擇解壓后的文件夾,點(diǎn)擊確定,安裝成功;
3.2、chrome_Xpath 插件使用
上面的chrome_Xpath插件我們已經(jīng)安裝好了,接下來(lái)就要用到了。1) 打開(kāi)瀏覽器,按快捷鍵F12。2) 選擇下圖所示的元素。
3) 右擊,然后選擇“復制XPath”,如下圖。
3.3、寫(xiě)代碼,獲取鏈接函數。
我們已經(jīng)獲得了上面鏈接函數的Xpath路徑,然后定義了一個(gè)鏈接函數get_tlink并繼承self來(lái)實(shí)現多頁(yè)面抓取。
'''獲取鏈接函數'''
def get_tlink(self, url):
xpath = '//div[@class="threadlist_lz clearfix"]/div/a/@href'
t_list = self.get_parse_page(url, xpath)
# print(len(t_list))
for t in t_list:
t_link = "http://www.tieba.com" + t
'''接下來(lái)對帖子地址發(fā)送請求 將保存到本地'''
self.write_image(t_link)
4、保存數據
這里定義了一個(gè)write_image方法來(lái)保存數據,如下圖。
'''保存到本地函數'''
def write_image(self, t_link):
xpath = "//div[@class='d_post_content j_d_post_content clearfix']/img[@class='BDE_Image']/@src | //div[@class='video_src_wrapper']/embed/@data-video"
img_list = self.get_parse_page(t_link, xpath)
for img_link in img_list:
html = requests.get(url=img_link, headers=self.headers).content
filename = "百度/"+img_link[-10:]
with open(filename, 'wb') as f:
f.write(html)
print("%s下載成功" % filename)
注:@data-video 為 URL 中的視頻,如下圖所示。
【六、效果展示】
1、點(diǎn)擊運行,如下圖(請輸入您要查詢(xún)的信息):
2、以吳京為例輸入后回車(chē):
3、將下載的圖片保存在名為“百度”的文件夾中,該文件夾需要提前在本地創(chuàng )建。記得提前在當前代碼的同級目錄下新建一個(gè)名為“百度”的文件夾,否則系統找不到文件夾,會(huì )報錯找不到文件夾“百度”。
4、下圖中的MP4為評論區視頻。
[七、總結]
1、 不建議抓取太多數據,可能造成服務(wù)器負載,簡(jiǎn)單試一下。
2、本文基于Python網(wǎng)絡(luò )爬蟲(chóng),利用爬蟲(chóng)庫實(shí)現百度貼吧評論區爬取。對Python爬取百度貼吧的一些難點(diǎn)進(jìn)行詳細講解并提供有效的解決方案。3、歡迎積極嘗試。有時(shí)你看到別人實(shí)施起來(lái)很容易,但自己動(dòng)手時(shí),總會(huì )出現各種問(wèn)題。不要自卑,勤于理解。深刻的。學(xué)習r(shí)equests庫的使用和爬蟲(chóng)程序的編寫(xiě)。4、 通過(guò)這個(gè)項目,你可以更快的得到你想要的信息。 查看全部
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(如何實(shí)現搜索關(guān)鍵字?(一)_e操盤(pán)_)
2、如何搜索關(guān)鍵詞?
通過(guò)URL,我們可以發(fā)現我們只需要在kw=()和括號中輸入你要搜索的內容即可。這樣,我們就可以用一個(gè) {} 來(lái)代替它,后面我們會(huì )循環(huán)遍歷它。
【五、項目實(shí)施】
1、創(chuàng )建一個(gè)名為BaiduImageSpider的類(lèi),定義一個(gè)main方法main和一個(gè)初始化方法init。導入所需的庫。
import requests
from lxml import etree
from urllib import parse
class BaiduImageSpider(object):
def __init__(self, tieba_name):
pass
def main(self):
pass
if __name__ == '__main__':
inout_word = input("請輸入你要查詢(xún)的信息:")
spider.main()
pass
if __name__ == '__main__':
spider= ImageSpider()
spider.main()
2、準備url地址和請求頭來(lái)請求數據。
import requests
from lxml import etree
from urllib import parse
class BaiduImageSpider(object):
def __init__(self, tieba_name):
self.tieba_name = tieba_name #輸入的名字
self.url = "http://tieba.baidu.com/f?kw={}&ie=utf-8&pn=0"
self.headers = {
'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3)'
}
'''發(fā)送請求 獲取響應'''
def get_parse_page(self, url, xpath):
html = requests.get(url=url, headers=self.headers).content.decode("utf-8")
parse_html = etree.HTML(html)
r_list = parse_html.xpath(xpath)
return r_list
def main(self):
url = self.url.format(self.tieba_name)
if __name__ == '__main__':
inout_word = input("請輸入你要查詢(xún)的信息:")
key_word = parse.quote(inout_word)
spider = BaiduImageSpider(key_word)
spider.main()
3、xpath 數據分析
3.1、chrome_Xpath 插件安裝
1) 這里使用了一個(gè)插件。它可以快速檢查我們抓取的信息是否正確。具體安裝方法如下。
2)百度下載chrome_Xpath_v2.0.2.crx,chrome瀏覽器輸入:chrome://extensions/
3) 將chrome_Xpath_v2.0.2.crx 直接拖到擴展頁(yè)面;
4) 如果安裝失敗,彈窗提示“無(wú)法從這個(gè)網(wǎng)站添加應用程序、擴展和用戶(hù)腳本”。如果遇到這個(gè)問(wèn)題,解決方法是:打開(kāi)開(kāi)發(fā)者模式保存crx文件(直接或者修改后綴為rar)解壓到一個(gè)文件夾,點(diǎn)擊開(kāi)發(fā)者模式加載解壓后的擴展,選擇解壓后的文件夾,點(diǎn)擊確定,安裝成功;
3.2、chrome_Xpath 插件使用
上面的chrome_Xpath插件我們已經(jīng)安裝好了,接下來(lái)就要用到了。1) 打開(kāi)瀏覽器,按快捷鍵F12。2) 選擇下圖所示的元素。
3) 右擊,然后選擇“復制XPath”,如下圖。
3.3、寫(xiě)代碼,獲取鏈接函數。
我們已經(jīng)獲得了上面鏈接函數的Xpath路徑,然后定義了一個(gè)鏈接函數get_tlink并繼承self來(lái)實(shí)現多頁(yè)面抓取。
'''獲取鏈接函數'''
def get_tlink(self, url):
xpath = '//div[@class="threadlist_lz clearfix"]/div/a/@href'
t_list = self.get_parse_page(url, xpath)
# print(len(t_list))
for t in t_list:
t_link = "http://www.tieba.com" + t
'''接下來(lái)對帖子地址發(fā)送請求 將保存到本地'''
self.write_image(t_link)
4、保存數據
這里定義了一個(gè)write_image方法來(lái)保存數據,如下圖。
'''保存到本地函數'''
def write_image(self, t_link):
xpath = "//div[@class='d_post_content j_d_post_content clearfix']/img[@class='BDE_Image']/@src | //div[@class='video_src_wrapper']/embed/@data-video"
img_list = self.get_parse_page(t_link, xpath)
for img_link in img_list:
html = requests.get(url=img_link, headers=self.headers).content
filename = "百度/"+img_link[-10:]
with open(filename, 'wb') as f:
f.write(html)
print("%s下載成功" % filename)
注:@data-video 為 URL 中的視頻,如下圖所示。
【六、效果展示】
1、點(diǎn)擊運行,如下圖(請輸入您要查詢(xún)的信息):
2、以吳京為例輸入后回車(chē):
3、將下載的圖片保存在名為“百度”的文件夾中,該文件夾需要提前在本地創(chuàng )建。記得提前在當前代碼的同級目錄下新建一個(gè)名為“百度”的文件夾,否則系統找不到文件夾,會(huì )報錯找不到文件夾“百度”。
4、下圖中的MP4為評論區視頻。
[七、總結]
1、 不建議抓取太多數據,可能造成服務(wù)器負載,簡(jiǎn)單試一下。
2、本文基于Python網(wǎng)絡(luò )爬蟲(chóng),利用爬蟲(chóng)庫實(shí)現百度貼吧評論區爬取。對Python爬取百度貼吧的一些難點(diǎn)進(jìn)行詳細講解并提供有效的解決方案。3、歡迎積極嘗試。有時(shí)你看到別人實(shí)施起來(lái)很容易,但自己動(dòng)手時(shí),總會(huì )出現各種問(wèn)題。不要自卑,勤于理解。深刻的。學(xué)習r(shí)equests庫的使用和爬蟲(chóng)程序的編寫(xiě)。4、 通過(guò)這個(gè)項目,你可以更快的得到你想要的信息。
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(Python項目案例開(kāi)發(fā)從入門(mén)到實(shí)戰》(清華大學(xué)出版社鄭秋生))
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 83 次瀏覽 ? 2021-10-29 15:18
來(lái)自《Python項目案例開(kāi)發(fā)從入門(mén)到實(shí)戰》(清華大學(xué)出版社鄭秋生、夏敏毅主編)爬蟲(chóng)應用-抓取百度圖片
本文爬取了搜狗圖片庫中的圖片。與抓取特定網(wǎng)頁(yè)中的圖片相比,抓取圖片庫中的圖片相對復雜一些。復雜的主要原因在于圖片的動(dòng)態(tài)加載。
圖片庫中的圖片太多,所以在訪(fǎng)問(wèn)網(wǎng)頁(yè)時(shí),并不是一次性加載所有圖片,而是根據鼠標滾輪的行為動(dòng)態(tài)加載。這將導致與之前抓取特定網(wǎng)頁(yè)中的圖片不同。主要原因是沒(méi)有辦法通過(guò)之前查看網(wǎng)頁(yè)源代碼的方法直接獲取到存儲圖片的鏈接。相反,它需要在網(wǎng)絡(luò )中 XHR 下的標題和預覽中找到。圖片存儲網(wǎng)址的規律。
別著(zhù)急,我們稍后會(huì )詳細解釋。首先,我先貼出代碼:
1 import requests
2 import urllib
3 import json
4 import os
5 import shutil # 用來(lái)刪除文件夾
6
7
8 def getSogouImag(category, length, path):
9 # 判斷文件夾是否存在,存在則刪除
10 if os.path.exists(path):
11 shutil.rmtree(path)
12 # 創(chuàng )建文件夾
13 os.mkdir(path)
14 # 得到要爬取的圖片數量
15 n = length
16 # 返回要爬取的類(lèi)別
17 cate = category
18 # 根據搜索的網(wǎng)頁(yè)得到存儲圖片的網(wǎng)頁(yè)是這個(gè)代碼的難點(diǎn),下面會(huì )詳細講解
19 url = 'https://pic.sogou.com/pics/channel/getAllRecomPicByTag.jsp?category=' + cate + '&tag=%E5%85%A8%E9%83%A8&start=0&len=' + str(n)
20 # 訪(fǎng)問(wèn)網(wǎng)頁(yè)
21 imgs = requests.get(url)
22 # 獲取網(wǎng)頁(yè)內容
23 imgs_text = imgs.text
24 # 字符串轉換成json格式
25 imgs_json = json.loads(imgs_text)
26 # 得到圖片信息列表
27 imgs_items = imgs_json['all_items']
28 m = 0
29 # 存儲每個(gè)想要保存的圖片鏈接,為了后續
30 for i in imgs_items:
31 # thumbUrl存儲的圖片是大小為480*360的圖片網(wǎng)頁(yè)
32 img_url = i['thumbUrl']
33 print('*********' + str(m) + '.png********' + 'Downloading...')
34 print('下載的url: ', img_url)
35 # 下載圖片并且保存
36 urllib.request.urlretrieve(img_url, path+str(m) + '.jpg')
37 m = m + 1
38 print('Download complete !')
39
40
41 getSogouImag('壁紙', 5, './img/')
42
43 pass
在這里,獲取存儲圖像的URL是關(guān)鍵和難點(diǎn)。下面詳細介紹如何獲取URL。
?。?)首先打開(kāi)源碼(chrome可以點(diǎn)擊鼠標右鍵,按Inspect),這時(shí)候如果用前三章(爬蟲(chóng)系列一和系列二)抓取指定網(wǎng)頁(yè)中的圖片)正則表達式或CSS標簽過(guò)濾等方法只會(huì )返回一個(gè)搜狗圖標圖片,其他我們要下載的顯示圖片是看不到的。
?。?)如果我們要找到我們要下載的圖片,必須點(diǎn)擊Network,選擇XHR,然后我們會(huì )在Name中看到getAllRecomPicByTag.jsp?category=%E5%A3%81%E7%BA column 用鼠標加載圖片越多,這個(gè)getAllRecomPicByTag的內容就會(huì )出現越多,點(diǎn)擊它,可以看到存儲圖片地址的API出現了。
在這里,您可以單擊預覽并觀(guān)察此 json 數組。一層一層打開(kāi)all_items,可以看到里面存放了圖片的地址。如果您明白這是我們可以找到圖片鏈接的地方,那么我們就可以確定我們想要的圖片鏈接您找到的圖片鏈接在 Headers 中。
?。?)點(diǎn)擊Headers可以找到對應的url鏈接。
請求 URL 鏈接如下所示:
%E5%A3%81%E7%BA%B8&tag=%E5%85%A8%E9%83%A8&start=0&len=15&width=1920&height=1080
我們猜測這應該是搜狗圖片存放圖片鏈接的URL,我們來(lái)解析一下。先看category和tag后面的字符串,應該是字符的編碼。檢查%E5%A3%81%E7%BA%B8是“壁紙”的編碼,%E5%85%A8%E9%83%是“全部”編碼,所以上面的鏈接和下面的鏈接是相等的:
壁紙&tag=all&start=0&len=15&width=1920&height=1080
網(wǎng)頁(yè)打開(kāi)如下圖所示:
另外,start是起始下標,len是長(cháng)度,也就是圖片張數,所以我們可以通過(guò)這個(gè)信息給url傳入參數,讓搜索更加靈活,如下圖:
url ='' + cate +'&tag=%E5%85%A8%E9%83%A8&start=0&len=' + str(n)
其中,cate和n是可以自定義的變量,分別代表要搜索的類(lèi)別和要爬取的圖片數量。
以上就是使用python動(dòng)態(tài)抓取圖片庫中圖片的詳細講解,希望可以幫助大家理解。 查看全部
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(Python項目案例開(kāi)發(fā)從入門(mén)到實(shí)戰》(清華大學(xué)出版社鄭秋生))
來(lái)自《Python項目案例開(kāi)發(fā)從入門(mén)到實(shí)戰》(清華大學(xué)出版社鄭秋生、夏敏毅主編)爬蟲(chóng)應用-抓取百度圖片
本文爬取了搜狗圖片庫中的圖片。與抓取特定網(wǎng)頁(yè)中的圖片相比,抓取圖片庫中的圖片相對復雜一些。復雜的主要原因在于圖片的動(dòng)態(tài)加載。
圖片庫中的圖片太多,所以在訪(fǎng)問(wèn)網(wǎng)頁(yè)時(shí),并不是一次性加載所有圖片,而是根據鼠標滾輪的行為動(dòng)態(tài)加載。這將導致與之前抓取特定網(wǎng)頁(yè)中的圖片不同。主要原因是沒(méi)有辦法通過(guò)之前查看網(wǎng)頁(yè)源代碼的方法直接獲取到存儲圖片的鏈接。相反,它需要在網(wǎng)絡(luò )中 XHR 下的標題和預覽中找到。圖片存儲網(wǎng)址的規律。
別著(zhù)急,我們稍后會(huì )詳細解釋。首先,我先貼出代碼:
1 import requests
2 import urllib
3 import json
4 import os
5 import shutil # 用來(lái)刪除文件夾
6
7
8 def getSogouImag(category, length, path):
9 # 判斷文件夾是否存在,存在則刪除
10 if os.path.exists(path):
11 shutil.rmtree(path)
12 # 創(chuàng )建文件夾
13 os.mkdir(path)
14 # 得到要爬取的圖片數量
15 n = length
16 # 返回要爬取的類(lèi)別
17 cate = category
18 # 根據搜索的網(wǎng)頁(yè)得到存儲圖片的網(wǎng)頁(yè)是這個(gè)代碼的難點(diǎn),下面會(huì )詳細講解
19 url = 'https://pic.sogou.com/pics/channel/getAllRecomPicByTag.jsp?category=' + cate + '&tag=%E5%85%A8%E9%83%A8&start=0&len=' + str(n)
20 # 訪(fǎng)問(wèn)網(wǎng)頁(yè)
21 imgs = requests.get(url)
22 # 獲取網(wǎng)頁(yè)內容
23 imgs_text = imgs.text
24 # 字符串轉換成json格式
25 imgs_json = json.loads(imgs_text)
26 # 得到圖片信息列表
27 imgs_items = imgs_json['all_items']
28 m = 0
29 # 存儲每個(gè)想要保存的圖片鏈接,為了后續
30 for i in imgs_items:
31 # thumbUrl存儲的圖片是大小為480*360的圖片網(wǎng)頁(yè)
32 img_url = i['thumbUrl']
33 print('*********' + str(m) + '.png********' + 'Downloading...')
34 print('下載的url: ', img_url)
35 # 下載圖片并且保存
36 urllib.request.urlretrieve(img_url, path+str(m) + '.jpg')
37 m = m + 1
38 print('Download complete !')
39
40
41 getSogouImag('壁紙', 5, './img/')
42
43 pass
在這里,獲取存儲圖像的URL是關(guān)鍵和難點(diǎn)。下面詳細介紹如何獲取URL。
?。?)首先打開(kāi)源碼(chrome可以點(diǎn)擊鼠標右鍵,按Inspect),這時(shí)候如果用前三章(爬蟲(chóng)系列一和系列二)抓取指定網(wǎng)頁(yè)中的圖片)正則表達式或CSS標簽過(guò)濾等方法只會(huì )返回一個(gè)搜狗圖標圖片,其他我們要下載的顯示圖片是看不到的。
?。?)如果我們要找到我們要下載的圖片,必須點(diǎn)擊Network,選擇XHR,然后我們會(huì )在Name中看到getAllRecomPicByTag.jsp?category=%E5%A3%81%E7%BA column 用鼠標加載圖片越多,這個(gè)getAllRecomPicByTag的內容就會(huì )出現越多,點(diǎn)擊它,可以看到存儲圖片地址的API出現了。
在這里,您可以單擊預覽并觀(guān)察此 json 數組。一層一層打開(kāi)all_items,可以看到里面存放了圖片的地址。如果您明白這是我們可以找到圖片鏈接的地方,那么我們就可以確定我們想要的圖片鏈接您找到的圖片鏈接在 Headers 中。

?。?)點(diǎn)擊Headers可以找到對應的url鏈接。

請求 URL 鏈接如下所示:
%E5%A3%81%E7%BA%B8&tag=%E5%85%A8%E9%83%A8&start=0&len=15&width=1920&height=1080
我們猜測這應該是搜狗圖片存放圖片鏈接的URL,我們來(lái)解析一下。先看category和tag后面的字符串,應該是字符的編碼。檢查%E5%A3%81%E7%BA%B8是“壁紙”的編碼,%E5%85%A8%E9%83%是“全部”編碼,所以上面的鏈接和下面的鏈接是相等的:
壁紙&tag=all&start=0&len=15&width=1920&height=1080
網(wǎng)頁(yè)打開(kāi)如下圖所示:

另外,start是起始下標,len是長(cháng)度,也就是圖片張數,所以我們可以通過(guò)這個(gè)信息給url傳入參數,讓搜索更加靈活,如下圖:
url ='' + cate +'&tag=%E5%85%A8%E9%83%A8&start=0&len=' + str(n)
其中,cate和n是可以自定義的變量,分別代表要搜索的類(lèi)別和要爬取的圖片數量。
以上就是使用python動(dòng)態(tài)抓取圖片庫中圖片的詳細講解,希望可以幫助大家理解。
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(如何實(shí)現搜索關(guān)鍵字?(一)_e操盤(pán)_)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 78 次瀏覽 ? 2021-10-29 13:07
2、如何搜索關(guān)鍵詞?
通過(guò)URL,我們可以發(fā)現我們只需要在kw=()和括號中輸入你要搜索的內容即可。這樣,我們就可以用一個(gè) {} 來(lái)代替它,后面我們會(huì )循環(huán)遍歷它。
【五、項目實(shí)施】
1、創(chuàng )建一個(gè)名為BaiduImageSpider的類(lèi),定義一個(gè)main方法main和一個(gè)初始化方法init。導入所需的庫。
import requests
from lxml import etree
from urllib import parse
class BaiduImageSpider(object):
? ?def __init__(self, tieba_name):
? ? ? ?pass
? ?def main(self):
? ? ? ?pass
if __name__ == '__main__':
? ?inout_word = input("請輸入你要查詢(xún)的信息:")
? ?spider.main()
? ? ? ?pass
if __name__ == '__main__':
? ?spider= ImageSpider()
? ?spider.main()
2、準備url地址和請求頭來(lái)請求數據。
import requests
from lxml import etree
from urllib import parse
class BaiduImageSpider(object):
? ?def __init__(self, tieba_name):
? ? ? ? ?self.tieba_name = tieba_name #輸入的名字
? ? ? ?self.url = "http://tieba.baidu.com/f?kw={}&ie=utf-8&pn=0"
? ? ? ?self.headers = {
? ? ? ? ? ?'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3)'
? ? ? ?}
? ?'''發(fā)送請求 獲取響應'''
? ?def get_parse_page(self, url, xpath):
? ? ? ?html = requests.get(url=url, headers=self.headers).content.decode("utf-8")
? ? ? ?parse_html = etree.HTML(html)
? ? ? ?r_list = parse_html.xpath(xpath)
? ? ? ?return r_list
? ?def main(self):
? ? ? ?url = self.url.format(self.tieba_name)
if __name__ == '__main__':
? ?inout_word = input("請輸入你要查詢(xún)的信息:")
? ?key_word = parse.quote(inout_word)
? ?spider = BaiduImageSpider(key_word)
? ?spider.main()
3、xpath 數據分析
3.1、chrome_Xpath 插件安裝
1) 這里使用了一個(gè)插件。它可以快速檢查我們抓取的信息是否正確。具體安裝方法如下。
2)百度下載chrome_Xpath_v2.0.2.crx,chrome瀏覽器輸入:chrome://extensions/
3) 將chrome_Xpath_v2.0.2.crx 直接拖到擴展頁(yè)面;
4) 如果安裝失敗,彈出提示“無(wú)法從這個(gè)網(wǎng)站添加應用程序、擴展和用戶(hù)腳本”。如果遇到這個(gè)問(wèn)題,解決方法是:打開(kāi)開(kāi)發(fā)者模式保存crx文件(直接或者修改后綴為rar)解壓到一個(gè)文件夾,點(diǎn)擊開(kāi)發(fā)者模式加載解壓后的擴展,選擇解壓后的文件夾,點(diǎn)擊確定,安裝成功;
3.2、chrome_Xpath 插件使用
上面的chrome_Xpath插件我們已經(jīng)安裝好了,接下來(lái)就要用到了。1) 打開(kāi)瀏覽器,按快捷鍵F12。2) 選擇下圖所示的元素。
3) 右擊,然后選擇“Copy XPath”,如下圖。
3.3、寫(xiě)代碼,獲取鏈接函數。
我們已經(jīng)獲得了上面鏈接函數的Xpath路徑,然后定義了一個(gè)鏈接函數get_tlink并繼承self來(lái)實(shí)現多頁(yè)面抓取。
'''獲取鏈接函數'''
? ?def get_tlink(self, url):
? ? ? ?xpath = '//div[@class="threadlist_lz clearfix"]/div/a/@href'
? ? ? ?t_list = self.get_parse_page(url, xpath)
? ? ? ?# print(len(t_list))
? ? ? ?for t in t_list:
? ? ? ? ? ?t_link = "http://www.tieba.com" + t
? ? ? ? ? ?'''接下來(lái)對帖子地址發(fā)送請求 ?將保存到本地'''
? ? ? ? ? ?self.write_image(t_link)
4、保存數據
這里定義了一個(gè)write_image方法來(lái)保存數據,如下圖。
'''保存到本地函數'''
def write_image(self, t_link):
? ? ?xpath = "//div[@class='d_post_content j_d_post_content clearfix']/img[@class='BDE_Image']/@src | //div[@class='video_src_wrapper']/embed/@data-video"
? ? ? ?img_list = self.get_parse_page(t_link, xpath) ? ? ?
? ? ? ?for img_link in img_list: ?
? ? ? ? ? ?html = requests.get(url=img_link, headers=self.headers).content
? ? ? ? ? ?filename = "百度/"+img_link[-10:]
? ? ? ?
? ? ? ? ? ?with open(filename, 'wb') as f:
? ? ? ? ? ? ? ?f.write(html)
? ? ? ? ? ? ? ?print("%s下載成功" % filename)
如下所示:
【六、效果展示】
1、點(diǎn)擊運行,如下圖(請輸入您要查詢(xún)的信息):
2、以吳京為例輸入后回車(chē):
3、將下載的圖片保存在名為“百度”的文件夾中,該文件夾需要提前在本地創(chuàng )建。記得提前在當前代碼的同級目錄下新建一個(gè)名為“百度”的文件夾,否則系統找不到文件夾,會(huì )報錯找不到文件夾“百度”。
4、 下圖中的MP4為評論區視頻。
總結:
1、 不建議抓取太多數據,可能造成服務(wù)器負載,簡(jiǎn)單試一下。
2、本文基于Python網(wǎng)絡(luò )爬蟲(chóng),利用爬蟲(chóng)庫實(shí)現百度貼吧評論區爬取。對Python爬取百度貼吧的一些難點(diǎn)進(jìn)行詳細講解并提供有效的解決方案。3、歡迎積極嘗試。有時(shí)你看到別人實(shí)施起來(lái)很容易,但自己動(dòng)手時(shí),總會(huì )出現各種問(wèn)題。不要自卑,勤于理解。深刻的。學(xué)習r(shí)equests庫的使用和爬蟲(chóng)程序的編寫(xiě)。
關(guān)于如何使用Python網(wǎng)絡(luò )爬蟲(chóng)抓取百度貼吧評論區的圖片和視頻的問(wèn)題解答分享到這里。希望以上內容對大家有所幫助。如果您還有很多疑問(wèn),可以關(guān)注一宿云行業(yè)資訊頻道,了解更多相關(guān)知識。 查看全部
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(如何實(shí)現搜索關(guān)鍵字?(一)_e操盤(pán)_)
2、如何搜索關(guān)鍵詞?
通過(guò)URL,我們可以發(fā)現我們只需要在kw=()和括號中輸入你要搜索的內容即可。這樣,我們就可以用一個(gè) {} 來(lái)代替它,后面我們會(huì )循環(huán)遍歷它。
【五、項目實(shí)施】
1、創(chuàng )建一個(gè)名為BaiduImageSpider的類(lèi),定義一個(gè)main方法main和一個(gè)初始化方法init。導入所需的庫。
import requests
from lxml import etree
from urllib import parse
class BaiduImageSpider(object):
? ?def __init__(self, tieba_name):
? ? ? ?pass
? ?def main(self):
? ? ? ?pass
if __name__ == '__main__':
? ?inout_word = input("請輸入你要查詢(xún)的信息:")
? ?spider.main()
? ? ? ?pass
if __name__ == '__main__':
? ?spider= ImageSpider()
? ?spider.main()
2、準備url地址和請求頭來(lái)請求數據。
import requests
from lxml import etree
from urllib import parse
class BaiduImageSpider(object):
? ?def __init__(self, tieba_name):
? ? ? ? ?self.tieba_name = tieba_name #輸入的名字
? ? ? ?self.url = "http://tieba.baidu.com/f?kw={}&ie=utf-8&pn=0"
? ? ? ?self.headers = {
? ? ? ? ? ?'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3)'
? ? ? ?}
? ?'''發(fā)送請求 獲取響應'''
? ?def get_parse_page(self, url, xpath):
? ? ? ?html = requests.get(url=url, headers=self.headers).content.decode("utf-8")
? ? ? ?parse_html = etree.HTML(html)
? ? ? ?r_list = parse_html.xpath(xpath)
? ? ? ?return r_list
? ?def main(self):
? ? ? ?url = self.url.format(self.tieba_name)
if __name__ == '__main__':
? ?inout_word = input("請輸入你要查詢(xún)的信息:")
? ?key_word = parse.quote(inout_word)
? ?spider = BaiduImageSpider(key_word)
? ?spider.main()
3、xpath 數據分析
3.1、chrome_Xpath 插件安裝
1) 這里使用了一個(gè)插件。它可以快速檢查我們抓取的信息是否正確。具體安裝方法如下。
2)百度下載chrome_Xpath_v2.0.2.crx,chrome瀏覽器輸入:chrome://extensions/

3) 將chrome_Xpath_v2.0.2.crx 直接拖到擴展頁(yè)面;
4) 如果安裝失敗,彈出提示“無(wú)法從這個(gè)網(wǎng)站添加應用程序、擴展和用戶(hù)腳本”。如果遇到這個(gè)問(wèn)題,解決方法是:打開(kāi)開(kāi)發(fā)者模式保存crx文件(直接或者修改后綴為rar)解壓到一個(gè)文件夾,點(diǎn)擊開(kāi)發(fā)者模式加載解壓后的擴展,選擇解壓后的文件夾,點(diǎn)擊確定,安裝成功;
3.2、chrome_Xpath 插件使用
上面的chrome_Xpath插件我們已經(jīng)安裝好了,接下來(lái)就要用到了。1) 打開(kāi)瀏覽器,按快捷鍵F12。2) 選擇下圖所示的元素。

3) 右擊,然后選擇“Copy XPath”,如下圖。

3.3、寫(xiě)代碼,獲取鏈接函數。
我們已經(jīng)獲得了上面鏈接函數的Xpath路徑,然后定義了一個(gè)鏈接函數get_tlink并繼承self來(lái)實(shí)現多頁(yè)面抓取。
'''獲取鏈接函數'''
? ?def get_tlink(self, url):
? ? ? ?xpath = '//div[@class="threadlist_lz clearfix"]/div/a/@href'
? ? ? ?t_list = self.get_parse_page(url, xpath)
? ? ? ?# print(len(t_list))
? ? ? ?for t in t_list:
? ? ? ? ? ?t_link = "http://www.tieba.com" + t
? ? ? ? ? ?'''接下來(lái)對帖子地址發(fā)送請求 ?將保存到本地'''
? ? ? ? ? ?self.write_image(t_link)
4、保存數據
這里定義了一個(gè)write_image方法來(lái)保存數據,如下圖。
'''保存到本地函數'''
def write_image(self, t_link):
? ? ?xpath = "//div[@class='d_post_content j_d_post_content clearfix']/img[@class='BDE_Image']/@src | //div[@class='video_src_wrapper']/embed/@data-video"
? ? ? ?img_list = self.get_parse_page(t_link, xpath) ? ? ?
? ? ? ?for img_link in img_list: ?
? ? ? ? ? ?html = requests.get(url=img_link, headers=self.headers).content
? ? ? ? ? ?filename = "百度/"+img_link[-10:]
? ? ? ?
? ? ? ? ? ?with open(filename, 'wb') as f:
? ? ? ? ? ? ? ?f.write(html)
? ? ? ? ? ? ? ?print("%s下載成功" % filename)
如下所示:

【六、效果展示】
1、點(diǎn)擊運行,如下圖(請輸入您要查詢(xún)的信息):

2、以吳京為例輸入后回車(chē):

3、將下載的圖片保存在名為“百度”的文件夾中,該文件夾需要提前在本地創(chuàng )建。記得提前在當前代碼的同級目錄下新建一個(gè)名為“百度”的文件夾,否則系統找不到文件夾,會(huì )報錯找不到文件夾“百度”。

4、 下圖中的MP4為評論區視頻。

總結:
1、 不建議抓取太多數據,可能造成服務(wù)器負載,簡(jiǎn)單試一下。
2、本文基于Python網(wǎng)絡(luò )爬蟲(chóng),利用爬蟲(chóng)庫實(shí)現百度貼吧評論區爬取。對Python爬取百度貼吧的一些難點(diǎn)進(jìn)行詳細講解并提供有效的解決方案。3、歡迎積極嘗試。有時(shí)你看到別人實(shí)施起來(lái)很容易,但自己動(dòng)手時(shí),總會(huì )出現各種問(wèn)題。不要自卑,勤于理解。深刻的。學(xué)習r(shí)equests庫的使用和爬蟲(chóng)程序的編寫(xiě)。
關(guān)于如何使用Python網(wǎng)絡(luò )爬蟲(chóng)抓取百度貼吧評論區的圖片和視頻的問(wèn)題解答分享到這里。希望以上內容對大家有所幫助。如果您還有很多疑問(wèn),可以關(guān)注一宿云行業(yè)資訊頻道,了解更多相關(guān)知識。
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(什么叫網(wǎng)絡(luò )爬蟲(chóng),也稱(chēng)之為抓取和網(wǎng)頁(yè)數據獲取(圖))
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 86 次瀏覽 ? 2021-10-27 09:11
什么是網(wǎng)絡(luò )爬蟲(chóng)?
國外的網(wǎng)絡(luò )爬蟲(chóng)也叫網(wǎng)頁(yè)抓取和網(wǎng)頁(yè)數據采集。它們大多是指根據HTML文件傳輸協(xié)議(HTTP)或根據網(wǎng)絡(luò )計算機瀏覽器獲取可在互聯(lián)網(wǎng)上使用的數據。
網(wǎng)絡(luò )數據抓取如何工作?
一般在獲取網(wǎng)頁(yè)數據時(shí)只需要兩個(gè)過(guò)程。
打開(kāi)網(wǎng)頁(yè) → 從網(wǎng)頁(yè)復制實(shí)際數據并將其導出到報告或數據庫文件。
關(guān)于國外的網(wǎng)絡(luò )爬蟲(chóng),這一切是如何開(kāi)始的?
雖然對很多人來(lái)說(shuō),網(wǎng)絡(luò )爬蟲(chóng)聽(tīng)起來(lái)像是“大數據”或“深度學(xué)習”等新概念,但實(shí)際上網(wǎng)絡(luò )數據爬蟲(chóng)的歷史時(shí)間似乎很長(cháng),這可以追溯到seo專(zhuān)業(yè)培訓。金手指專(zhuān)長(cháng)四:當專(zhuān)網(wǎng)(或流行的“互聯(lián)網(wǎng)技術(shù)”)出現時(shí)。
一開(kāi)始,互聯(lián)網(wǎng)技術(shù)還沒(méi)有被搜索到。在百度搜索引擎開(kāi)發(fā)和設計之前,互聯(lián)網(wǎng)技術(shù)只是文件傳輸協(xié)議(FTP)網(wǎng)站的組合,客戶(hù)可以通過(guò)這個(gè)網(wǎng)站導航找到特殊的共享文檔。
為了搜索和seo專(zhuān)業(yè)培訓。百金手指專(zhuān)業(yè)4:為了形成可用于互聯(lián)網(wǎng)技術(shù)的分布式系統數據,我們建立了一個(gè)自動(dòng)化的技術(shù)程序流程,稱(chēng)為網(wǎng)絡(luò )爬蟲(chóng)/智能機器人,它可以抓取所有的互聯(lián)網(wǎng)技術(shù)網(wǎng)頁(yè),然后復制將所有網(wǎng)頁(yè)上的內容寫(xiě)入數據庫文件,以制作數據庫索引。
然后,隨著(zhù)互聯(lián)網(wǎng)的發(fā)展,數以千萬(wàn)計的網(wǎng)頁(yè)最終以多種不同的方式轉化為這樣的收錄數據的網(wǎng)頁(yè),包括文本、圖像、視頻和音頻?;ヂ?lián)網(wǎng)技術(shù)已經(jīng)成為一個(gè)開(kāi)放的數據源。
隨著(zhù)數據資源越來(lái)越豐富,檢索也越來(lái)越容易,大家發(fā)現從網(wǎng)頁(yè)中找到自己想要的信息內容是一件比較簡(jiǎn)單的事情,而且一般分散在很多網(wǎng)站上。但是出現了另一個(gè)問(wèn)題。當他們需要數據時(shí),并非每個(gè) URL 都顯示免費下載按鈕。進(jìn)行手動(dòng)復制顯然是非常低效和枯燥的。
這就是網(wǎng)絡(luò )爬蟲(chóng)出現的原因。網(wǎng)絡(luò )爬蟲(chóng)實(shí)際上是由網(wǎng)絡(luò )智能機器人/網(wǎng)絡(luò )爬蟲(chóng)驅動(dòng),其功能與百度搜索引擎相同。簡(jiǎn)單地說(shuō),就是抓取和復制。唯一的區別可能是運營(yíng)規模。網(wǎng)頁(yè)數據爬取就是從特殊的網(wǎng)址中獲取特殊的數據,百度搜索引擎一般檢索到互聯(lián)網(wǎng)上的大部分網(wǎng)址。
時(shí)間線(xiàn)
國外網(wǎng)絡(luò )爬蟲(chóng)的發(fā)展,1989年互聯(lián)網(wǎng)的出現
從技術(shù)上講,互聯(lián)網(wǎng)和互聯(lián)網(wǎng)是不同的。前者指的是信息空間,后者指的是多臺電子計算機的相互seo專(zhuān)業(yè)培訓。白金手指專(zhuān)業(yè)版4:連接內部網(wǎng)絡(luò )。
感謝互聯(lián)網(wǎng)的發(fā)明者 Tim Berners-Lee。他創(chuàng )造和發(fā)明的三件物品成為每個(gè)人日常生活的一部分。
統一資源定位器(url),可以根據它瀏覽自己喜歡的網(wǎng)址;內嵌的網(wǎng)頁(yè)鏈接讓我們可以在頁(yè)面中間進(jìn)行導航,比如產(chǎn)品詳情頁(yè)面,我們可以在寶貝詳情中找到產(chǎn)品型號等很多信息內容,比如“購買(mǎi)該產(chǎn)品的消費者也購買(mǎi)了某個(gè)產(chǎn)品"; 網(wǎng)頁(yè)不僅包括文字,還包括圖像、音頻、視頻和手機軟件組件。
1991年第一個(gè)互聯(lián)網(wǎng)電腦瀏覽器
它也是由 Tim Berners-Lee 創(chuàng )建和發(fā)明的,稱(chēng)為 WorldWide(無(wú)室內空間),以新的 WWW 項目命名?;ヂ?lián)網(wǎng)出現一年后,每個(gè)人都有辦法訪(fǎng)問(wèn)它并與之互動(dòng)。
1992 年第一個(gè) Web 服務(wù)器和第一個(gè)網(wǎng)頁(yè)
網(wǎng)頁(yè)總數略有增加。到 1996 年,HTTP Web 服務(wù)器總數超過(guò) 200。
1993年6月,第一臺基于網(wǎng)絡(luò )的智能機器人——互聯(lián)網(wǎng)數據機器人
雖然它的功能和今天的網(wǎng)頁(yè)智能機器人一樣,但只是用來(lái)精確測量網(wǎng)頁(yè)的大小。
1993年11月,第一個(gè)基于網(wǎng)絡(luò )爬蟲(chóng)的互聯(lián)網(wǎng)百度搜索引擎——JumpStation
由于當時(shí)互聯(lián)網(wǎng)上的網(wǎng)址并不多,百度搜索引擎過(guò)去常常依靠人工服務(wù)系統管理員來(lái)采集和編譯鏈接,將它們變成一種特殊的文件格式。
JumpStation 制作了一個(gè)新的飛越。它是第一個(gè)借助網(wǎng)絡(luò )智能機器人的WWW百度搜索引擎。
從那時(shí)起,大家才剛剛開(kāi)始使用這個(gè)程序化交易網(wǎng)絡(luò )爬蟲(chóng)程序來(lái)采集和整理互聯(lián)網(wǎng)技術(shù)。從Infoseek、Altavista和Excite,到今天的bing搜索和谷歌,百度搜索引擎智能機器人的關(guān)鍵是不變的:
找到一個(gè)網(wǎng)頁(yè)頁(yè)面,免費下載(獲?。?,抓取該網(wǎng)頁(yè)頁(yè)面顯示信息的所有信息內容,然后添加到百度搜索引擎的數據庫文件中。
因為網(wǎng)頁(yè)是為人和客戶(hù)設計的,不是為自動(dòng)化技術(shù)的應用而設計的,即使開(kāi)發(fā)設計了網(wǎng)頁(yè)智能機器人,電子計算機技術(shù)工程師和生物學(xué)家也很難進(jìn)行網(wǎng)頁(yè)數據采集,更別說(shuō)普通人了. 因此,大家一直在致力于讓網(wǎng)絡(luò )爬蟲(chóng)越來(lái)越容易應用。
2001年的Web API和API Web Crawler
API 指示代碼編程套接字的使用。它是一個(gè)socket,根據內置的控制模塊使開(kāi)發(fā)設計程序流程更加方便快捷。
2001 年,Salesforce 和 eBay 發(fā)布了自己的 API,程序員可以使用它免費瀏覽和下載一些已發(fā)布的數據。
從那時(shí)起,許多網(wǎng)站都提供了 Web API,以便每個(gè)人都可以瀏覽他們的公共數據庫。 查看全部
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(什么叫網(wǎng)絡(luò )爬蟲(chóng),也稱(chēng)之為抓取和網(wǎng)頁(yè)數據獲取(圖))
什么是網(wǎng)絡(luò )爬蟲(chóng)?
國外的網(wǎng)絡(luò )爬蟲(chóng)也叫網(wǎng)頁(yè)抓取和網(wǎng)頁(yè)數據采集。它們大多是指根據HTML文件傳輸協(xié)議(HTTP)或根據網(wǎng)絡(luò )計算機瀏覽器獲取可在互聯(lián)網(wǎng)上使用的數據。
網(wǎng)絡(luò )數據抓取如何工作?
一般在獲取網(wǎng)頁(yè)數據時(shí)只需要兩個(gè)過(guò)程。
打開(kāi)網(wǎng)頁(yè) → 從網(wǎng)頁(yè)復制實(shí)際數據并將其導出到報告或數據庫文件。

關(guān)于國外的網(wǎng)絡(luò )爬蟲(chóng),這一切是如何開(kāi)始的?
雖然對很多人來(lái)說(shuō),網(wǎng)絡(luò )爬蟲(chóng)聽(tīng)起來(lái)像是“大數據”或“深度學(xué)習”等新概念,但實(shí)際上網(wǎng)絡(luò )數據爬蟲(chóng)的歷史時(shí)間似乎很長(cháng),這可以追溯到seo專(zhuān)業(yè)培訓。金手指專(zhuān)長(cháng)四:當專(zhuān)網(wǎng)(或流行的“互聯(lián)網(wǎng)技術(shù)”)出現時(shí)。
一開(kāi)始,互聯(lián)網(wǎng)技術(shù)還沒(méi)有被搜索到。在百度搜索引擎開(kāi)發(fā)和設計之前,互聯(lián)網(wǎng)技術(shù)只是文件傳輸協(xié)議(FTP)網(wǎng)站的組合,客戶(hù)可以通過(guò)這個(gè)網(wǎng)站導航找到特殊的共享文檔。
為了搜索和seo專(zhuān)業(yè)培訓。百金手指專(zhuān)業(yè)4:為了形成可用于互聯(lián)網(wǎng)技術(shù)的分布式系統數據,我們建立了一個(gè)自動(dòng)化的技術(shù)程序流程,稱(chēng)為網(wǎng)絡(luò )爬蟲(chóng)/智能機器人,它可以抓取所有的互聯(lián)網(wǎng)技術(shù)網(wǎng)頁(yè),然后復制將所有網(wǎng)頁(yè)上的內容寫(xiě)入數據庫文件,以制作數據庫索引。

然后,隨著(zhù)互聯(lián)網(wǎng)的發(fā)展,數以千萬(wàn)計的網(wǎng)頁(yè)最終以多種不同的方式轉化為這樣的收錄數據的網(wǎng)頁(yè),包括文本、圖像、視頻和音頻?;ヂ?lián)網(wǎng)技術(shù)已經(jīng)成為一個(gè)開(kāi)放的數據源。
隨著(zhù)數據資源越來(lái)越豐富,檢索也越來(lái)越容易,大家發(fā)現從網(wǎng)頁(yè)中找到自己想要的信息內容是一件比較簡(jiǎn)單的事情,而且一般分散在很多網(wǎng)站上。但是出現了另一個(gè)問(wèn)題。當他們需要數據時(shí),并非每個(gè) URL 都顯示免費下載按鈕。進(jìn)行手動(dòng)復制顯然是非常低效和枯燥的。

這就是網(wǎng)絡(luò )爬蟲(chóng)出現的原因。網(wǎng)絡(luò )爬蟲(chóng)實(shí)際上是由網(wǎng)絡(luò )智能機器人/網(wǎng)絡(luò )爬蟲(chóng)驅動(dòng),其功能與百度搜索引擎相同。簡(jiǎn)單地說(shuō),就是抓取和復制。唯一的區別可能是運營(yíng)規模。網(wǎng)頁(yè)數據爬取就是從特殊的網(wǎng)址中獲取特殊的數據,百度搜索引擎一般檢索到互聯(lián)網(wǎng)上的大部分網(wǎng)址。
時(shí)間線(xiàn)
國外網(wǎng)絡(luò )爬蟲(chóng)的發(fā)展,1989年互聯(lián)網(wǎng)的出現

從技術(shù)上講,互聯(lián)網(wǎng)和互聯(lián)網(wǎng)是不同的。前者指的是信息空間,后者指的是多臺電子計算機的相互seo專(zhuān)業(yè)培訓。白金手指專(zhuān)業(yè)版4:連接內部網(wǎng)絡(luò )。
感謝互聯(lián)網(wǎng)的發(fā)明者 Tim Berners-Lee。他創(chuàng )造和發(fā)明的三件物品成為每個(gè)人日常生活的一部分。
統一資源定位器(url),可以根據它瀏覽自己喜歡的網(wǎng)址;內嵌的網(wǎng)頁(yè)鏈接讓我們可以在頁(yè)面中間進(jìn)行導航,比如產(chǎn)品詳情頁(yè)面,我們可以在寶貝詳情中找到產(chǎn)品型號等很多信息內容,比如“購買(mǎi)該產(chǎn)品的消費者也購買(mǎi)了某個(gè)產(chǎn)品"; 網(wǎng)頁(yè)不僅包括文字,還包括圖像、音頻、視頻和手機軟件組件。
1991年第一個(gè)互聯(lián)網(wǎng)電腦瀏覽器
它也是由 Tim Berners-Lee 創(chuàng )建和發(fā)明的,稱(chēng)為 WorldWide(無(wú)室內空間),以新的 WWW 項目命名?;ヂ?lián)網(wǎng)出現一年后,每個(gè)人都有辦法訪(fǎng)問(wèn)它并與之互動(dòng)。
1992 年第一個(gè) Web 服務(wù)器和第一個(gè)網(wǎng)頁(yè)
網(wǎng)頁(yè)總數略有增加。到 1996 年,HTTP Web 服務(wù)器總數超過(guò) 200。
1993年6月,第一臺基于網(wǎng)絡(luò )的智能機器人——互聯(lián)網(wǎng)數據機器人
雖然它的功能和今天的網(wǎng)頁(yè)智能機器人一樣,但只是用來(lái)精確測量網(wǎng)頁(yè)的大小。
1993年11月,第一個(gè)基于網(wǎng)絡(luò )爬蟲(chóng)的互聯(lián)網(wǎng)百度搜索引擎——JumpStation

由于當時(shí)互聯(lián)網(wǎng)上的網(wǎng)址并不多,百度搜索引擎過(guò)去常常依靠人工服務(wù)系統管理員來(lái)采集和編譯鏈接,將它們變成一種特殊的文件格式。
JumpStation 制作了一個(gè)新的飛越。它是第一個(gè)借助網(wǎng)絡(luò )智能機器人的WWW百度搜索引擎。
從那時(shí)起,大家才剛剛開(kāi)始使用這個(gè)程序化交易網(wǎng)絡(luò )爬蟲(chóng)程序來(lái)采集和整理互聯(lián)網(wǎng)技術(shù)。從Infoseek、Altavista和Excite,到今天的bing搜索和谷歌,百度搜索引擎智能機器人的關(guān)鍵是不變的:
找到一個(gè)網(wǎng)頁(yè)頁(yè)面,免費下載(獲?。?,抓取該網(wǎng)頁(yè)頁(yè)面顯示信息的所有信息內容,然后添加到百度搜索引擎的數據庫文件中。
因為網(wǎng)頁(yè)是為人和客戶(hù)設計的,不是為自動(dòng)化技術(shù)的應用而設計的,即使開(kāi)發(fā)設計了網(wǎng)頁(yè)智能機器人,電子計算機技術(shù)工程師和生物學(xué)家也很難進(jìn)行網(wǎng)頁(yè)數據采集,更別說(shuō)普通人了. 因此,大家一直在致力于讓網(wǎng)絡(luò )爬蟲(chóng)越來(lái)越容易應用。
2001年的Web API和API Web Crawler

API 指示代碼編程套接字的使用。它是一個(gè)socket,根據內置的控制模塊使開(kāi)發(fā)設計程序流程更加方便快捷。
2001 年,Salesforce 和 eBay 發(fā)布了自己的 API,程序員可以使用它免費瀏覽和下載一些已發(fā)布的數據。
從那時(shí)起,許多網(wǎng)站都提供了 Web API,以便每個(gè)人都可以瀏覽他們的公共數據庫。
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(Python視頻寫(xiě)了一個(gè)爬蟲(chóng)程序,實(shí)現簡(jiǎn)單的網(wǎng)頁(yè)圖片下載)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 146 次瀏覽 ? 2021-10-26 09:21
一、簡(jiǎn)介
這段時(shí)間我一直在學(xué)習 Python 的東西。我聽(tīng)說(shuō)過(guò) Python 爬蟲(chóng)有多強大。我現在才學(xué)會(huì )這個(gè)。跟著(zhù)小烏龜的Python視頻寫(xiě)了一個(gè)爬蟲(chóng)程序,可以實(shí)現簡(jiǎn)單的網(wǎng)頁(yè)圖片下載。
二、代碼
__author__ = "JentZhang"
import urllib.request
import os
import random
import re
def url_open(url):
'''
打開(kāi)網(wǎng)頁(yè)
:param url:
:return:
'''
req = urllib.request.Request(url)
req.add_header('User-Agent',
'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36')
# 應用代理
'''
proxyies = ["111.155.116.237:8123","101.236.23.202:8866","122.114.31.177:808"]
proxy = random.choice(proxyies)
proxy_support = urllib.request.ProxyHandler({"http": proxy})
opener = urllib.request.build_opener(proxy_support)
urllib.request.install_opener(opener)
'''
response = urllib.request.urlopen(url)
html = response.read()
return html
def save_img(folder, img_addrs):
'''
保存圖片
:param folder: 要保存的文件夾
:param img_addrs: 圖片地址(列表)
:return:
'''
# 創(chuàng )建文件夾用來(lái)存放圖片
if not os.path.exists(folder):
os.mkdir(folder)
os.chdir(folder)
for each in img_addrs:
filename = each.split('/')[-1]
try:
with open(filename, 'wb') as f:
img = url_open("http:" + each)
f.write(img)
except urllib.error.HTTPError as e:
# print(e.reason)
pass
print('完畢!')
def find_imgs(url):
'''
獲取全部的圖片鏈接
:param url: 連接地址
:return: 圖片地址的列表
'''
html = url_open(url).decode("utf-8")
img_addrs = re.findall(r'src="(.+?\.gif)', html)
return img_addrs
def get_page(url):
'''
獲取當前一共有多少頁(yè)的圖片
:param url: 網(wǎng)頁(yè)地址
:return:
'''
html = url_open(url).decode('utf-8')
a = html.find("current-comment-page") + 23
b = html.find("]", a)
return html[a:b]
def download_mm(url="http://jandan.net/ooxx/", folder="OOXX", pages=1):
'''
主程序(下載圖片)
:param folder:默認存放的文件夾
:param pages: 下載的頁(yè)數
:return:
'''
page_num = int(get_page(url))
for i in range(pages):
page_num -= i
page_url = url + "page-" + str(page_num) + "#comments"
img_addrs = find_imgs(page_url)
save_img(folder, img_addrs)
if __name__ == "__main__":
download_mm()
三、總結
因為代碼中訪(fǎng)問(wèn)的網(wǎng)址已經(jīng)使用了反爬蟲(chóng)算法。所以爬不出來(lái)我想要的圖片,所以,就做個(gè)爬蟲(chóng)的筆記吧。僅供學(xué)習參考【捂臉】。 . . .
最后:我把jpg格式改成gif了,還是可以爬到很爛的gif:
第一張圖只是反爬蟲(chóng)機制的占位符,沒(méi)有任何內容。 查看全部
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(Python視頻寫(xiě)了一個(gè)爬蟲(chóng)程序,實(shí)現簡(jiǎn)單的網(wǎng)頁(yè)圖片下載)
一、簡(jiǎn)介
這段時(shí)間我一直在學(xué)習 Python 的東西。我聽(tīng)說(shuō)過(guò) Python 爬蟲(chóng)有多強大。我現在才學(xué)會(huì )這個(gè)。跟著(zhù)小烏龜的Python視頻寫(xiě)了一個(gè)爬蟲(chóng)程序,可以實(shí)現簡(jiǎn)單的網(wǎng)頁(yè)圖片下載。
二、代碼
__author__ = "JentZhang"
import urllib.request
import os
import random
import re
def url_open(url):
'''
打開(kāi)網(wǎng)頁(yè)
:param url:
:return:
'''
req = urllib.request.Request(url)
req.add_header('User-Agent',
'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36')
# 應用代理
'''
proxyies = ["111.155.116.237:8123","101.236.23.202:8866","122.114.31.177:808"]
proxy = random.choice(proxyies)
proxy_support = urllib.request.ProxyHandler({"http": proxy})
opener = urllib.request.build_opener(proxy_support)
urllib.request.install_opener(opener)
'''
response = urllib.request.urlopen(url)
html = response.read()
return html
def save_img(folder, img_addrs):
'''
保存圖片
:param folder: 要保存的文件夾
:param img_addrs: 圖片地址(列表)
:return:
'''
# 創(chuàng )建文件夾用來(lái)存放圖片
if not os.path.exists(folder):
os.mkdir(folder)
os.chdir(folder)
for each in img_addrs:
filename = each.split('/')[-1]
try:
with open(filename, 'wb') as f:
img = url_open("http:" + each)
f.write(img)
except urllib.error.HTTPError as e:
# print(e.reason)
pass
print('完畢!')
def find_imgs(url):
'''
獲取全部的圖片鏈接
:param url: 連接地址
:return: 圖片地址的列表
'''
html = url_open(url).decode("utf-8")
img_addrs = re.findall(r'src="(.+?\.gif)', html)
return img_addrs
def get_page(url):
'''
獲取當前一共有多少頁(yè)的圖片
:param url: 網(wǎng)頁(yè)地址
:return:
'''
html = url_open(url).decode('utf-8')
a = html.find("current-comment-page") + 23
b = html.find("]", a)
return html[a:b]
def download_mm(url="http://jandan.net/ooxx/", folder="OOXX", pages=1):
'''
主程序(下載圖片)
:param folder:默認存放的文件夾
:param pages: 下載的頁(yè)數
:return:
'''
page_num = int(get_page(url))
for i in range(pages):
page_num -= i
page_url = url + "page-" + str(page_num) + "#comments"
img_addrs = find_imgs(page_url)
save_img(folder, img_addrs)
if __name__ == "__main__":
download_mm()
三、總結
因為代碼中訪(fǎng)問(wèn)的網(wǎng)址已經(jīng)使用了反爬蟲(chóng)算法。所以爬不出來(lái)我想要的圖片,所以,就做個(gè)爬蟲(chóng)的筆記吧。僅供學(xué)習參考【捂臉】。 . . .
最后:我把jpg格式改成gif了,還是可以爬到很爛的gif:

第一張圖只是反爬蟲(chóng)機制的占位符,沒(méi)有任何內容。
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(ScreamingFrogSEOSpiderforMac軟件介紹(一)_)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 87 次瀏覽 ? 2021-10-25 04:04
Mac版Screaming Frog SEO Spider是一款專(zhuān)門(mén)用于抓取網(wǎng)址進(jìn)行分析的網(wǎng)絡(luò )爬蟲(chóng)開(kāi)發(fā)工具。您可以使用本軟件快速抓取網(wǎng)站中可能出現的斷鏈和服務(wù)器錯誤,或識別網(wǎng)站中臨時(shí)和永久重定向的鏈接,還可以檢查可能出現的重復問(wèn)題URL、頁(yè)面標題、描述、內容等信息中心。
Screaming Frog SEO Spider for Mac 軟件介紹
Mac版尖叫蛙SEO蜘蛛是一款網(wǎng)站爬蟲(chóng),可以讓您爬取網(wǎng)站的URL,獲取關(guān)鍵要素、分析審計技巧、現場(chǎng)搜索引擎優(yōu)化。
特征
1、找到斷開(kāi)的鏈接
立即抓取 網(wǎng)站 并找到斷開(kāi)的鏈接 (404) 和服務(wù)器錯誤。批量導出錯誤和源 URL 進(jìn)行修復,或發(fā)送給開(kāi)發(fā)人員。
2、審計重定向
查找臨時(shí)和永久重定向,識別重定向鏈和循環(huán),或上傳 URL 列表以在站點(diǎn)遷移期間進(jìn)行審查。
3、分析頁(yè)面標題和元數據
在爬取過(guò)程中分析頁(yè)面標題和元描述,找出網(wǎng)站中過(guò)長(cháng)、缺失、缺失或重復的內容。
4、 發(fā)現重復內容
使用 md5 算法檢查和查找完全重復的 URL、部分重復的元素(例如頁(yè)面標題、描述或標題)并查找低內容頁(yè)面。
5、使用XPath提取數據
使用 CSS Path、XPath 或正則表達式從網(wǎng)頁(yè)的 HTML 中采集任何數據。這可能包括社交元標簽、其他標題、價(jià)格、SKU 或更多!
6、 查看機器人和說(shuō)明
查看被 robots.txt、元機器人或 X-Robots-Tag 指令(例如“noindex”或“nofollow”)以及規范和 rel="next" 和 rel="prev" 阻止的 URL。
7、生成XML站點(diǎn)地圖
快速創(chuàng )建 XML 站點(diǎn)地圖和圖片 XML 站點(diǎn)地圖,并通過(guò) URL 進(jìn)行高級配置,包括最后修改、優(yōu)先級和更改頻率。
8、與谷歌分析集成
連接到 Google Analytics API 并獲取用于抓取功能的用戶(hù)數據,例如會(huì )話(huà)或跳出率以及著(zhù)陸頁(yè)的轉化、目標、交易和收入。
9、抓取 JavaScript網(wǎng)站
使用集成的 Chromium WRS 來(lái)渲染網(wǎng)頁(yè),以抓取動(dòng)態(tài)的、富含 JavaScript 的 網(wǎng)站 以及 Angular、React 和 Vue.js 等框架。
10、可視化站點(diǎn)架構
使用交互式爬行和目錄強制地圖和樹(shù)形地圖站點(diǎn)直觀(guān)地評估內部鏈接和 URL 結構。
Mac 版 Screaming Frog SEO Spider 快速摘要
錯誤 - 客戶(hù)端錯誤,例如斷開(kāi)的鏈接和服務(wù)器錯誤(無(wú)響應、4XX、5XX)。
重定向 - 永久、臨時(shí)重定向(3XX 響應)和 JS 重定向。
阻止的 URL - robots.txt 協(xié)議不允許查看和審查 URL。
被阻止的資源 - 在演示模式下查看和審核被阻止的資源。
外部鏈接-所有外部鏈接及其狀態(tài)代碼。
協(xié)議 - URL 是安全 (HTTPS) 還是不安全 (HTTP)。
URI 問(wèn)題 - 非 ASCII 字符、下劃線(xiàn)、大寫(xiě)字符、參數或長(cháng) URL。
重復頁(yè)面-哈希值/MD5校驗和算法來(lái)檢查完全重復的頁(yè)面。
頁(yè)面標題缺失、重復、超過(guò) 65 個(gè)字符、短、像素寬度被截斷、等于或大于 h1。
元描述-缺失、重復、超過(guò) 156 個(gè)字符、短、截斷或像素寬度倍數。
元關(guān)鍵字 - 主要用于參考,因為它們不被 Google、Bing 或 Yahoo 使用。
文件大小- URL 和圖像的大小。
響應時(shí)間。
最后修改的標題。
頁(yè)面(抓?。┥疃?。
字數。
H1-缺失,重復,70多個(gè)字符,不止一個(gè)。
H2-Missing,重復,70多個(gè)字符,不止一個(gè)。
Meta robots-index、無(wú)索引、follow、nofollow、noarchive、nosnippet、noodp、noydir等。
元刷新——包括目標頁(yè)面和時(shí)間延遲。 查看全部
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(ScreamingFrogSEOSpiderforMac軟件介紹(一)_)
Mac版Screaming Frog SEO Spider是一款專(zhuān)門(mén)用于抓取網(wǎng)址進(jìn)行分析的網(wǎng)絡(luò )爬蟲(chóng)開(kāi)發(fā)工具。您可以使用本軟件快速抓取網(wǎng)站中可能出現的斷鏈和服務(wù)器錯誤,或識別網(wǎng)站中臨時(shí)和永久重定向的鏈接,還可以檢查可能出現的重復問(wèn)題URL、頁(yè)面標題、描述、內容等信息中心。

Screaming Frog SEO Spider for Mac 軟件介紹
Mac版尖叫蛙SEO蜘蛛是一款網(wǎng)站爬蟲(chóng),可以讓您爬取網(wǎng)站的URL,獲取關(guān)鍵要素、分析審計技巧、現場(chǎng)搜索引擎優(yōu)化。
特征
1、找到斷開(kāi)的鏈接
立即抓取 網(wǎng)站 并找到斷開(kāi)的鏈接 (404) 和服務(wù)器錯誤。批量導出錯誤和源 URL 進(jìn)行修復,或發(fā)送給開(kāi)發(fā)人員。
2、審計重定向
查找臨時(shí)和永久重定向,識別重定向鏈和循環(huán),或上傳 URL 列表以在站點(diǎn)遷移期間進(jìn)行審查。
3、分析頁(yè)面標題和元數據
在爬取過(guò)程中分析頁(yè)面標題和元描述,找出網(wǎng)站中過(guò)長(cháng)、缺失、缺失或重復的內容。
4、 發(fā)現重復內容
使用 md5 算法檢查和查找完全重復的 URL、部分重復的元素(例如頁(yè)面標題、描述或標題)并查找低內容頁(yè)面。
5、使用XPath提取數據
使用 CSS Path、XPath 或正則表達式從網(wǎng)頁(yè)的 HTML 中采集任何數據。這可能包括社交元標簽、其他標題、價(jià)格、SKU 或更多!

6、 查看機器人和說(shuō)明
查看被 robots.txt、元機器人或 X-Robots-Tag 指令(例如“noindex”或“nofollow”)以及規范和 rel="next" 和 rel="prev" 阻止的 URL。
7、生成XML站點(diǎn)地圖
快速創(chuàng )建 XML 站點(diǎn)地圖和圖片 XML 站點(diǎn)地圖,并通過(guò) URL 進(jìn)行高級配置,包括最后修改、優(yōu)先級和更改頻率。
8、與谷歌分析集成
連接到 Google Analytics API 并獲取用于抓取功能的用戶(hù)數據,例如會(huì )話(huà)或跳出率以及著(zhù)陸頁(yè)的轉化、目標、交易和收入。
9、抓取 JavaScript網(wǎng)站
使用集成的 Chromium WRS 來(lái)渲染網(wǎng)頁(yè),以抓取動(dòng)態(tài)的、富含 JavaScript 的 網(wǎng)站 以及 Angular、React 和 Vue.js 等框架。
10、可視化站點(diǎn)架構
使用交互式爬行和目錄強制地圖和樹(shù)形地圖站點(diǎn)直觀(guān)地評估內部鏈接和 URL 結構。

Mac 版 Screaming Frog SEO Spider 快速摘要
錯誤 - 客戶(hù)端錯誤,例如斷開(kāi)的鏈接和服務(wù)器錯誤(無(wú)響應、4XX、5XX)。
重定向 - 永久、臨時(shí)重定向(3XX 響應)和 JS 重定向。
阻止的 URL - robots.txt 協(xié)議不允許查看和審查 URL。
被阻止的資源 - 在演示模式下查看和審核被阻止的資源。
外部鏈接-所有外部鏈接及其狀態(tài)代碼。
協(xié)議 - URL 是安全 (HTTPS) 還是不安全 (HTTP)。
URI 問(wèn)題 - 非 ASCII 字符、下劃線(xiàn)、大寫(xiě)字符、參數或長(cháng) URL。
重復頁(yè)面-哈希值/MD5校驗和算法來(lái)檢查完全重復的頁(yè)面。
頁(yè)面標題缺失、重復、超過(guò) 65 個(gè)字符、短、像素寬度被截斷、等于或大于 h1。
元描述-缺失、重復、超過(guò) 156 個(gè)字符、短、截斷或像素寬度倍數。
元關(guān)鍵字 - 主要用于參考,因為它們不被 Google、Bing 或 Yahoo 使用。
文件大小- URL 和圖像的大小。
響應時(shí)間。
最后修改的標題。
頁(yè)面(抓?。┥疃?。

字數。
H1-缺失,重復,70多個(gè)字符,不止一個(gè)。
H2-Missing,重復,70多個(gè)字符,不止一個(gè)。
Meta robots-index、無(wú)索引、follow、nofollow、noarchive、nosnippet、noodp、noydir等。
元刷新——包括目標頁(yè)面和時(shí)間延遲。
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(“物聯(lián)網(wǎng)”概念的核心之一(二):網(wǎng)絡(luò )爬蟲(chóng) )
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 157 次瀏覽 ? 2021-10-24 10:19
)
眾所周知,隨著(zhù)計算機、互聯(lián)網(wǎng)、物聯(lián)網(wǎng)、云計算等網(wǎng)絡(luò )技術(shù)的興起,網(wǎng)絡(luò )上的信息爆炸式增長(cháng)。毫無(wú)疑問(wèn),互聯(lián)網(wǎng)上的信息幾乎涵蓋了社會(huì )、文化、政治、經(jīng)濟、娛樂(lè )等所有話(huà)題。使用傳統的數據采集機制(如問(wèn)卷調查法、訪(fǎng)談法)獲取和采集數據往往受到資金和地域范圍的限制,也會(huì )由于樣本量小、可靠性低 數據往往與客觀(guān)事實(shí)存在偏差,局限性較大。
網(wǎng)絡(luò )爬蟲(chóng)使用統一資源定位器(Uniform Resource Locator)尋找目標網(wǎng)頁(yè),將用戶(hù)關(guān)注的數據內容直接返回給用戶(hù)。不需要用戶(hù)以瀏覽網(wǎng)頁(yè)的形式獲取信息,為用戶(hù)節省了時(shí)間和精力。提高了數據采集的準確性,讓用戶(hù)輕松瀏覽海量數據。網(wǎng)絡(luò )爬蟲(chóng)的最終目標是從網(wǎng)頁(yè)中獲取它們需要的信息。雖然可以使用urllib、urllib2、re等一些爬蟲(chóng)基礎庫來(lái)開(kāi)發(fā)爬蟲(chóng)程序,獲取需要的內容,但是所有爬蟲(chóng)程序都是這樣寫(xiě)的,工作量太大。于是就有了爬蟲(chóng)框架。
Webcrawler 也被稱(chēng)為 webspider 或 webrobot。其他不常用的名稱(chēng)包括螞蟻、自動(dòng)索引、模擬器或蠕蟲(chóng),它也是“物聯(lián)網(wǎng)”概念的核心之一。一。網(wǎng)絡(luò )爬蟲(chóng)本質(zhì)上是按照一定的邏輯和算法規則自動(dòng)抓取和下載萬(wàn)維網(wǎng)上網(wǎng)頁(yè)的計算機程序或腳本。它是搜索引擎的重要組成部分。
網(wǎng)絡(luò )爬蟲(chóng)一般從預先設置的一個(gè)或幾個(gè)初始網(wǎng)頁(yè)網(wǎng)址開(kāi)始,然后按照一定的規則抓取網(wǎng)頁(yè),獲取初始網(wǎng)頁(yè)上的網(wǎng)址列表,然后每次抓取一個(gè)網(wǎng)頁(yè),爬蟲(chóng)都會(huì )提取該網(wǎng)頁(yè)。將新的 URL 放入尚未爬取的隊列中,然后循環(huán)從隊列中取出一個(gè)從未爬取過(guò)的 URL,然后進(jìn)行新一輪的爬取,重復上述過(guò)程,直到抓取隊列中的 URL。當爬蟲(chóng)完成或滿(mǎn)足其他既定條件時(shí),爬蟲(chóng)將結束。
隨著(zhù)互聯(lián)網(wǎng)上信息的增多,使用網(wǎng)絡(luò )爬蟲(chóng)工具獲取所需的信息必定是有用的。利用網(wǎng)絡(luò )爬蟲(chóng)獲取采集信息,不僅可以實(shí)現高效、準確、自動(dòng)獲取網(wǎng)絡(luò )信息,還可以幫助企業(yè)或研究人員對采集收到的數據進(jìn)行后續的挖掘和分析.
人工智能、大數據、云計算和物聯(lián)網(wǎng)的未來(lái)發(fā)展值得關(guān)注。都是前沿產(chǎn)業(yè)。多元智能時(shí)代側重于人工智能和大數據的引入和科學(xué)譜。這里有幾篇高質(zhì)量的文章供您參考:
什么是網(wǎng)絡(luò )爬蟲(chóng),我們?yōu)槭裁匆獙W(xué)習網(wǎng)絡(luò )爬蟲(chóng)
六大主流大數據平臺架構分析采集
[大數據采集] 大數據技術(shù)采集如何到達我們的信息?
多元智能時(shí)代-人工智能與大數據學(xué)習導論網(wǎng)站|人工智能、大數據、物聯(lián)網(wǎng)、云計算的學(xué)習與交流網(wǎng)站
查看全部
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(“物聯(lián)網(wǎng)”概念的核心之一(二):網(wǎng)絡(luò )爬蟲(chóng)
)
眾所周知,隨著(zhù)計算機、互聯(lián)網(wǎng)、物聯(lián)網(wǎng)、云計算等網(wǎng)絡(luò )技術(shù)的興起,網(wǎng)絡(luò )上的信息爆炸式增長(cháng)。毫無(wú)疑問(wèn),互聯(lián)網(wǎng)上的信息幾乎涵蓋了社會(huì )、文化、政治、經(jīng)濟、娛樂(lè )等所有話(huà)題。使用傳統的數據采集機制(如問(wèn)卷調查法、訪(fǎng)談法)獲取和采集數據往往受到資金和地域范圍的限制,也會(huì )由于樣本量小、可靠性低 數據往往與客觀(guān)事實(shí)存在偏差,局限性較大。
網(wǎng)絡(luò )爬蟲(chóng)使用統一資源定位器(Uniform Resource Locator)尋找目標網(wǎng)頁(yè),將用戶(hù)關(guān)注的數據內容直接返回給用戶(hù)。不需要用戶(hù)以瀏覽網(wǎng)頁(yè)的形式獲取信息,為用戶(hù)節省了時(shí)間和精力。提高了數據采集的準確性,讓用戶(hù)輕松瀏覽海量數據。網(wǎng)絡(luò )爬蟲(chóng)的最終目標是從網(wǎng)頁(yè)中獲取它們需要的信息。雖然可以使用urllib、urllib2、re等一些爬蟲(chóng)基礎庫來(lái)開(kāi)發(fā)爬蟲(chóng)程序,獲取需要的內容,但是所有爬蟲(chóng)程序都是這樣寫(xiě)的,工作量太大。于是就有了爬蟲(chóng)框架。
Webcrawler 也被稱(chēng)為 webspider 或 webrobot。其他不常用的名稱(chēng)包括螞蟻、自動(dòng)索引、模擬器或蠕蟲(chóng),它也是“物聯(lián)網(wǎng)”概念的核心之一。一。網(wǎng)絡(luò )爬蟲(chóng)本質(zhì)上是按照一定的邏輯和算法規則自動(dòng)抓取和下載萬(wàn)維網(wǎng)上網(wǎng)頁(yè)的計算機程序或腳本。它是搜索引擎的重要組成部分。
網(wǎng)絡(luò )爬蟲(chóng)一般從預先設置的一個(gè)或幾個(gè)初始網(wǎng)頁(yè)網(wǎng)址開(kāi)始,然后按照一定的規則抓取網(wǎng)頁(yè),獲取初始網(wǎng)頁(yè)上的網(wǎng)址列表,然后每次抓取一個(gè)網(wǎng)頁(yè),爬蟲(chóng)都會(huì )提取該網(wǎng)頁(yè)。將新的 URL 放入尚未爬取的隊列中,然后循環(huán)從隊列中取出一個(gè)從未爬取過(guò)的 URL,然后進(jìn)行新一輪的爬取,重復上述過(guò)程,直到抓取隊列中的 URL。當爬蟲(chóng)完成或滿(mǎn)足其他既定條件時(shí),爬蟲(chóng)將結束。
隨著(zhù)互聯(lián)網(wǎng)上信息的增多,使用網(wǎng)絡(luò )爬蟲(chóng)工具獲取所需的信息必定是有用的。利用網(wǎng)絡(luò )爬蟲(chóng)獲取采集信息,不僅可以實(shí)現高效、準確、自動(dòng)獲取網(wǎng)絡(luò )信息,還可以幫助企業(yè)或研究人員對采集收到的數據進(jìn)行后續的挖掘和分析.
人工智能、大數據、云計算和物聯(lián)網(wǎng)的未來(lái)發(fā)展值得關(guān)注。都是前沿產(chǎn)業(yè)。多元智能時(shí)代側重于人工智能和大數據的引入和科學(xué)譜。這里有幾篇高質(zhì)量的文章供您參考:
什么是網(wǎng)絡(luò )爬蟲(chóng),我們?yōu)槭裁匆獙W(xué)習網(wǎng)絡(luò )爬蟲(chóng)
六大主流大數據平臺架構分析采集
[大數據采集] 大數據技術(shù)采集如何到達我們的信息?
多元智能時(shí)代-人工智能與大數據學(xué)習導論網(wǎng)站|人工智能、大數據、物聯(lián)網(wǎng)、云計算的學(xué)習與交流網(wǎng)站
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(2.如何用python請求一個(gè)網(wǎng)頁(yè)的過(guò)程分析(組圖))
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 164 次瀏覽 ? 2021-10-24 02:07
我第一次遇到lxml庫1.什么是爬蟲(chóng)?
所謂爬蟲(chóng)就是按照一定的規則自動(dòng)從互聯(lián)網(wǎng)上抓取信息的程序或腳本。萬(wàn)維網(wǎng)就像一個(gè)巨大的蜘蛛網(wǎng),我們的爬蟲(chóng)就是它上面的蜘蛛,不斷地爬取我們需要的信息。
2.履帶三要素3.履帶過(guò)程分析
當一個(gè)人訪(fǎng)問(wèn)一個(gè)網(wǎng)頁(yè)時(shí),它是如何進(jìn)行的?
?、俅蜷_(kāi)瀏覽器,輸入要訪(fǎng)問(wèn)的URL,發(fā)起請求。
?、诘却?wù)器返回數據,通過(guò)瀏覽器加載網(wǎng)頁(yè)。
?、蹚木W(wǎng)頁(yè)中查找您需要的數據(文本、圖片、文件等)。
?、鼙4婺枰臄祿?。
對于爬蟲(chóng)來(lái)說(shuō),同樣如此。它模仿了人類(lèi)請求網(wǎng)頁(yè)的過(guò)程,但略有不同。
首先,對應上面的步驟①和②,我們需要使用python來(lái)實(shí)現請求一個(gè)網(wǎng)頁(yè)的功能。
其次,對應上面的步驟③,我們需要使用python來(lái)實(shí)現解析請求網(wǎng)頁(yè)的功能。
最后,對于上面的步驟④,我們需要使用python來(lái)實(shí)現保存數據的功能。
因為是一個(gè)簡(jiǎn)單的爬蟲(chóng),其他一些復雜的操作這里就不贅述了。下面,對以上功能一一分析。
4.如何用python請求一個(gè)網(wǎng)頁(yè)
作為擁有豐富類(lèi)庫的編程語(yǔ)言,使用python請求網(wǎng)頁(yè)完全是小菜一碟。這里有一個(gè)非常有用的類(lèi)庫 urllib.request。
如何模擬用戶(hù)請求,請看我的另一篇博客:
4.1. 抓取網(wǎng)頁(yè)
import urllib.request
response = urllib.request.urlopen('https://laoniu.blog.csdn.net/')
print(response.read().decode('utf-8'))
這樣就可以抓取csdn我主頁(yè)的html文檔了
當我們使用爬蟲(chóng)時(shí),我們需要從網(wǎng)頁(yè)中提取我們需要的數據。接下來(lái),我們來(lái)學(xué)習抓取百度搜索頁(yè)面的熱門(mén)列表數據。
4.2.如何解析網(wǎng)頁(yè)
使用 lxml 庫
lxml 是一個(gè)用 Python 編寫(xiě)的庫,可以快速靈活地處理 XML 和 HTML。
它支持 XML 路徑語(yǔ)言 (XPath) 和可擴展樣式表語(yǔ)言轉換 (XSLT),并實(shí)現了通用的 ElementTree API。
安裝
#pip方式安裝
pip3 install lxml
#wheel方式安裝
#下載對應系統版本的wheel文件:http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml
pip3 install lxml-4.2.1-cp36-cp36m-win_amd64.whl
yum install -y epel-release libxslt-devel libxml2-devel openssl-devel
pip3 install lxml
環(huán)境/版本列表:
4.3.寫(xiě)代碼
import urllib.request
from lxml import etree
# 獲取百度熱榜
url = "https://www.baidu.com/s?ie=UTF-8&wd=1"
# 我們在請求頭加入User-Agent參數,這樣可以讓服務(wù)端認為此次請求是用戶(hù)通過(guò)瀏覽器發(fā)起的正常請求,防止被識別為爬蟲(chóng)程序請求導致直接拒絕訪(fǎng)問(wèn)
req = urllib.request.Request(url=url, headers={
'User-Agent': 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'
})
# 發(fā)起請求
html_resp = urllib.request.urlopen(req).read().decode("utf-8")
在這里我們可以順利獲取到百度搜索頁(yè)面的html文檔
我們需要看看熱搜排名的標簽元素在哪里
找到第一個(gè)右鍵復制XPath(后來(lái)的XPath是什么)
我們需要了解和使用XPath。XPath 是 XML Path Language,它是一種用于確定 XML 文檔某部分位置的語(yǔ)言。
復制內容的結果是://*[@id="con-ar"]/div[2]/div/div/table/tbody[1]/tr[1]
這個(gè)xPath字符串表示當前在html中的位置是熱點(diǎn)新聞的第一行
5.XPath 常用規則
表達
描述
節點(diǎn)名
選擇該節點(diǎn)的所有子節點(diǎn)
/
從當前節點(diǎn)中選擇直接子節點(diǎn)
//
從當前節點(diǎn)中選擇后代節點(diǎn)
.
選擇當前節點(diǎn)
..
選擇當前節點(diǎn)的父節點(diǎn)
@
選擇屬性
*
通配符,選擇所有元素節點(diǎn)和元素名稱(chēng)
@*
選擇所有屬性
[@atrib]
選擇具有給定屬性的所有元素
[@atrib='value']
選擇具有給定值的給定屬性的所有元素
[標簽]
選擇具有指定元素的所有直接子節點(diǎn)
[標簽='文本']
選擇所有指定元素,文本內容為文本節點(diǎn)
6.繼續分析
那么,當我們想要獲取所有熱門(mén)新聞時(shí),我們該如何寫(xiě)作呢?
繼續看網(wǎng)頁(yè)
可以看到所有的熱榜都在三個(gè)以下
修改剛剛復制的XPath
//*[@id="con-ar"]/div[2]/div/div/table/tbody[1]/tr[1] 改為 //*[@id="con-ar"]/ div[2]/div/div/table/tbody/tr
這樣X(jué)Path就會(huì )定位到這三個(gè)tbody下的所有tr元素內容
繼續看看tr是不是我們想要的,展開(kāi)一個(gè)tr看看
甘~還有一堆,百度,你不講武道,
這該怎么做。我們需要獲取的數據是【標題】【訪(fǎng)問(wèn)鏈接】【熱度】,現在tr元素全部到手了
然后直接從tr開(kāi)始獲取下面所有標簽的標題和超鏈接
標題的 XPath:*/a/@title 超鏈接的 XPath:*/a/@href
*表示匹配tr/a下的所有元素都在*找到第一個(gè)a標簽@是屬性選擇器標題,href是要選擇的元素屬性
還在發(fā)燒,讓我繼續操作,直接選擇tr下的第二個(gè)td XPath:td[2]
分析完成后貼出完整代碼
import urllib.request
from lxml import etree
# 獲取百度熱榜
url = "https://www.baidu.com/s?ie=UTF-8&wd=1"
# 我們在請求頭加入User-Agent參數,這樣可以讓服務(wù)端認為此次請求是用戶(hù)通過(guò)瀏覽器發(fā)起的正常請求,防止被識別為爬蟲(chóng)程序請求導致直接拒絕訪(fǎng)問(wèn)
req = urllib.request.Request(url=url, headers={
'User-Agent': 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'
})
html_resp = urllib.request.urlopen(req).read().decode("utf-8")
html = etree.HTML(html_resp)#初始化生成一個(gè)XPath解析對象
_list = html.xpath("//*[@id='con-ar']/div[2]/div/div/table/tbody/tr")
print(f"article count : {len(_list)}")
for tr in _list:
title = tr.xpath("*/a/@title")[0] # 獲取url的title
href = tr.xpath("*/a/@href")[0] # 獲取url的href
hot = tr.xpath("string(td[2])").strip() # 獲取熱度
print(f"{hot}\t{title}\thttps://www.baidu.com{href}")
單擊運行,程序運行。很快,所有的數據都來(lái)了,我把它們都抓住了。我笑了。希望百度鼠標能做到
這樣就完成了lxml xpath 的基本使用。更詳細的xpath教程,請看:
7.存儲數據
存入數據后立即修改代碼
print(f"article count : {len(_list)}")
with open('g_data.text', 'w') as f: # 在當前路徑下,以寫(xiě)的方式打開(kāi)一個(gè)名為'g_data.text',如果不存在則創(chuàng )建
for tr in _list:
title = tr.xpath("*/a/@title")[0] # 獲取url的title
href = tr.xpath("*/a/@href")[0] # 獲取url的href
hot = tr.xpath("string(td[2])").strip() # 獲取熱度
line = f"{hot}\t{title}\thttps://www.baidu.com{href}\n"
f.write(line) # 寫(xiě)入文件
8.補充
東西雖然不多,但是寫(xiě)了好久。這是我自己的學(xué)習總結,希望對大家有幫助。我只是一個(gè)菜鳥(niǎo)。你可以直接指出文章中的錯誤。 查看全部
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(2.如何用python請求一個(gè)網(wǎng)頁(yè)的過(guò)程分析(組圖))
我第一次遇到lxml庫1.什么是爬蟲(chóng)?
所謂爬蟲(chóng)就是按照一定的規則自動(dòng)從互聯(lián)網(wǎng)上抓取信息的程序或腳本。萬(wàn)維網(wǎng)就像一個(gè)巨大的蜘蛛網(wǎng),我們的爬蟲(chóng)就是它上面的蜘蛛,不斷地爬取我們需要的信息。
2.履帶三要素3.履帶過(guò)程分析
當一個(gè)人訪(fǎng)問(wèn)一個(gè)網(wǎng)頁(yè)時(shí),它是如何進(jìn)行的?
?、俅蜷_(kāi)瀏覽器,輸入要訪(fǎng)問(wèn)的URL,發(fā)起請求。
?、诘却?wù)器返回數據,通過(guò)瀏覽器加載網(wǎng)頁(yè)。
?、蹚木W(wǎng)頁(yè)中查找您需要的數據(文本、圖片、文件等)。
?、鼙4婺枰臄祿?。
對于爬蟲(chóng)來(lái)說(shuō),同樣如此。它模仿了人類(lèi)請求網(wǎng)頁(yè)的過(guò)程,但略有不同。
首先,對應上面的步驟①和②,我們需要使用python來(lái)實(shí)現請求一個(gè)網(wǎng)頁(yè)的功能。
其次,對應上面的步驟③,我們需要使用python來(lái)實(shí)現解析請求網(wǎng)頁(yè)的功能。
最后,對于上面的步驟④,我們需要使用python來(lái)實(shí)現保存數據的功能。
因為是一個(gè)簡(jiǎn)單的爬蟲(chóng),其他一些復雜的操作這里就不贅述了。下面,對以上功能一一分析。
4.如何用python請求一個(gè)網(wǎng)頁(yè)
作為擁有豐富類(lèi)庫的編程語(yǔ)言,使用python請求網(wǎng)頁(yè)完全是小菜一碟。這里有一個(gè)非常有用的類(lèi)庫 urllib.request。
如何模擬用戶(hù)請求,請看我的另一篇博客:
4.1. 抓取網(wǎng)頁(yè)
import urllib.request
response = urllib.request.urlopen('https://laoniu.blog.csdn.net/')
print(response.read().decode('utf-8'))
這樣就可以抓取csdn我主頁(yè)的html文檔了
當我們使用爬蟲(chóng)時(shí),我們需要從網(wǎng)頁(yè)中提取我們需要的數據。接下來(lái),我們來(lái)學(xué)習抓取百度搜索頁(yè)面的熱門(mén)列表數據。

4.2.如何解析網(wǎng)頁(yè)
使用 lxml 庫
lxml 是一個(gè)用 Python 編寫(xiě)的庫,可以快速靈活地處理 XML 和 HTML。
它支持 XML 路徑語(yǔ)言 (XPath) 和可擴展樣式表語(yǔ)言轉換 (XSLT),并實(shí)現了通用的 ElementTree API。
安裝
#pip方式安裝
pip3 install lxml
#wheel方式安裝
#下載對應系統版本的wheel文件:http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml
pip3 install lxml-4.2.1-cp36-cp36m-win_amd64.whl
yum install -y epel-release libxslt-devel libxml2-devel openssl-devel
pip3 install lxml
環(huán)境/版本列表:
4.3.寫(xiě)代碼
import urllib.request
from lxml import etree
# 獲取百度熱榜
url = "https://www.baidu.com/s?ie=UTF-8&wd=1"
# 我們在請求頭加入User-Agent參數,這樣可以讓服務(wù)端認為此次請求是用戶(hù)通過(guò)瀏覽器發(fā)起的正常請求,防止被識別為爬蟲(chóng)程序請求導致直接拒絕訪(fǎng)問(wèn)
req = urllib.request.Request(url=url, headers={
'User-Agent': 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'
})
# 發(fā)起請求
html_resp = urllib.request.urlopen(req).read().decode("utf-8")
在這里我們可以順利獲取到百度搜索頁(yè)面的html文檔
我們需要看看熱搜排名的標簽元素在哪里


找到第一個(gè)右鍵復制XPath(后來(lái)的XPath是什么)

我們需要了解和使用XPath。XPath 是 XML Path Language,它是一種用于確定 XML 文檔某部分位置的語(yǔ)言。
復制內容的結果是://*[@id="con-ar"]/div[2]/div/div/table/tbody[1]/tr[1]
這個(gè)xPath字符串表示當前在html中的位置是熱點(diǎn)新聞的第一行
5.XPath 常用規則
表達
描述
節點(diǎn)名
選擇該節點(diǎn)的所有子節點(diǎn)
/
從當前節點(diǎn)中選擇直接子節點(diǎn)
//
從當前節點(diǎn)中選擇后代節點(diǎn)
.
選擇當前節點(diǎn)
..
選擇當前節點(diǎn)的父節點(diǎn)
@
選擇屬性
*
通配符,選擇所有元素節點(diǎn)和元素名稱(chēng)
@*
選擇所有屬性
[@atrib]
選擇具有給定屬性的所有元素
[@atrib='value']
選擇具有給定值的給定屬性的所有元素
[標簽]
選擇具有指定元素的所有直接子節點(diǎn)
[標簽='文本']
選擇所有指定元素,文本內容為文本節點(diǎn)
6.繼續分析
那么,當我們想要獲取所有熱門(mén)新聞時(shí),我們該如何寫(xiě)作呢?
繼續看網(wǎng)頁(yè)

可以看到所有的熱榜都在三個(gè)以下
修改剛剛復制的XPath
//*[@id="con-ar"]/div[2]/div/div/table/tbody[1]/tr[1] 改為 //*[@id="con-ar"]/ div[2]/div/div/table/tbody/tr
這樣X(jué)Path就會(huì )定位到這三個(gè)tbody下的所有tr元素內容
繼續看看tr是不是我們想要的,展開(kāi)一個(gè)tr看看

甘~還有一堆,百度,你不講武道,

這該怎么做。我們需要獲取的數據是【標題】【訪(fǎng)問(wèn)鏈接】【熱度】,現在tr元素全部到手了
然后直接從tr開(kāi)始獲取下面所有標簽的標題和超鏈接
標題的 XPath:*/a/@title 超鏈接的 XPath:*/a/@href
*表示匹配tr/a下的所有元素都在*找到第一個(gè)a標簽@是屬性選擇器標題,href是要選擇的元素屬性
還在發(fā)燒,讓我繼續操作,直接選擇tr下的第二個(gè)td XPath:td[2]
分析完成后貼出完整代碼
import urllib.request
from lxml import etree
# 獲取百度熱榜
url = "https://www.baidu.com/s?ie=UTF-8&wd=1"
# 我們在請求頭加入User-Agent參數,這樣可以讓服務(wù)端認為此次請求是用戶(hù)通過(guò)瀏覽器發(fā)起的正常請求,防止被識別為爬蟲(chóng)程序請求導致直接拒絕訪(fǎng)問(wèn)
req = urllib.request.Request(url=url, headers={
'User-Agent': 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'
})
html_resp = urllib.request.urlopen(req).read().decode("utf-8")
html = etree.HTML(html_resp)#初始化生成一個(gè)XPath解析對象
_list = html.xpath("//*[@id='con-ar']/div[2]/div/div/table/tbody/tr")
print(f"article count : {len(_list)}")
for tr in _list:
title = tr.xpath("*/a/@title")[0] # 獲取url的title
href = tr.xpath("*/a/@href")[0] # 獲取url的href
hot = tr.xpath("string(td[2])").strip() # 獲取熱度
print(f"{hot}\t{title}\thttps://www.baidu.com{href}")
單擊運行,程序運行。很快,所有的數據都來(lái)了,我把它們都抓住了。我笑了。希望百度鼠標能做到

這樣就完成了lxml xpath 的基本使用。更詳細的xpath教程,請看:
7.存儲數據
存入數據后立即修改代碼
print(f"article count : {len(_list)}")
with open('g_data.text', 'w') as f: # 在當前路徑下,以寫(xiě)的方式打開(kāi)一個(gè)名為'g_data.text',如果不存在則創(chuàng )建
for tr in _list:
title = tr.xpath("*/a/@title")[0] # 獲取url的title
href = tr.xpath("*/a/@href")[0] # 獲取url的href
hot = tr.xpath("string(td[2])").strip() # 獲取熱度
line = f"{hot}\t{title}\thttps://www.baidu.com{href}\n"
f.write(line) # 寫(xiě)入文件

8.補充
東西雖然不多,但是寫(xiě)了好久。這是我自己的學(xué)習總結,希望對大家有幫助。我只是一個(gè)菜鳥(niǎo)。你可以直接指出文章中的錯誤。
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(爬取某個(gè)前端知識分析之不會(huì )網(wǎng)站頁(yè)面的定位與布局 )
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 94 次瀏覽 ? 2021-11-08 17:06
)
介紹
本案例只是為了鞏固Xpath語(yǔ)法的使用,不會(huì )涉及到爬蟲(chóng)知識太深
分析:
一般我們在爬取某個(gè)網(wǎng)站頁(yè)面時(shí),有以下幾個(gè)步驟:
1、獲取爬取目標地址
2、明確需求,即要知道網(wǎng)頁(yè)中獲取哪些數據
3、 明確目標后,通過(guò)相應的解析語(yǔ)法(Xpath)分析網(wǎng)頁(yè)的結構,得到想要的數據
4、寫(xiě)代碼實(shí)現
1、獲取爬取目標地址
以百度貼吧為例:
程序員吧-百度貼吧--程序員之家,全球最大的程序員中文交流區。--Programmer(英文程序員)是從事程序開(kāi)發(fā)和維護的專(zhuān)業(yè)人士。一般來(lái)說(shuō),程序員分為程序員和程序員,但兩者的界限不是很清楚。
2、明確需求
獲取貼吧的每個(gè)帖子的標題,如下圖:
3、使用Xpath解析網(wǎng)頁(yè)結構獲取想要的數據1、通過(guò)瀏覽器工具快速定位到網(wǎng)頁(yè)中需要獲取的數據的標簽位置
1、在網(wǎng)頁(yè)上右鍵,點(diǎn)擊檢查
2、 然后彈出
3、點(diǎn)擊左上角的箭頭標志
4、 鼠標懸停在網(wǎng)頁(yè)的數據上,左邊的顯示會(huì )自動(dòng)跳轉到對應的標簽,既然是獲取文章的標題,那么我們將鼠標懸停在一個(gè)的標題上郵政
定位已定位,但這就是我們想要的嗎?顯然不是,因為這只是定位一個(gè)帖子,顯然不符合我們的需求。我們想要得到整個(gè)網(wǎng)頁(yè)(注意這是一個(gè)網(wǎng)頁(yè),不是網(wǎng)站)所有帖子的標題。
其實(shí)一個(gè)的定位已經(jīng)是一半了,因為其他帖子的tag結構和屬性都是一樣的,不會(huì )有什么區別,做過(guò)前端的兄弟都知道。那么問(wèn)題來(lái)了,既然是一樣的,為什么不直接使用呢?這又是一個(gè)前端知識。其實(shí)網(wǎng)站的大部分布局就像很多拼圖,所以這部分帖子是一體的。在拼圖中,我們現在要找到這塊拼圖。從Xpath語(yǔ)法的角度,我們通過(guò)路徑搜索和屬性值定位來(lái)定位標簽。如果直接用label屬性值來(lái)定位,就可以了,因為一下子就定位到了。顯然不可保,可能會(huì )有更多不需要的數據。
想法:
1、 先搜索路徑,找到存放所有帖子的父標簽
2、由于帖子的標簽結構和屬性值都是一樣的,隨便找一篇帖子分析一下就行了。后面寫(xiě)個(gè)例子看看效果
2.使用Xpath-helper插件驗證Xapth語(yǔ)法是否正確獲取數據
知道了數據的位置,我們就開(kāi)始寫(xiě)Xpath語(yǔ)法來(lái)定位數據,那我們怎么知道我們寫(xiě)的語(yǔ)法是否正確,這個(gè)就用我們的Xpath-helper插件來(lái)驗證。
1、 首先,我們觀(guān)察一下貼吧中一個(gè)網(wǎng)頁(yè)上有多少帖子
不收錄廣告,一共50條,所以只要我們寫(xiě)好語(yǔ)法就可以得到50條帖子的數據是正確的
2、使用插件,點(diǎn)擊右上角拼圖
3、點(diǎn)擊Xpath-helper插件
4、 彈出兩個(gè)框
5、 左邊的框是輸入我們的Xapth語(yǔ)法,右邊是根據語(yǔ)法自動(dòng)獲取的數據
編寫(xiě) Xpath 語(yǔ)法
1、只使用屬性值定位(不推薦)
使用鼠標定位其中一個(gè)帖子
提供日千萬(wàn)預算,長(cháng)期高價(jià)收wap量,正規無(wú)感廣告,尋站長(cháng)合作共
語(yǔ)法:
//a[@class="j_th_tit"]
影響:
可以得到五十條數據,語(yǔ)法正確,為什么不推薦呢,比如我們不使用class屬性而是使用rel屬性
//a[@rel="noreferrer"]
影響:
230條數據,明顯錯誤。
2、結合路徑搜索和屬性搜索(推薦)
首先,您需要知道帖子拼圖的標簽。您只需要收錄帖子這部分內容的標簽即可。
從圖中我們可以知道帖子的信息在li標簽中,我們想要的數據肯定在li標簽中,解析li標簽
我們可以根據a標簽逐層查找。有一個(gè)問(wèn)題,就是會(huì )出現同一個(gè)標簽,而且兩個(gè)級別相同,那么如何區分,如下圖:
可以看出我們想要的內容在第二個(gè)div標簽下。兩者如何區分,通過(guò)屬性值很容易區分。
語(yǔ)法:
//ul[@id="thread_list"]/li/div/div[@class="col2_right j_threadlist_li_right "]/div/div/a
影響:
語(yǔ)法的寫(xiě)法是自己決定的,只要得到正確的數據即可
3、獲取數據
我們上面所做的只是定位數據所在的標簽,并沒(méi)有真正獲取到值,根據標簽中數據的形式獲取
提供日千萬(wàn)預算,長(cháng)期高價(jià)收wap量,正規無(wú)感廣告,尋站長(cháng)合作共
可以看到a標簽的title屬性的值就是我們想要的數據,中間也有我們想要的值,所以有兩種寫(xiě)法,根據自己的喜好
語(yǔ)法:
寫(xiě)一:
//ul[@id="thread_list"]/li/div/div[@class="col2_right j_threadlist_li_right "]/div/div/a/text()
影響:
寫(xiě)作二:
//ul[@id="thread_list"]/li/div/div[@class="col2_right j_threadlist_li_right "]/div/div/a/@title
影響:
4、寫(xiě)代碼實(shí)現
代碼:
import requests
import time
from lxml import etree
def getHTMLContent(url):
# 偽裝用戶(hù)代理,防反爬
header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36'
}
# 向url發(fā)送get請求
respone = requests.get(url,headers = header)
# 將返回的二進(jìn)制流文件轉化成文本文件
content = respone.text
# 減少一些無(wú)用的標簽的干擾,這個(gè)標簽在html語(yǔ)言是屬于注釋標簽
content = content.replace('', '')
# 將返回的html文本文件轉化成xpath能解析的對象
tree = etree.HTML(content)
# 根據xpath語(yǔ)法獲取內容
titles = tree.xpath('//ul[@id="thread_list"]/li/div/div[@class="col2_right j_threadlist_li_right "]/div/div/a/text()')
# 循環(huán)打印結果
for title in titles:
print(title)
if __name__ =="__main__":
url = "https://tieba.baidu.com/f%3Fkw ... ot%3B
getHTMLContent(url)
結果:
查看全部
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(爬取某個(gè)前端知識分析之不會(huì )網(wǎng)站頁(yè)面的定位與布局
)
介紹
本案例只是為了鞏固Xpath語(yǔ)法的使用,不會(huì )涉及到爬蟲(chóng)知識太深
分析:
一般我們在爬取某個(gè)網(wǎng)站頁(yè)面時(shí),有以下幾個(gè)步驟:
1、獲取爬取目標地址
2、明確需求,即要知道網(wǎng)頁(yè)中獲取哪些數據
3、 明確目標后,通過(guò)相應的解析語(yǔ)法(Xpath)分析網(wǎng)頁(yè)的結構,得到想要的數據
4、寫(xiě)代碼實(shí)現
1、獲取爬取目標地址
以百度貼吧為例:
程序員吧-百度貼吧--程序員之家,全球最大的程序員中文交流區。--Programmer(英文程序員)是從事程序開(kāi)發(fā)和維護的專(zhuān)業(yè)人士。一般來(lái)說(shuō),程序員分為程序員和程序員,但兩者的界限不是很清楚。
2、明確需求
獲取貼吧的每個(gè)帖子的標題,如下圖:

3、使用Xpath解析網(wǎng)頁(yè)結構獲取想要的數據1、通過(guò)瀏覽器工具快速定位到網(wǎng)頁(yè)中需要獲取的數據的標簽位置
1、在網(wǎng)頁(yè)上右鍵,點(diǎn)擊檢查

2、 然后彈出

3、點(diǎn)擊左上角的箭頭標志

4、 鼠標懸停在網(wǎng)頁(yè)的數據上,左邊的顯示會(huì )自動(dòng)跳轉到對應的標簽,既然是獲取文章的標題,那么我們將鼠標懸停在一個(gè)的標題上郵政

定位已定位,但這就是我們想要的嗎?顯然不是,因為這只是定位一個(gè)帖子,顯然不符合我們的需求。我們想要得到整個(gè)網(wǎng)頁(yè)(注意這是一個(gè)網(wǎng)頁(yè),不是網(wǎng)站)所有帖子的標題。
其實(shí)一個(gè)的定位已經(jīng)是一半了,因為其他帖子的tag結構和屬性都是一樣的,不會(huì )有什么區別,做過(guò)前端的兄弟都知道。那么問(wèn)題來(lái)了,既然是一樣的,為什么不直接使用呢?這又是一個(gè)前端知識。其實(shí)網(wǎng)站的大部分布局就像很多拼圖,所以這部分帖子是一體的。在拼圖中,我們現在要找到這塊拼圖。從Xpath語(yǔ)法的角度,我們通過(guò)路徑搜索和屬性值定位來(lái)定位標簽。如果直接用label屬性值來(lái)定位,就可以了,因為一下子就定位到了。顯然不可保,可能會(huì )有更多不需要的數據。
想法:
1、 先搜索路徑,找到存放所有帖子的父標簽
2、由于帖子的標簽結構和屬性值都是一樣的,隨便找一篇帖子分析一下就行了。后面寫(xiě)個(gè)例子看看效果
2.使用Xpath-helper插件驗證Xapth語(yǔ)法是否正確獲取數據
知道了數據的位置,我們就開(kāi)始寫(xiě)Xpath語(yǔ)法來(lái)定位數據,那我們怎么知道我們寫(xiě)的語(yǔ)法是否正確,這個(gè)就用我們的Xpath-helper插件來(lái)驗證。
1、 首先,我們觀(guān)察一下貼吧中一個(gè)網(wǎng)頁(yè)上有多少帖子
不收錄廣告,一共50條,所以只要我們寫(xiě)好語(yǔ)法就可以得到50條帖子的數據是正確的
2、使用插件,點(diǎn)擊右上角拼圖

3、點(diǎn)擊Xpath-helper插件

4、 彈出兩個(gè)框

5、 左邊的框是輸入我們的Xapth語(yǔ)法,右邊是根據語(yǔ)法自動(dòng)獲取的數據
編寫(xiě) Xpath 語(yǔ)法
1、只使用屬性值定位(不推薦)
使用鼠標定位其中一個(gè)帖子
提供日千萬(wàn)預算,長(cháng)期高價(jià)收wap量,正規無(wú)感廣告,尋站長(cháng)合作共
語(yǔ)法:
//a[@class="j_th_tit"]
影響:

可以得到五十條數據,語(yǔ)法正確,為什么不推薦呢,比如我們不使用class屬性而是使用rel屬性
//a[@rel="noreferrer"]
影響:

230條數據,明顯錯誤。
2、結合路徑搜索和屬性搜索(推薦)
首先,您需要知道帖子拼圖的標簽。您只需要收錄帖子這部分內容的標簽即可。
從圖中我們可以知道帖子的信息在li標簽中,我們想要的數據肯定在li標簽中,解析li標簽

我們可以根據a標簽逐層查找。有一個(gè)問(wèn)題,就是會(huì )出現同一個(gè)標簽,而且兩個(gè)級別相同,那么如何區分,如下圖:

可以看出我們想要的內容在第二個(gè)div標簽下。兩者如何區分,通過(guò)屬性值很容易區分。
語(yǔ)法:
//ul[@id="thread_list"]/li/div/div[@class="col2_right j_threadlist_li_right "]/div/div/a
影響:

語(yǔ)法的寫(xiě)法是自己決定的,只要得到正確的數據即可
3、獲取數據
我們上面所做的只是定位數據所在的標簽,并沒(méi)有真正獲取到值,根據標簽中數據的形式獲取
提供日千萬(wàn)預算,長(cháng)期高價(jià)收wap量,正規無(wú)感廣告,尋站長(cháng)合作共
可以看到a標簽的title屬性的值就是我們想要的數據,中間也有我們想要的值,所以有兩種寫(xiě)法,根據自己的喜好
語(yǔ)法:
寫(xiě)一:
//ul[@id="thread_list"]/li/div/div[@class="col2_right j_threadlist_li_right "]/div/div/a/text()
影響:

寫(xiě)作二:
//ul[@id="thread_list"]/li/div/div[@class="col2_right j_threadlist_li_right "]/div/div/a/@title
影響:

4、寫(xiě)代碼實(shí)現
代碼:
import requests
import time
from lxml import etree
def getHTMLContent(url):
# 偽裝用戶(hù)代理,防反爬
header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36'
}
# 向url發(fā)送get請求
respone = requests.get(url,headers = header)
# 將返回的二進(jìn)制流文件轉化成文本文件
content = respone.text
# 減少一些無(wú)用的標簽的干擾,這個(gè)標簽在html語(yǔ)言是屬于注釋標簽
content = content.replace('', '')
# 將返回的html文本文件轉化成xpath能解析的對象
tree = etree.HTML(content)
# 根據xpath語(yǔ)法獲取內容
titles = tree.xpath('//ul[@id="thread_list"]/li/div/div[@class="col2_right j_threadlist_li_right "]/div/div/a/text()')
# 循環(huán)打印結果
for title in titles:
print(title)
if __name__ =="__main__":
url = "https://tieba.baidu.com/f%3Fkw ... ot%3B
getHTMLContent(url)
結果:

網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片( 網(wǎng)絡(luò )上爬行的一直蜘蛛,互聯(lián)網(wǎng)什么是爬蟲(chóng)爬蟲(chóng))
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 72 次瀏覽 ? 2021-11-08 04:07
網(wǎng)絡(luò )上爬行的一直蜘蛛,互聯(lián)網(wǎng)什么是爬蟲(chóng)爬蟲(chóng))
1.什么是爬蟲(chóng)
爬蟲(chóng),或網(wǎng)絡(luò )爬蟲(chóng),可以理解為無(wú)時(shí)無(wú)刻不在網(wǎng)絡(luò )上爬行的蜘蛛?;ヂ?lián)網(wǎng)就像一個(gè)大網(wǎng),爬蟲(chóng)就是在這個(gè)網(wǎng)上爬來(lái)爬去的蜘蛛。如果它遇到資源,那么它會(huì )被爬下來(lái)。你想爬什么?這取決于你來(lái)控制它。比如它在爬一個(gè)網(wǎng)頁(yè),他在這個(gè)網(wǎng)上找到了一條路,其實(shí)就是一個(gè)網(wǎng)頁(yè)的超鏈接,然后就可以爬到另一個(gè)網(wǎng)頁(yè)上獲取數據了。這樣一來(lái),整個(gè)相連的網(wǎng)都在這只蜘蛛的觸手可及的范圍內,分分鐘爬下來(lái)也不成問(wèn)題。
2.瀏覽網(wǎng)頁(yè)的過(guò)程
當用戶(hù)瀏覽網(wǎng)頁(yè)時(shí),我們可能會(huì )看到很多漂亮的圖片,比如我們會(huì )看到幾張圖片和百度搜索框。這個(gè)過(guò)程其實(shí)就是用戶(hù)輸入URL,通過(guò)DNS服務(wù)器找到服務(wù)器主機之后。向服務(wù)器發(fā)送請求。服務(wù)器解析后,將瀏覽器的HTML、JS、CSS等文件發(fā)送給用戶(hù)。瀏覽器解析出來(lái),用戶(hù)可以看到各種圖片。因此,用戶(hù)看到的網(wǎng)頁(yè)本質(zhì)上是由HTML代碼組成的,爬蟲(chóng)爬取這個(gè)內容。通過(guò)對這些HTML代碼進(jìn)行分析和過(guò)濾,可以獲得圖片、文字等資源。
3.URL的含義
URL,即統一資源定位符,也就是我們所說(shuō)的網(wǎng)址。統一資源定位符是互聯(lián)網(wǎng)上可用資源的位置和訪(fǎng)問(wèn)方式的簡(jiǎn)明表示,是互聯(lián)網(wǎng)上標準資源的地址。Internet 上的每個(gè)文件都有一個(gè)唯一的 URL,其中收錄指示文件位置以及瀏覽器應如何處理它的信息。
URL 的格式由三部分組成: ① 第一部分是協(xié)議(或稱(chēng)服務(wù)模式)。②第二部分是收錄資源的主機的IP地址(有時(shí)包括端口號)。③第三部分是宿主機資源的具體地址,如目錄、文件名等。
爬蟲(chóng)在爬取數據時(shí),必須要有目標網(wǎng)址才能獲取數據。因此,它是爬蟲(chóng)獲取數據的基本依據。準確理解其含義對爬蟲(chóng)學(xué)習有很大幫助。
4. 環(huán)境配置
學(xué)習Python,環(huán)境配置是必不可少的。一開(kāi)始我用的是Notepad++,但是發(fā)現它的提示功能太弱了,所以我在Windows下使用了PyCharm,Linux下使用了Eclipse for Python。有幾個(gè)優(yōu)秀的IDE,可以參考這個(gè)文章學(xué)習Python推薦的IDE。好的開(kāi)發(fā)工具是一種動(dòng)力。我希望你能找到適合你的 IDE。下一節,我們將正式進(jìn)入Python爬蟲(chóng)學(xué)習的殿堂。你準備好了嗎? 查看全部
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(
網(wǎng)絡(luò )上爬行的一直蜘蛛,互聯(lián)網(wǎng)什么是爬蟲(chóng)爬蟲(chóng))

1.什么是爬蟲(chóng)
爬蟲(chóng),或網(wǎng)絡(luò )爬蟲(chóng),可以理解為無(wú)時(shí)無(wú)刻不在網(wǎng)絡(luò )上爬行的蜘蛛?;ヂ?lián)網(wǎng)就像一個(gè)大網(wǎng),爬蟲(chóng)就是在這個(gè)網(wǎng)上爬來(lái)爬去的蜘蛛。如果它遇到資源,那么它會(huì )被爬下來(lái)。你想爬什么?這取決于你來(lái)控制它。比如它在爬一個(gè)網(wǎng)頁(yè),他在這個(gè)網(wǎng)上找到了一條路,其實(shí)就是一個(gè)網(wǎng)頁(yè)的超鏈接,然后就可以爬到另一個(gè)網(wǎng)頁(yè)上獲取數據了。這樣一來(lái),整個(gè)相連的網(wǎng)都在這只蜘蛛的觸手可及的范圍內,分分鐘爬下來(lái)也不成問(wèn)題。
2.瀏覽網(wǎng)頁(yè)的過(guò)程
當用戶(hù)瀏覽網(wǎng)頁(yè)時(shí),我們可能會(huì )看到很多漂亮的圖片,比如我們會(huì )看到幾張圖片和百度搜索框。這個(gè)過(guò)程其實(shí)就是用戶(hù)輸入URL,通過(guò)DNS服務(wù)器找到服務(wù)器主機之后。向服務(wù)器發(fā)送請求。服務(wù)器解析后,將瀏覽器的HTML、JS、CSS等文件發(fā)送給用戶(hù)。瀏覽器解析出來(lái),用戶(hù)可以看到各種圖片。因此,用戶(hù)看到的網(wǎng)頁(yè)本質(zhì)上是由HTML代碼組成的,爬蟲(chóng)爬取這個(gè)內容。通過(guò)對這些HTML代碼進(jìn)行分析和過(guò)濾,可以獲得圖片、文字等資源。
3.URL的含義
URL,即統一資源定位符,也就是我們所說(shuō)的網(wǎng)址。統一資源定位符是互聯(lián)網(wǎng)上可用資源的位置和訪(fǎng)問(wèn)方式的簡(jiǎn)明表示,是互聯(lián)網(wǎng)上標準資源的地址。Internet 上的每個(gè)文件都有一個(gè)唯一的 URL,其中收錄指示文件位置以及瀏覽器應如何處理它的信息。
URL 的格式由三部分組成: ① 第一部分是協(xié)議(或稱(chēng)服務(wù)模式)。②第二部分是收錄資源的主機的IP地址(有時(shí)包括端口號)。③第三部分是宿主機資源的具體地址,如目錄、文件名等。
爬蟲(chóng)在爬取數據時(shí),必須要有目標網(wǎng)址才能獲取數據。因此,它是爬蟲(chóng)獲取數據的基本依據。準確理解其含義對爬蟲(chóng)學(xué)習有很大幫助。
4. 環(huán)境配置
學(xué)習Python,環(huán)境配置是必不可少的。一開(kāi)始我用的是Notepad++,但是發(fā)現它的提示功能太弱了,所以我在Windows下使用了PyCharm,Linux下使用了Eclipse for Python。有幾個(gè)優(yōu)秀的IDE,可以參考這個(gè)文章學(xué)習Python推薦的IDE。好的開(kāi)發(fā)工具是一種動(dòng)力。我希望你能找到適合你的 IDE。下一節,我們將正式進(jìn)入Python爬蟲(chóng)學(xué)習的殿堂。你準備好了嗎?
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(淺談一下爬蟲(chóng)什么是爬蟲(chóng)?(二):請求網(wǎng)站并提取數據的自動(dòng)化程序)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 81 次瀏覽 ? 2021-11-07 19:27
前言
爬蟲(chóng)是一項非常有趣的技術(shù)。您可以使用爬蟲(chóng)技術(shù)來(lái)獲取其他人無(wú)法獲得或需要付費的東西。您還可以自動(dòng)抓取并保存大量數據,減少手動(dòng)完成一些繁瑣任務(wù)的時(shí)間和精力。
可以說(shuō)學(xué)編程的人很多,不玩爬蟲(chóng)的意義就少了很多。無(wú)論是業(yè)余愛(ài)好者、私人工作還是專(zhuān)業(yè)爬行動(dòng)物,爬行動(dòng)物世界都非常令人興奮。
今天給大家講一下爬蟲(chóng),目的是讓準備學(xué)習爬蟲(chóng)或者剛入門(mén)的人對爬蟲(chóng)有更深入、更全面的了解。
一、認識爬蟲(chóng)
1.什么是爬蟲(chóng)?
一句話(huà)介紹著(zhù)名的爬蟲(chóng):一個(gè)請求網(wǎng)站并提取數據的自動(dòng)化程序。
下面我們來(lái)拆解了解一下爬蟲(chóng):
網(wǎng)站的請求就是向網(wǎng)站發(fā)送請求。比如去百度搜索關(guān)鍵詞“Python”。這時(shí),我們的瀏覽器會(huì )向網(wǎng)站發(fā)送請求;
提取數據。數據包括圖片、文字、視頻等,統稱(chēng)為數據。我們發(fā)送請求后,網(wǎng)站 會(huì )將搜索結果呈現給我們。這實(shí)際上是返回數據。這時(shí)候我們可以查看數據來(lái)提取
自動(dòng)化的程序,也就是我們寫(xiě)的代碼,實(shí)現了過(guò)程數據的自動(dòng)提取,比如批量下載和保存返回的圖片,而不是手動(dòng)一一操作。
2. 爬蟲(chóng)分類(lèi)
根據使用場(chǎng)景,爬蟲(chóng)可以分為三類(lèi):
?、偃f(wàn)向履帶(大而全)
它具有強大的功能和廣泛的采集。它通常用于搜索引擎。比如百度瀏覽器就是一個(gè)大爬蟲(chóng)程序。
?、陉P(guān)注爬蟲(chóng)(小而精)
功能比較單一,只抓取特定網(wǎng)站的特定內容。比如去一個(gè)網(wǎng)站批量獲取一些數據。這也是我們最常用的爬蟲(chóng)。
?、墼隽颗老x(chóng)(僅采集更新內容)
這實(shí)際上是 Focused Crawler 的一個(gè)迭代爬蟲(chóng)。它只采集 更新數據。對于舊數據,它不是采集,相當于一直存在和運行。只要有符合要求的更新數據,就會(huì )自動(dòng)抓取新數據。
3.機器人協(xié)議
爬蟲(chóng)中有一個(gè)叫做Robots的協(xié)議需要注意,也稱(chēng)為“網(wǎng)絡(luò )爬蟲(chóng)排除標準”。它的作用是網(wǎng)站告訴你什么可以爬,什么不能爬。
在哪里看這個(gè)機器人協(xié)議?
一般情況下,可以直接在網(wǎng)站的首頁(yè)URL后添加/robots.txt進(jìn)行查看。例如,百度的機器人協(xié)議就在那里??梢钥吹接泻芏郩RL是規定不能爬取的,比如Disallow:/shifen/ 說(shuō)明目前Disallow:/shifen和Disallow:/shifen下的子目錄是不能爬取的。
實(shí)際上,這份Robots協(xié)議屬于君子協(xié)議。對于爬蟲(chóng)來(lái)說(shuō),基本上是口頭約定。如果你違反了它,你可能會(huì )被追究責任。但是,如果你不違反它,爬蟲(chóng)將無(wú)法抓取任何數據,所以通常雙方都視而不見(jiàn),只是不要太囂張。
二、爬取的基本過(guò)程
1.爬行4步
爬行動(dòng)物是如何工作的?
爬蟲(chóng)程序大致可以分為四個(gè)步驟:
?、侔l(fā)起請求
通過(guò)HTTP庫向目標站點(diǎn)發(fā)起請求,即發(fā)送一個(gè)Request,可以收錄額外的headers等信息,等待服務(wù)器響應。
?、讷@取回復內容
如果服務(wù)器可以正常響應,就會(huì )得到一個(gè)Response。Response的內容就是要獲取的頁(yè)面的內容。類(lèi)型可能包括 HTML、Json 字符串和二進(jìn)制數據(如圖片和視頻)。
?、蹆热莘治?br /> 獲取的內容可能是HTML,可以使用正則表達式和網(wǎng)頁(yè)解析庫進(jìn)行解析??赡苁荍son,可以直接轉成Json對象解析,也可能是二進(jìn)制數據,可以保存或者進(jìn)一步處理。
?、鼙4鏀祿?br /> 保存的數據有多種類(lèi)型,可以保存為文本、保存到數據庫或保存為特定格式的文件。
基本上,這是爬蟲(chóng)必須遵循的四個(gè)步驟。
2.請求和響應
請求和響應是爬蟲(chóng)最重要的部分。請求和響應之間是什么關(guān)系?
兩者的關(guān)系如下:
簡(jiǎn)單理解一下,當我們在電腦瀏覽器上搜索東西的時(shí)候,比如前面提到的在百度搜索“Python”,你點(diǎn)擊百度,已經(jīng)向百度的服務(wù)器發(fā)送了一個(gè)Request請求,Request中收錄很多信息,比如如身份信息、請求信息等,服務(wù)器收到請求后做出判斷,然后返回一個(gè)Response給我們的電腦,里面也收錄了很多信息,比如請求成功,比如我們請求的信息結果(文本、圖片、視頻等)。
應該很容易理解吧?
接下來(lái),讓我們仔細看看請求和響應。
三、了解RequestRequest中收錄什么?
它主要收錄以下內容:
1.請求方法
請求方法可以理解為你向網(wǎng)站問(wèn)好的方式。如果你從網(wǎng)站那里得到數據,你要以正確的方式迎接它,這樣它才能回應你,就像你從別人家借東西一樣,你要先敲門(mén)再說(shuō)你好??梢灾苯优郎洗皯?hù)進(jìn)去,看到的人必須出去。
主要的請求方法是GET和POST,還有其他方法如HEAD/PUT/DELETE/OPTIONS,最常用的方法是GET。
2.請求網(wǎng)址
什么是網(wǎng)址?
URL的全稱(chēng)是Uniform Resource Locator。例如,一個(gè)網(wǎng)頁(yè)文檔、圖片、視頻等都有一個(gè)唯一的網(wǎng)址,可以理解為爬蟲(chóng)中的網(wǎng)址或鏈接。
3.請求頭
請求頭是什么?
英文名稱(chēng)Request Headers通常是指請求中收錄的頭信息,如User-Agent、Host、Cookies等。
當你向網(wǎng)站發(fā)送請求時(shí),這些東西就相當于你的身份信息。經(jīng)常需要偽裝自己,偽裝成普通用戶(hù)來(lái)躲避你的目標。網(wǎng)站 識別你是爬蟲(chóng),避免一些反扒問(wèn)題,順利獲取數據。
4.請求正文
官方說(shuō)法是請求中攜帶的附加數據,例如提交表單時(shí)的表單數據。
在爬蟲(chóng)中如何理解?
例如,在某些頁(yè)面上,您必須先登錄,或者您必須告訴我您的請求。比如你在百度頁(yè)面搜索“Python”,那么關(guān)鍵詞“Python”就是你要攜帶的請求體,看到你的請求體,看到百度就知道你要做什么了。
當然,請求體通常用在 POST 請求方法中。GET 請求時(shí),我們通常將其拼接在 URL 中。先了解一下就夠了,后續具體爬蟲(chóng)可以去加深了解。
5.實(shí)用視圖請求
既然我們已經(jīng)講了Request的理論,那我們就可以進(jìn)入實(shí)際操作,看看Request在哪里,收錄什么。
以谷歌瀏覽器為例,我輸入關(guān)鍵詞“Python”就可以搜索到一堆結果。我們使用網(wǎng)頁(yè)自帶的控制臺窗口來(lái)分析我們發(fā)送的Request請求。
按住F12或者在網(wǎng)頁(yè)空白處右擊選擇“檢查”,然后就可以看到控制臺里有很多選項了。例如,上列有一個(gè)菜單欄。初級爬蟲(chóng)一般使用元素(Elements)。還有Network(網(wǎng)絡(luò )),其他的東西暫時(shí)不需要,等你學(xué)習更高級一點(diǎn)的爬蟲(chóng)時(shí)會(huì )用到,比如JS逆向工程可能會(huì )用到Application窗口,以后再學(xué)習。
Elements 收錄了所有請求結果的每一個(gè)元素,比如每張圖片的源代碼,尤其是點(diǎn)擊左上角的小箭頭,你移動(dòng)到的每一個(gè)地方都會(huì )在 Elements 窗口下顯示為源代碼。
網(wǎng)絡(luò )是爬蟲(chóng)常用的網(wǎng)絡(luò )信息。其中包括我們的請求。讓我們來(lái)看看。在“網(wǎng)絡(luò )”窗口下,選中“禁用緩存”并單擊“全部”。
刷新網(wǎng)頁(yè)看看效果。您可以看到我們發(fā)送了 132 個(gè)請求請求。不要對這個(gè)好奇。雖然我們只向百度發(fā)送了類(lèi)似“Python”這樣的請求,但其中一些是附加到網(wǎng)頁(yè)的請求。
雖然圖片格式有很多種,比如png、jpeg等,但是可以滑動(dòng)到頂部。在Type欄中,有文檔類(lèi)型,即web文檔的含義。點(diǎn)擊進(jìn)入,我們將是我們的。索取資料。
點(diǎn)擊文檔進(jìn)入后,有一個(gè)新的菜單欄。在Headers列下,我們可以看到Request URL,也就是我們之前提到的請求URL。這個(gè)URL就是我們實(shí)際從網(wǎng)頁(yè)請求的URL,然后返回 有一個(gè)請求方法,可以看出是一個(gè)GET請求。
如果再次向下滑動(dòng),還可以看到我們之前提到的 Request Headers。信息很多,但是我們前面提到的User-Agent、Host、Cookies都是我們提供給服務(wù)器的信息。
雖然Request Headers里面的內容很多,我們在寫(xiě)爬蟲(chóng)程序的時(shí)候也要做這方面的偽裝工作,但是不是所有的信息都要寫(xiě),有選擇的寫(xiě)一些重要的信息就足夠了,比如User-Agent必需的。Referer 和 Host 是可選區域。登錄時(shí)會(huì )攜帶cookies,常見(jiàn)的有4種需要偽裝。
至于請求體,我暫時(shí)不去查了,因為我們這里的請求方法是GET請求。請求正文只能在 POST 請求中查看。沒(méi)關(guān)系,爬蟲(chóng)什么時(shí)候用你自然就明白了。
四、了解響應
Response 主要包括 3 條內容,我們來(lái)一一看看。
1.響應狀態(tài)
我們發(fā)送請求后,網(wǎng)站會(huì )返回給我們一個(gè)Response,其中收錄響應狀態(tài)碼的響應狀態(tài),大致可以分為以下幾種:
?、倮缭?00以?xún)?,響應狀態(tài)碼200表示成功。
?、谌俚姆秶?,比如301就是跳躍。
?、鬯陌俜秶鷥?,如404找不到頁(yè)面。
?、芪灏俜秶鷥?,如502找不到頁(yè)面。
對于爬蟲(chóng)來(lái)說(shuō),兩三百是我們最想看到的響應狀態(tài),有可能獲取到數據,而四五百基本是冷的,獲取不到數據。
比如我們剛剛發(fā)送了之前的Request請求時(shí),在文檔文件中,在Headers窗口下的General中,可以看到響應狀態(tài)碼為200,表示網(wǎng)頁(yè)成功響應了我們的請求。
2. 響應頭
服務(wù)器給我們的信息也會(huì )收錄響應頭,其中包括內容類(lèi)型、內容長(cháng)度、服務(wù)器信息、設置cookies等。
其實(shí)響應頭對我們來(lái)說(shuō)并沒(méi)有那么重要,在這里了解一下就行了。
3.響應體
這一點(diǎn)很重要,除了上面第一點(diǎn)的響應狀態(tài),就是它,因為它收錄了請求資源的內容,比如網(wǎng)頁(yè)HTML和圖像二進(jìn)制數。
響應體在哪里?它也在文檔文件的響應列中??梢韵蛳禄瑒?dòng),看到有很多響應數據。這是我們得到的數據。有些可以直接下載,有些需要技術(shù)分析。知道了。
五、爬蟲(chóng)能得到什么樣的數據?
爬蟲(chóng)能得到什么樣的數據?基本上可以分為以下幾類(lèi):
?、?Web 文檔,如 HTML 文檔、Json 格式的文本等。
?、趫D片以二進(jìn)制文件形式獲取,可以保存為圖片格式。
?、垡曨l,也是二進(jìn)制文件,可以保存為視頻格式。
?、芷渌?,反正其他能看到的東西理論上爬蟲(chóng)都能得到,看難易程度。
六、如何解析數據?
從前面我們可以成功發(fā)送請求,網(wǎng)頁(yè)會(huì )返回給我們很多數據,有幾千甚至幾萬(wàn)個(gè)代碼,那么如何在這么多代碼中找到我們想要的數據呢?常用的方法如下:
?、僦苯又委?。當網(wǎng)頁(yè)返回的數據是一些文本時(shí),就是我們想要的內容,不需要過(guò)濾處理,直接處理即可。
?、贘son分析。如果返回的網(wǎng)頁(yè)不是HTML數據而是Json數據,則需要Json解析技術(shù)。
?、壅齽t表達式。如果返回的數據是符合正則表達式的數據,可以使用正則表達式進(jìn)行分析。
?、芷渌治龇椒?。常用的有XPath、BeautifulSoup、PyQuery,都是爬蟲(chóng)常用的解析庫。
七、如何保存數據?
獲取數據后,常用的保存數據的方法如下:
?、傥淖???梢灾苯颖4鏋榧兾谋?、EXCEL、Json、Xml等類(lèi)型的文本。
?、陉P(guān)系數據庫。數據可以保存到關(guān)系型數據庫,如MySQL和Oracle數據庫。
?、鄯顷P(guān)系型數據庫。比如MongoDB、Readis和Key-Value存儲。
?、?二進(jìn)制文件。比如圖片、視頻、音頻等可以直接保存為特定格式。
練習視頻: 查看全部
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(淺談一下爬蟲(chóng)什么是爬蟲(chóng)?(二):請求網(wǎng)站并提取數據的自動(dòng)化程序)
前言
爬蟲(chóng)是一項非常有趣的技術(shù)。您可以使用爬蟲(chóng)技術(shù)來(lái)獲取其他人無(wú)法獲得或需要付費的東西。您還可以自動(dòng)抓取并保存大量數據,減少手動(dòng)完成一些繁瑣任務(wù)的時(shí)間和精力。
可以說(shuō)學(xué)編程的人很多,不玩爬蟲(chóng)的意義就少了很多。無(wú)論是業(yè)余愛(ài)好者、私人工作還是專(zhuān)業(yè)爬行動(dòng)物,爬行動(dòng)物世界都非常令人興奮。
今天給大家講一下爬蟲(chóng),目的是讓準備學(xué)習爬蟲(chóng)或者剛入門(mén)的人對爬蟲(chóng)有更深入、更全面的了解。
一、認識爬蟲(chóng)
1.什么是爬蟲(chóng)?
一句話(huà)介紹著(zhù)名的爬蟲(chóng):一個(gè)請求網(wǎng)站并提取數據的自動(dòng)化程序。
下面我們來(lái)拆解了解一下爬蟲(chóng):
網(wǎng)站的請求就是向網(wǎng)站發(fā)送請求。比如去百度搜索關(guān)鍵詞“Python”。這時(shí),我們的瀏覽器會(huì )向網(wǎng)站發(fā)送請求;
提取數據。數據包括圖片、文字、視頻等,統稱(chēng)為數據。我們發(fā)送請求后,網(wǎng)站 會(huì )將搜索結果呈現給我們。這實(shí)際上是返回數據。這時(shí)候我們可以查看數據來(lái)提取
自動(dòng)化的程序,也就是我們寫(xiě)的代碼,實(shí)現了過(guò)程數據的自動(dòng)提取,比如批量下載和保存返回的圖片,而不是手動(dòng)一一操作。

2. 爬蟲(chóng)分類(lèi)
根據使用場(chǎng)景,爬蟲(chóng)可以分為三類(lèi):
?、偃f(wàn)向履帶(大而全)
它具有強大的功能和廣泛的采集。它通常用于搜索引擎。比如百度瀏覽器就是一個(gè)大爬蟲(chóng)程序。
?、陉P(guān)注爬蟲(chóng)(小而精)
功能比較單一,只抓取特定網(wǎng)站的特定內容。比如去一個(gè)網(wǎng)站批量獲取一些數據。這也是我們最常用的爬蟲(chóng)。
?、墼隽颗老x(chóng)(僅采集更新內容)
這實(shí)際上是 Focused Crawler 的一個(gè)迭代爬蟲(chóng)。它只采集 更新數據。對于舊數據,它不是采集,相當于一直存在和運行。只要有符合要求的更新數據,就會(huì )自動(dòng)抓取新數據。

3.機器人協(xié)議
爬蟲(chóng)中有一個(gè)叫做Robots的協(xié)議需要注意,也稱(chēng)為“網(wǎng)絡(luò )爬蟲(chóng)排除標準”。它的作用是網(wǎng)站告訴你什么可以爬,什么不能爬。
在哪里看這個(gè)機器人協(xié)議?
一般情況下,可以直接在網(wǎng)站的首頁(yè)URL后添加/robots.txt進(jìn)行查看。例如,百度的機器人協(xié)議就在那里??梢钥吹接泻芏郩RL是規定不能爬取的,比如Disallow:/shifen/ 說(shuō)明目前Disallow:/shifen和Disallow:/shifen下的子目錄是不能爬取的。

實(shí)際上,這份Robots協(xié)議屬于君子協(xié)議。對于爬蟲(chóng)來(lái)說(shuō),基本上是口頭約定。如果你違反了它,你可能會(huì )被追究責任。但是,如果你不違反它,爬蟲(chóng)將無(wú)法抓取任何數據,所以通常雙方都視而不見(jiàn),只是不要太囂張。

二、爬取的基本過(guò)程
1.爬行4步
爬行動(dòng)物是如何工作的?
爬蟲(chóng)程序大致可以分為四個(gè)步驟:
?、侔l(fā)起請求
通過(guò)HTTP庫向目標站點(diǎn)發(fā)起請求,即發(fā)送一個(gè)Request,可以收錄額外的headers等信息,等待服務(wù)器響應。
?、讷@取回復內容
如果服務(wù)器可以正常響應,就會(huì )得到一個(gè)Response。Response的內容就是要獲取的頁(yè)面的內容。類(lèi)型可能包括 HTML、Json 字符串和二進(jìn)制數據(如圖片和視頻)。
?、蹆热莘治?br /> 獲取的內容可能是HTML,可以使用正則表達式和網(wǎng)頁(yè)解析庫進(jìn)行解析??赡苁荍son,可以直接轉成Json對象解析,也可能是二進(jìn)制數據,可以保存或者進(jìn)一步處理。
?、鼙4鏀祿?br /> 保存的數據有多種類(lèi)型,可以保存為文本、保存到數據庫或保存為特定格式的文件。
基本上,這是爬蟲(chóng)必須遵循的四個(gè)步驟。
2.請求和響應
請求和響應是爬蟲(chóng)最重要的部分。請求和響應之間是什么關(guān)系?
兩者的關(guān)系如下:

簡(jiǎn)單理解一下,當我們在電腦瀏覽器上搜索東西的時(shí)候,比如前面提到的在百度搜索“Python”,你點(diǎn)擊百度,已經(jīng)向百度的服務(wù)器發(fā)送了一個(gè)Request請求,Request中收錄很多信息,比如如身份信息、請求信息等,服務(wù)器收到請求后做出判斷,然后返回一個(gè)Response給我們的電腦,里面也收錄了很多信息,比如請求成功,比如我們請求的信息結果(文本、圖片、視頻等)。
應該很容易理解吧?
接下來(lái),讓我們仔細看看請求和響應。
三、了解RequestRequest中收錄什么?
它主要收錄以下內容:
1.請求方法
請求方法可以理解為你向網(wǎng)站問(wèn)好的方式。如果你從網(wǎng)站那里得到數據,你要以正確的方式迎接它,這樣它才能回應你,就像你從別人家借東西一樣,你要先敲門(mén)再說(shuō)你好??梢灾苯优郎洗皯?hù)進(jìn)去,看到的人必須出去。
主要的請求方法是GET和POST,還有其他方法如HEAD/PUT/DELETE/OPTIONS,最常用的方法是GET。
2.請求網(wǎng)址
什么是網(wǎng)址?
URL的全稱(chēng)是Uniform Resource Locator。例如,一個(gè)網(wǎng)頁(yè)文檔、圖片、視頻等都有一個(gè)唯一的網(wǎng)址,可以理解為爬蟲(chóng)中的網(wǎng)址或鏈接。
3.請求頭
請求頭是什么?
英文名稱(chēng)Request Headers通常是指請求中收錄的頭信息,如User-Agent、Host、Cookies等。
當你向網(wǎng)站發(fā)送請求時(shí),這些東西就相當于你的身份信息。經(jīng)常需要偽裝自己,偽裝成普通用戶(hù)來(lái)躲避你的目標。網(wǎng)站 識別你是爬蟲(chóng),避免一些反扒問(wèn)題,順利獲取數據。
4.請求正文
官方說(shuō)法是請求中攜帶的附加數據,例如提交表單時(shí)的表單數據。
在爬蟲(chóng)中如何理解?
例如,在某些頁(yè)面上,您必須先登錄,或者您必須告訴我您的請求。比如你在百度頁(yè)面搜索“Python”,那么關(guān)鍵詞“Python”就是你要攜帶的請求體,看到你的請求體,看到百度就知道你要做什么了。
當然,請求體通常用在 POST 請求方法中。GET 請求時(shí),我們通常將其拼接在 URL 中。先了解一下就夠了,后續具體爬蟲(chóng)可以去加深了解。
5.實(shí)用視圖請求
既然我們已經(jīng)講了Request的理論,那我們就可以進(jìn)入實(shí)際操作,看看Request在哪里,收錄什么。
以谷歌瀏覽器為例,我輸入關(guān)鍵詞“Python”就可以搜索到一堆結果。我們使用網(wǎng)頁(yè)自帶的控制臺窗口來(lái)分析我們發(fā)送的Request請求。
按住F12或者在網(wǎng)頁(yè)空白處右擊選擇“檢查”,然后就可以看到控制臺里有很多選項了。例如,上列有一個(gè)菜單欄。初級爬蟲(chóng)一般使用元素(Elements)。還有Network(網(wǎng)絡(luò )),其他的東西暫時(shí)不需要,等你學(xué)習更高級一點(diǎn)的爬蟲(chóng)時(shí)會(huì )用到,比如JS逆向工程可能會(huì )用到Application窗口,以后再學(xué)習。
Elements 收錄了所有請求結果的每一個(gè)元素,比如每張圖片的源代碼,尤其是點(diǎn)擊左上角的小箭頭,你移動(dòng)到的每一個(gè)地方都會(huì )在 Elements 窗口下顯示為源代碼。

網(wǎng)絡(luò )是爬蟲(chóng)常用的網(wǎng)絡(luò )信息。其中包括我們的請求。讓我們來(lái)看看。在“網(wǎng)絡(luò )”窗口下,選中“禁用緩存”并單擊“全部”。

刷新網(wǎng)頁(yè)看看效果。您可以看到我們發(fā)送了 132 個(gè)請求請求。不要對這個(gè)好奇。雖然我們只向百度發(fā)送了類(lèi)似“Python”這樣的請求,但其中一些是附加到網(wǎng)頁(yè)的請求。

雖然圖片格式有很多種,比如png、jpeg等,但是可以滑動(dòng)到頂部。在Type欄中,有文檔類(lèi)型,即web文檔的含義。點(diǎn)擊進(jìn)入,我們將是我們的。索取資料。

點(diǎn)擊文檔進(jìn)入后,有一個(gè)新的菜單欄。在Headers列下,我們可以看到Request URL,也就是我們之前提到的請求URL。這個(gè)URL就是我們實(shí)際從網(wǎng)頁(yè)請求的URL,然后返回 有一個(gè)請求方法,可以看出是一個(gè)GET請求。

如果再次向下滑動(dòng),還可以看到我們之前提到的 Request Headers。信息很多,但是我們前面提到的User-Agent、Host、Cookies都是我們提供給服務(wù)器的信息。

雖然Request Headers里面的內容很多,我們在寫(xiě)爬蟲(chóng)程序的時(shí)候也要做這方面的偽裝工作,但是不是所有的信息都要寫(xiě),有選擇的寫(xiě)一些重要的信息就足夠了,比如User-Agent必需的。Referer 和 Host 是可選區域。登錄時(shí)會(huì )攜帶cookies,常見(jiàn)的有4種需要偽裝。
至于請求體,我暫時(shí)不去查了,因為我們這里的請求方法是GET請求。請求正文只能在 POST 請求中查看。沒(méi)關(guān)系,爬蟲(chóng)什么時(shí)候用你自然就明白了。
四、了解響應
Response 主要包括 3 條內容,我們來(lái)一一看看。
1.響應狀態(tài)
我們發(fā)送請求后,網(wǎng)站會(huì )返回給我們一個(gè)Response,其中收錄響應狀態(tài)碼的響應狀態(tài),大致可以分為以下幾種:
?、倮缭?00以?xún)?,響應狀態(tài)碼200表示成功。
?、谌俚姆秶?,比如301就是跳躍。
?、鬯陌俜秶鷥?,如404找不到頁(yè)面。
?、芪灏俜秶鷥?,如502找不到頁(yè)面。
對于爬蟲(chóng)來(lái)說(shuō),兩三百是我們最想看到的響應狀態(tài),有可能獲取到數據,而四五百基本是冷的,獲取不到數據。
比如我們剛剛發(fā)送了之前的Request請求時(shí),在文檔文件中,在Headers窗口下的General中,可以看到響應狀態(tài)碼為200,表示網(wǎng)頁(yè)成功響應了我們的請求。
2. 響應頭
服務(wù)器給我們的信息也會(huì )收錄響應頭,其中包括內容類(lèi)型、內容長(cháng)度、服務(wù)器信息、設置cookies等。
其實(shí)響應頭對我們來(lái)說(shuō)并沒(méi)有那么重要,在這里了解一下就行了。
3.響應體
這一點(diǎn)很重要,除了上面第一點(diǎn)的響應狀態(tài),就是它,因為它收錄了請求資源的內容,比如網(wǎng)頁(yè)HTML和圖像二進(jìn)制數。
響應體在哪里?它也在文檔文件的響應列中??梢韵蛳禄瑒?dòng),看到有很多響應數據。這是我們得到的數據。有些可以直接下載,有些需要技術(shù)分析。知道了。
五、爬蟲(chóng)能得到什么樣的數據?
爬蟲(chóng)能得到什么樣的數據?基本上可以分為以下幾類(lèi):
?、?Web 文檔,如 HTML 文檔、Json 格式的文本等。
?、趫D片以二進(jìn)制文件形式獲取,可以保存為圖片格式。
?、垡曨l,也是二進(jìn)制文件,可以保存為視頻格式。
?、芷渌?,反正其他能看到的東西理論上爬蟲(chóng)都能得到,看難易程度。
六、如何解析數據?
從前面我們可以成功發(fā)送請求,網(wǎng)頁(yè)會(huì )返回給我們很多數據,有幾千甚至幾萬(wàn)個(gè)代碼,那么如何在這么多代碼中找到我們想要的數據呢?常用的方法如下:
?、僦苯又委?。當網(wǎng)頁(yè)返回的數據是一些文本時(shí),就是我們想要的內容,不需要過(guò)濾處理,直接處理即可。
?、贘son分析。如果返回的網(wǎng)頁(yè)不是HTML數據而是Json數據,則需要Json解析技術(shù)。
?、壅齽t表達式。如果返回的數據是符合正則表達式的數據,可以使用正則表達式進(jìn)行分析。
?、芷渌治龇椒?。常用的有XPath、BeautifulSoup、PyQuery,都是爬蟲(chóng)常用的解析庫。
七、如何保存數據?
獲取數據后,常用的保存數據的方法如下:
?、傥淖???梢灾苯颖4鏋榧兾谋?、EXCEL、Json、Xml等類(lèi)型的文本。
?、陉P(guān)系數據庫。數據可以保存到關(guān)系型數據庫,如MySQL和Oracle數據庫。
?、鄯顷P(guān)系型數據庫。比如MongoDB、Readis和Key-Value存儲。
?、?二進(jìn)制文件。比如圖片、視頻、音頻等可以直接保存為特定格式。
練習視頻:
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(什么是網(wǎng)絡(luò )爬蟲(chóng)?向日葵智能實(shí)戰小項目)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 59 次瀏覽 ? 2021-11-07 08:00
原帖:向日葵智能
現在基于python的爬蟲(chóng)實(shí)戰項目,網(wǎng)上資料還是很多的,但是本節介紹的爬蟲(chóng)略有不同:同樣是下載某個(gè)網(wǎng)頁(yè)的漂亮圖片,不同的是我們使用人工智能過(guò)濾掉漂亮的。. 慢慢說(shuō)爬蟲(chóng)吧。過(guò)濾的原理很簡(jiǎn)單。參考python實(shí)戰項目,人臉檢測,讓電腦給你的外表打分。
什么是網(wǎng)絡(luò )爬蟲(chóng)?
網(wǎng)絡(luò )爬蟲(chóng)也稱(chēng)為網(wǎng)絡(luò )蜘蛛。它的官方定義可以在百科全書(shū)中找到。這里我們只說(shuō)什么是網(wǎng)絡(luò )爬蟲(chóng),可能不準確,但相對來(lái)說(shuō)比較好理解,舉個(gè)例子吧。
有時(shí),您可能會(huì )從某個(gè)網(wǎng)頁(yè)上看到一條信息,并覺(jué)得它符合您的口味,因此您將其保存。這種讀取和存儲數據的過(guò)程類(lèi)似于網(wǎng)絡(luò )爬蟲(chóng)。百度、谷歌等搜索引擎,相信大家都用過(guò),他們是怎么實(shí)現搜索功能的?
事實(shí)上,這一切都取決于爬蟲(chóng)。他們的網(wǎng)絡(luò )爬蟲(chóng)不斷地爬取互聯(lián)網(wǎng)上的信息,并保存他們認為有用的信息。當用戶(hù)輸入關(guān)鍵詞進(jìn)行搜索時(shí),百度谷歌將關(guān)鍵詞與自己的數據庫進(jìn)行匹配,匹配最相關(guān)的網(wǎng)頁(yè)展示給用戶(hù),從而完成一次搜索。
再設想一個(gè)場(chǎng)景:有一天,你可能會(huì )看到某個(gè)網(wǎng)站的很多信息非常好,一個(gè)個(gè)打開(kāi)和存儲網(wǎng)頁(yè)真的很麻煩。那么這時(shí)候就可以使用網(wǎng)絡(luò )爬蟲(chóng)爬下整個(gè)網(wǎng)站的信息了。這也是爬蟲(chóng)的一個(gè)目的。
Python實(shí)戰項目
經(jīng)過(guò)上面的解釋?zhuān)覀兛梢灾谰W(wǎng)絡(luò )爬蟲(chóng)的行為和我們?yōu)g覽器的行為非常相似。所以,這里介紹的python網(wǎng)絡(luò )爬蟲(chóng)其實(shí)就是模擬一個(gè)瀏覽器。
上圖是一組圖片。如果我們要保存這些圖片,要一一保存就太麻煩了。貌似迅雷可以下載所有的鏈接,但它也會(huì )下載不該下載的,比如紅框里的怪人。
右鍵查看網(wǎng)頁(yè)源碼:
我們得到的字符很多,我們只關(guān)心圖片鏈接,打開(kāi)上圖紅框中的鏈接,得到的圖片如下:
明明圖片的鏈接在網(wǎng)頁(yè)的源碼里,那么這個(gè)python實(shí)戰項目,網(wǎng)絡(luò )爬蟲(chóng)怎么寫(xiě)呢?
Python實(shí)戰項目,網(wǎng)絡(luò )爬蟲(chóng)1. 先獲取網(wǎng)頁(yè)源碼
其實(shí)就是模擬瀏覽器請求圖片頁(yè)面的URL。話(huà)不多說(shuō),看源碼,很簡(jiǎn)單
#coding:utf-8
import requests
# url 即為圖片網(wǎng)頁(yè)的網(wǎng)址
url = "https://image.baidu.com/search ... mp%3B【...】"
data = requests.get(url)
print data.content
Python
復制
運行后會(huì )發(fā)現我們剛才在瀏覽器中查看的源代碼已經(jīng)打印出來(lái)了。
2. Python項目實(shí)戰,提取圖片鏈接
如何從大量字符中提取關(guān)鍵美女圖片鏈接?答案是使用正則表達式。關(guān)于正則表達式,可以參考:
Python基礎,什么是正則表達式,正則表達式的使用
使用正則表達式的第一步是找出鏈接的模式及其出現的位置。這是一個(gè)粗略的嘗試:
注意"objURL":和逗號(,)之間存在鏈接,那么我們的實(shí)戰項目,python網(wǎng)絡(luò )爬蟲(chóng)的正則表達式代碼可以這樣寫(xiě):
#coding:utf-8
import requests
# url 即為圖片網(wǎng)頁(yè)的網(wǎng)址
url = "https://image.baidu.com/search ... mp%3B【...】"
data = requests.get(url)
#print data.content
# 正則表達式的使用,可參照上一節
pattern = re.compile(r'.*?"objURL":"(.*?)",', re.S)
result = pattern.findall(data.content)
for item in result:
print item
Python
復制
運行實(shí)戰項目的python網(wǎng)絡(luò )爬蟲(chóng)腳本,發(fā)現成功了,得到了一系列圖片地址:
3. Python實(shí)戰項目,下載圖片
獲取到圖片的鏈接后,我們如何保存它們?答案是模擬瀏覽器訪(fǎng)問(wèn)一次圖片鏈接,然后將獲取到的數據寫(xiě)入文件。我們直接上傳代碼:
#coding:utf-8
import requests
# url 即為圖片網(wǎng)頁(yè)的網(wǎng)址
url = "https://image.baidu.com/search ... mp%3B【...】"
data = requests.get(url)
#print data.content
# 正則表達式的使用,可參照上一節
pattern = re.compile(r'.*?"objURL":"(.*?)",', re.S)
result = pattern.findall(data.content)
for item in result:
try:
pic = requests.get(item, timeout=2)
fp = open("pic/%d.jpg"%i, "w+")
fp.write(pic.content)
fp.close()
i = i + 1
except Exception, e:
pass
Python
復制
執行代碼前,創(chuàng )建一個(gè)文件夾pic存放圖片,然后執行實(shí)戰項目python腳本得到
這是一個(gè)成功!
4. Python實(shí)戰項目,過(guò)濾圖片
可以看到,雖然圖片被爬下來(lái)了,但并不完美,因為怪人也被下載了。如何過(guò)濾?其實(shí)可以參考我們之前的博客:
Python實(shí)戰小項目,人臉檢測,讓電腦給你的顏值打分。我們只下載女(女),顏值大于55分,代碼如下:
#coding:utf-8
import requests
import urllib2
import random
import time, re
import base64
import urllib, json
from token import GetToken
faceDetectUrl = "https://aip.baidubce.com/rest/ ... ot%3B
# 根據人臉檢測的顏值打分,判斷是否下載
def IfDownLoad(pic, token):
img = base64.b64encode(pic)
params = {
"face_fields":"age,beauty,expression,faceshape,gender,glasses,landmark,race,qualities","image":img,"max_face_num":5}
params = urllib.urlencode(params)
request_url = faceDetectUrl + "?access_token=" + token
request = urllib2.Request(url=request_url, data=params)
request.add_header('Content-Type', 'application/x-www-form-urlencoded')
response = urllib2.urlopen(request)
content = response.read()
if content:
js = json.loads(content)
for item in js['result']:
print "age: %d, beauty: %d" % (item['age'], item['beauty'])
if 0 == cmp('female', item['gender']):
if (item['age']55): # 只下載女孩,年齡小于 29,顏值大于 55分
return True
return False
def DownLoad(url, i):
fp = open("pic/%d.jpg"%i, "w+")
fp.write(pic.content)
fp.close()
if __name__ == "__main__":
# 獲取網(wǎng)頁(yè)源代碼
url = "https://image.baidu.com/search ... mp%3B【...】"
data = requests.get(url)
# print data.content
# 獲取鏈接并判斷是否下載
pattern = re.compile(r'.*?"objURL":"(.*?)",', re.S)
result = pattern.findall(data.content)
i = 0
token = GetToken()
for item in result:
print item
try:
pic = requests.get(item, timeout=2)
if(True == IfDownLoad(pic.content, token)):
DownLoad(pic.content, i)
i = i + 1
except Exception, e:
pass
Python
復制
運行實(shí)戰項目python腳本,結果如??下:
可以看到,怪人都被淘汰了,下載的圖片基本都是顏值高的美圖。這樣我們就完成了實(shí)戰項目,python人工智能爬蟲(chóng)-圖片的選擇性爬取。 查看全部
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(什么是網(wǎng)絡(luò )爬蟲(chóng)?向日葵智能實(shí)戰小項目)
原帖:向日葵智能
現在基于python的爬蟲(chóng)實(shí)戰項目,網(wǎng)上資料還是很多的,但是本節介紹的爬蟲(chóng)略有不同:同樣是下載某個(gè)網(wǎng)頁(yè)的漂亮圖片,不同的是我們使用人工智能過(guò)濾掉漂亮的。. 慢慢說(shuō)爬蟲(chóng)吧。過(guò)濾的原理很簡(jiǎn)單。參考python實(shí)戰項目,人臉檢測,讓電腦給你的外表打分。
什么是網(wǎng)絡(luò )爬蟲(chóng)?
網(wǎng)絡(luò )爬蟲(chóng)也稱(chēng)為網(wǎng)絡(luò )蜘蛛。它的官方定義可以在百科全書(shū)中找到。這里我們只說(shuō)什么是網(wǎng)絡(luò )爬蟲(chóng),可能不準確,但相對來(lái)說(shuō)比較好理解,舉個(gè)例子吧。
有時(shí),您可能會(huì )從某個(gè)網(wǎng)頁(yè)上看到一條信息,并覺(jué)得它符合您的口味,因此您將其保存。這種讀取和存儲數據的過(guò)程類(lèi)似于網(wǎng)絡(luò )爬蟲(chóng)。百度、谷歌等搜索引擎,相信大家都用過(guò),他們是怎么實(shí)現搜索功能的?

事實(shí)上,這一切都取決于爬蟲(chóng)。他們的網(wǎng)絡(luò )爬蟲(chóng)不斷地爬取互聯(lián)網(wǎng)上的信息,并保存他們認為有用的信息。當用戶(hù)輸入關(guān)鍵詞進(jìn)行搜索時(shí),百度谷歌將關(guān)鍵詞與自己的數據庫進(jìn)行匹配,匹配最相關(guān)的網(wǎng)頁(yè)展示給用戶(hù),從而完成一次搜索。
再設想一個(gè)場(chǎng)景:有一天,你可能會(huì )看到某個(gè)網(wǎng)站的很多信息非常好,一個(gè)個(gè)打開(kāi)和存儲網(wǎng)頁(yè)真的很麻煩。那么這時(shí)候就可以使用網(wǎng)絡(luò )爬蟲(chóng)爬下整個(gè)網(wǎng)站的信息了。這也是爬蟲(chóng)的一個(gè)目的。
Python實(shí)戰項目
經(jīng)過(guò)上面的解釋?zhuān)覀兛梢灾谰W(wǎng)絡(luò )爬蟲(chóng)的行為和我們?yōu)g覽器的行為非常相似。所以,這里介紹的python網(wǎng)絡(luò )爬蟲(chóng)其實(shí)就是模擬一個(gè)瀏覽器。

上圖是一組圖片。如果我們要保存這些圖片,要一一保存就太麻煩了。貌似迅雷可以下載所有的鏈接,但它也會(huì )下載不該下載的,比如紅框里的怪人。
右鍵查看網(wǎng)頁(yè)源碼:

我們得到的字符很多,我們只關(guān)心圖片鏈接,打開(kāi)上圖紅框中的鏈接,得到的圖片如下:

明明圖片的鏈接在網(wǎng)頁(yè)的源碼里,那么這個(gè)python實(shí)戰項目,網(wǎng)絡(luò )爬蟲(chóng)怎么寫(xiě)呢?
Python實(shí)戰項目,網(wǎng)絡(luò )爬蟲(chóng)1. 先獲取網(wǎng)頁(yè)源碼
其實(shí)就是模擬瀏覽器請求圖片頁(yè)面的URL。話(huà)不多說(shuō),看源碼,很簡(jiǎn)單
#coding:utf-8
import requests
# url 即為圖片網(wǎng)頁(yè)的網(wǎng)址
url = "https://image.baidu.com/search ... mp%3B【...】"
data = requests.get(url)
print data.content
Python
復制
運行后會(huì )發(fā)現我們剛才在瀏覽器中查看的源代碼已經(jīng)打印出來(lái)了。
2. Python項目實(shí)戰,提取圖片鏈接
如何從大量字符中提取關(guān)鍵美女圖片鏈接?答案是使用正則表達式。關(guān)于正則表達式,可以參考:
Python基礎,什么是正則表達式,正則表達式的使用
使用正則表達式的第一步是找出鏈接的模式及其出現的位置。這是一個(gè)粗略的嘗試:

注意"objURL":和逗號(,)之間存在鏈接,那么我們的實(shí)戰項目,python網(wǎng)絡(luò )爬蟲(chóng)的正則表達式代碼可以這樣寫(xiě):
#coding:utf-8
import requests
# url 即為圖片網(wǎng)頁(yè)的網(wǎng)址
url = "https://image.baidu.com/search ... mp%3B【...】"
data = requests.get(url)
#print data.content
# 正則表達式的使用,可參照上一節
pattern = re.compile(r'.*?"objURL":"(.*?)",', re.S)
result = pattern.findall(data.content)
for item in result:
print item
Python
復制
運行實(shí)戰項目的python網(wǎng)絡(luò )爬蟲(chóng)腳本,發(fā)現成功了,得到了一系列圖片地址:

3. Python實(shí)戰項目,下載圖片
獲取到圖片的鏈接后,我們如何保存它們?答案是模擬瀏覽器訪(fǎng)問(wèn)一次圖片鏈接,然后將獲取到的數據寫(xiě)入文件。我們直接上傳代碼:
#coding:utf-8
import requests
# url 即為圖片網(wǎng)頁(yè)的網(wǎng)址
url = "https://image.baidu.com/search ... mp%3B【...】"
data = requests.get(url)
#print data.content
# 正則表達式的使用,可參照上一節
pattern = re.compile(r'.*?"objURL":"(.*?)",', re.S)
result = pattern.findall(data.content)
for item in result:
try:
pic = requests.get(item, timeout=2)
fp = open("pic/%d.jpg"%i, "w+")
fp.write(pic.content)
fp.close()
i = i + 1
except Exception, e:
pass
Python
復制
執行代碼前,創(chuàng )建一個(gè)文件夾pic存放圖片,然后執行實(shí)戰項目python腳本得到

這是一個(gè)成功!
4. Python實(shí)戰項目,過(guò)濾圖片
可以看到,雖然圖片被爬下來(lái)了,但并不完美,因為怪人也被下載了。如何過(guò)濾?其實(shí)可以參考我們之前的博客:
Python實(shí)戰小項目,人臉檢測,讓電腦給你的顏值打分。我們只下載女(女),顏值大于55分,代碼如下:
#coding:utf-8
import requests
import urllib2
import random
import time, re
import base64
import urllib, json
from token import GetToken
faceDetectUrl = "https://aip.baidubce.com/rest/ ... ot%3B
# 根據人臉檢測的顏值打分,判斷是否下載
def IfDownLoad(pic, token):
img = base64.b64encode(pic)
params = {
"face_fields":"age,beauty,expression,faceshape,gender,glasses,landmark,race,qualities","image":img,"max_face_num":5}
params = urllib.urlencode(params)
request_url = faceDetectUrl + "?access_token=" + token
request = urllib2.Request(url=request_url, data=params)
request.add_header('Content-Type', 'application/x-www-form-urlencoded')
response = urllib2.urlopen(request)
content = response.read()
if content:
js = json.loads(content)
for item in js['result']:
print "age: %d, beauty: %d" % (item['age'], item['beauty'])
if 0 == cmp('female', item['gender']):
if (item['age']55): # 只下載女孩,年齡小于 29,顏值大于 55分
return True
return False
def DownLoad(url, i):
fp = open("pic/%d.jpg"%i, "w+")
fp.write(pic.content)
fp.close()
if __name__ == "__main__":
# 獲取網(wǎng)頁(yè)源代碼
url = "https://image.baidu.com/search ... mp%3B【...】"
data = requests.get(url)
# print data.content
# 獲取鏈接并判斷是否下載
pattern = re.compile(r'.*?"objURL":"(.*?)",', re.S)
result = pattern.findall(data.content)
i = 0
token = GetToken()
for item in result:
print item
try:
pic = requests.get(item, timeout=2)
if(True == IfDownLoad(pic.content, token)):
DownLoad(pic.content, i)
i = i + 1
except Exception, e:
pass
Python
復制
運行實(shí)戰項目python腳本,結果如??下:

可以看到,怪人都被淘汰了,下載的圖片基本都是顏值高的美圖。這樣我們就完成了實(shí)戰項目,python人工智能爬蟲(chóng)-圖片的選擇性爬取。
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(來(lái)自《Python項目案例開(kāi)發(fā)從入門(mén)到實(shí)戰》(清華大學(xué)出版社鄭秋生夏敏捷主編) )
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 74 次瀏覽 ? 2021-11-04 19:10
)
來(lái)自《Python項目案例開(kāi)發(fā)從入門(mén)到實(shí)戰》(清華大學(xué)出版社鄭秋生、夏敏毅主編)爬蟲(chóng)應用-抓取百度圖片
本文使用請求庫爬取了一張網(wǎng)站的圖片。博文前幾章介紹了如何使用urllib庫爬取網(wǎng)頁(yè)。本文主要使用請求庫抓取網(wǎng)頁(yè)內容以及使用方法基本相同,只是請求方法比較簡(jiǎn)單
別忘了爬蟲(chóng)的基本思想:
1. 指定要爬取的鏈接然后抓取網(wǎng)站源碼
2.提取你想要的內容,比如你想爬取圖片信息,可以選擇用正則表達式過(guò)濾或者使用提取
如何標記
3.循環(huán)獲取要爬取的內容列表,保存文件
這里的代碼和我博客前幾章的區別(圖片爬蟲(chóng)系列一)是:
1. requests 庫用于提取網(wǎng)頁(yè)
2.保存圖片時(shí),后綴不總是使用png或jpg,而是圖片本身的后綴名
3.保存圖片時(shí),不要使用urllib.request.urlretrieve函數,而是使用文件讀寫(xiě)操作保存圖片
具體代碼如下圖所示:
1 # 使用requests、bs4庫下載華僑大學(xué)主頁(yè)上的所有圖片
2 import os
3 import requests
4 from bs4 import BeautifulSoup
5 import shutil
6 from pathlib import Path # 關(guān)于文件路徑操作的庫,這里主要為了得到圖片后綴名
7
8
9 # 該方法傳入url,返回url的html的源代碼
10 def getHtmlCode(url):
11 # 偽裝請求的頭部來(lái)隱藏自己
12 headers = {
13 'User-Agent': 'MMozilla/5.0(Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0'
14 }
15 # 獲取網(wǎng)頁(yè)
16 r = requests.get(url, headers=headers)
17 # 指定網(wǎng)頁(yè)解析的編碼格式
18 r.encoding = 'UTF-8'
19 # 獲取url頁(yè)面的源代碼字符串文本
20 page = r.text
21 return page
22
23
24 # 該方法傳入html的源代碼,通過(guò)截取其中的img標簽,將圖片保存到本機
25 def getImg(page, localPath):
26 # 判斷文件夾是否存在,存在則刪除,最后都要重新新的文件夾
27 if os.path.exists(localPath):
28 shutil.rmtree(localPath)
29 os.mkdir(localPath)
30
31 # 按照Html格式解析頁(yè)面
32 soup = BeautifulSoup(page, 'html.parser')
33 # 返回的是一個(gè)包含所有img標簽的列表
34 imgList = soup.find_all('img')
35 x = 0
36 # 循環(huán)url列表
37 for imgUrl in imgList:
38 try:
39 # 得到img標簽中的src具體內容
40 imgUrl_src = imgUrl.get('src')
41 # 排除 src='' 的情況
42 if imgUrl_src != '':
43 print('正在下載第 %d : %s 張圖片' % (x+1, imgUrl_src))
44 # 判斷圖片是否是從絕對路徑https開(kāi)始,具體為什么這樣操作可以看下圖所示
45 if "https://" not in imgUrl_src:
46 m = 'https://www.hqu.edu.cn/' + imgUrl_src
47 print('正在下載: %s' % m)
48 # 獲取圖片
49 ir = requests.get(m)
50 else:
51 ir = requests.get(imgUrl_src)
52 # 設置Path變量,為了使用Pahtlib庫中的方法提取后綴名
53 p = Path(imgUrl_src)
54 # 得到后綴,返回的是如 '.jpg'
55 p_suffix = p.suffix
56 # 用write()方法寫(xiě)入本地文件中,存儲的后綴名用原始的后綴名稱(chēng)
57 open(localPath + str(x) + p_suffix, 'wb').write(ir.content)
58 x = x + 1
59 except:
60 continue
61
62
63 if __name__ == '__main__':
64 # 指定爬取圖片鏈接
65 url = 'https://www.hqu.edu.cn/index.htm'
66 # 指定存儲圖片路徑
67 localPath = './img/'
68 # 得到網(wǎng)頁(yè)源代碼
69 page = getHtmlCode(url)
70 # 保存圖片
71 getImg(page, localPath)
注意,我們之所以判斷圖片鏈接是否以“https://”開(kāi)頭,主要是因為我們需要完整的絕對路徑來(lái)下載圖片,而要得到這個(gè),我們需要查看原創(chuàng )網(wǎng)頁(yè)代碼,選擇一張圖片,點(diǎn)擊html所在的代碼,鼠標懸停,可以看到絕對路徑,然后根據這個(gè)絕對路徑設置需要添加的缺失部分,如下圖:
查看全部
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(來(lái)自《Python項目案例開(kāi)發(fā)從入門(mén)到實(shí)戰》(清華大學(xué)出版社鄭秋生夏敏捷主編)
)
來(lái)自《Python項目案例開(kāi)發(fā)從入門(mén)到實(shí)戰》(清華大學(xué)出版社鄭秋生、夏敏毅主編)爬蟲(chóng)應用-抓取百度圖片
本文使用請求庫爬取了一張網(wǎng)站的圖片。博文前幾章介紹了如何使用urllib庫爬取網(wǎng)頁(yè)。本文主要使用請求庫抓取網(wǎng)頁(yè)內容以及使用方法基本相同,只是請求方法比較簡(jiǎn)單
別忘了爬蟲(chóng)的基本思想:
1. 指定要爬取的鏈接然后抓取網(wǎng)站源碼
2.提取你想要的內容,比如你想爬取圖片信息,可以選擇用正則表達式過(guò)濾或者使用提取
如何標記
3.循環(huán)獲取要爬取的內容列表,保存文件
這里的代碼和我博客前幾章的區別(圖片爬蟲(chóng)系列一)是:
1. requests 庫用于提取網(wǎng)頁(yè)
2.保存圖片時(shí),后綴不總是使用png或jpg,而是圖片本身的后綴名
3.保存圖片時(shí),不要使用urllib.request.urlretrieve函數,而是使用文件讀寫(xiě)操作保存圖片
具體代碼如下圖所示:
1 # 使用requests、bs4庫下載華僑大學(xué)主頁(yè)上的所有圖片
2 import os
3 import requests
4 from bs4 import BeautifulSoup
5 import shutil
6 from pathlib import Path # 關(guān)于文件路徑操作的庫,這里主要為了得到圖片后綴名
7
8
9 # 該方法傳入url,返回url的html的源代碼
10 def getHtmlCode(url):
11 # 偽裝請求的頭部來(lái)隱藏自己
12 headers = {
13 'User-Agent': 'MMozilla/5.0(Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0'
14 }
15 # 獲取網(wǎng)頁(yè)
16 r = requests.get(url, headers=headers)
17 # 指定網(wǎng)頁(yè)解析的編碼格式
18 r.encoding = 'UTF-8'
19 # 獲取url頁(yè)面的源代碼字符串文本
20 page = r.text
21 return page
22
23
24 # 該方法傳入html的源代碼,通過(guò)截取其中的img標簽,將圖片保存到本機
25 def getImg(page, localPath):
26 # 判斷文件夾是否存在,存在則刪除,最后都要重新新的文件夾
27 if os.path.exists(localPath):
28 shutil.rmtree(localPath)
29 os.mkdir(localPath)
30
31 # 按照Html格式解析頁(yè)面
32 soup = BeautifulSoup(page, 'html.parser')
33 # 返回的是一個(gè)包含所有img標簽的列表
34 imgList = soup.find_all('img')
35 x = 0
36 # 循環(huán)url列表
37 for imgUrl in imgList:
38 try:
39 # 得到img標簽中的src具體內容
40 imgUrl_src = imgUrl.get('src')
41 # 排除 src='' 的情況
42 if imgUrl_src != '':
43 print('正在下載第 %d : %s 張圖片' % (x+1, imgUrl_src))
44 # 判斷圖片是否是從絕對路徑https開(kāi)始,具體為什么這樣操作可以看下圖所示
45 if "https://" not in imgUrl_src:
46 m = 'https://www.hqu.edu.cn/' + imgUrl_src
47 print('正在下載: %s' % m)
48 # 獲取圖片
49 ir = requests.get(m)
50 else:
51 ir = requests.get(imgUrl_src)
52 # 設置Path變量,為了使用Pahtlib庫中的方法提取后綴名
53 p = Path(imgUrl_src)
54 # 得到后綴,返回的是如 '.jpg'
55 p_suffix = p.suffix
56 # 用write()方法寫(xiě)入本地文件中,存儲的后綴名用原始的后綴名稱(chēng)
57 open(localPath + str(x) + p_suffix, 'wb').write(ir.content)
58 x = x + 1
59 except:
60 continue
61
62
63 if __name__ == '__main__':
64 # 指定爬取圖片鏈接
65 url = 'https://www.hqu.edu.cn/index.htm'
66 # 指定存儲圖片路徑
67 localPath = './img/'
68 # 得到網(wǎng)頁(yè)源代碼
69 page = getHtmlCode(url)
70 # 保存圖片
71 getImg(page, localPath)
注意,我們之所以判斷圖片鏈接是否以“https://”開(kāi)頭,主要是因為我們需要完整的絕對路徑來(lái)下載圖片,而要得到這個(gè),我們需要查看原創(chuàng )網(wǎng)頁(yè)代碼,選擇一張圖片,點(diǎn)擊html所在的代碼,鼠標懸停,可以看到絕對路徑,然后根據這個(gè)絕對路徑設置需要添加的缺失部分,如下圖:

網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(微信公眾號后臺的數據經(jīng)過(guò)數據加密處理,才能獲取)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 143 次瀏覽 ? 2021-11-03 12:02
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片就可以。但要獲取其微信公眾號后臺的二維碼,才能獲取。公眾號后臺抓取的數據經(jīng)過(guò)數據加密處理,對于企業(yè)來(lái)說(shuō)是安全的。
沒(méi)有一套api白給人家的,沒(méi)錯,就是沒(méi)錯。被別人鉆漏洞怎么辦?小明開(kāi)始學(xué)我講課了:這個(gè)頁(yè)面是什么?小明,那是公眾號的后臺頁(yè)面!我來(lái)假設你想要一個(gè)能爬的鏈接,你又要實(shí)現這個(gè)功能,這個(gè)數據需要隨著(zhù)你的公眾號數據和圖片在服務(wù)器端獲取,我們用python,來(lái)實(shí)現這個(gè)功能。小明突然開(kāi)始崩潰了:這個(gè)數據存哪里?怎么讓這個(gè)數據會(huì )轉儲到公眾號?..小明崩潰了,小明崩潰了,..小明崩潰了,小明崩潰了,小明。 查看全部
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(微信公眾號后臺的數據經(jīng)過(guò)數據加密處理,才能獲取)
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片就可以。但要獲取其微信公眾號后臺的二維碼,才能獲取。公眾號后臺抓取的數據經(jīng)過(guò)數據加密處理,對于企業(yè)來(lái)說(shuō)是安全的。
沒(méi)有一套api白給人家的,沒(méi)錯,就是沒(méi)錯。被別人鉆漏洞怎么辦?小明開(kāi)始學(xué)我講課了:這個(gè)頁(yè)面是什么?小明,那是公眾號的后臺頁(yè)面!我來(lái)假設你想要一個(gè)能爬的鏈接,你又要實(shí)現這個(gè)功能,這個(gè)數據需要隨著(zhù)你的公眾號數據和圖片在服務(wù)器端獲取,我們用python,來(lái)實(shí)現這個(gè)功能。小明突然開(kāi)始崩潰了:這個(gè)數據存哪里?怎么讓這個(gè)數據會(huì )轉儲到公眾號?..小明崩潰了,小明崩潰了,..小明崩潰了,小明崩潰了,小明。
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(淺談一下爬蟲(chóng)目的是讓準備學(xué)爬蟲(chóng)或者剛開(kāi)始起步的 )
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 66 次瀏覽 ? 2021-11-03 08:25
)
前言
爬蟲(chóng)是一項非常有趣的技術(shù)。你可以利用爬蟲(chóng)技術(shù)獲取別人無(wú)法獲取或需要付費才能獲取的東西。它還可以自動(dòng)抓取并保存大量數據,以減少手動(dòng)做一些累人的工作的時(shí)間和精力。
可以說(shuō)很多人是學(xué)編程的,不玩爬蟲(chóng)的。這意味著(zhù)無(wú)論是業(yè)余、私人工作還是專(zhuān)業(yè)爬行動(dòng)物,爬行動(dòng)物的世界都非常精彩。
今天給大家講講爬行。爬行的目的是讓準備學(xué)習爬行或剛入門(mén)的朋友對爬行有更深入、更全面的了解。
文章目錄前言一、認識爬蟲(chóng)1.什么是爬蟲(chóng)2.爬蟲(chóng)的分類(lèi)3.機器人協(xié)議二、爬蟲(chóng)的基本流程1.爬蟲(chóng)4步2.請求和響應三、理解請求1.請求方法2.請求URL3.請求頭4.請求體5.實(shí)操查看Request 四、了解Response1.Response status2.Response header3.Response body五、爬蟲(chóng)能得到什么樣的數據六、如何解析數據七、如何保存數據一、了解爬蟲(chóng)1.什么是爬蟲(chóng)
一句話(huà)給大家介紹一下著(zhù)名的爬蟲(chóng)請求網(wǎng)站以及提取數據的自動(dòng)化程序。
下面我們來(lái)拆解了解一下爬蟲(chóng):
網(wǎng)站的請求就是向網(wǎng)站發(fā)送請求。比如去百度搜索關(guān)鍵詞“Python”。這時(shí)候我們的瀏覽器會(huì )向網(wǎng)站發(fā)送請求
提取數據 包括圖片、文本、視頻等在內的數據稱(chēng)為數據。我們發(fā)送請求后,網(wǎng)站 會(huì )將搜索結果呈現給我們。這實(shí)際上是返回的數據。這時(shí)候我們就可以提取數據了。
自動(dòng)化程序是我們編寫(xiě)的代碼,用于實(shí)現過(guò)程數據的自動(dòng)提取,如批量下載和保存返回的圖片,而不是一一手動(dòng)操作。
2. 爬蟲(chóng)分類(lèi)
根據使用場(chǎng)景,爬蟲(chóng)可以分為三類(lèi)
?、僖话懵膸Т蠖R全
強大的采集 人臉被百度瀏覽器等搜索引擎廣泛使用,是一個(gè)大型爬蟲(chóng)程序。
?、趯?zhuān)注于小而精的爬行動(dòng)物
功能比較單一,只抓取特定網(wǎng)站的特定內容。比如去某個(gè)網(wǎng)站批量獲取一些數據。這也是我們個(gè)人使用的最常見(jiàn)的爬蟲(chóng)類(lèi)型。
?、墼隽颗老x(chóng)只采集更新內容
這實(shí)際上是聚焦爬蟲(chóng)的迭代爬蟲(chóng)。它只是 采集 更新的數據與舊數據相比嗎?采集 相當于一直存在和運行。只要有符合要求的數據更新,就會(huì )自動(dòng)爬取新的數據。
3.機器人協(xié)議
在爬蟲(chóng)中,有一個(gè)叫做 Robots 的協(xié)議。您需要注意它,也稱(chēng)為“網(wǎng)絡(luò )爬蟲(chóng)排除標準”。它的作用是網(wǎng)站告訴你哪些東西可以爬,哪些東西不能爬。
在哪里可以看到這個(gè)機器人協(xié)議。一般情況下,可以直接在網(wǎng)站的首頁(yè)URL后添加/robots.txt進(jìn)行查看。比如百度的Robots協(xié)議可以看到有很多URL是規定不能爬取的。例如Disallow:/shifen/表示當前Disallow:/shifen及Disallow:/shifen下的子目錄無(wú)法爬取。
實(shí)際上,這份Robots協(xié)議屬于君子協(xié)議。對于爬行動(dòng)物來(lái)說(shuō),基本上是口頭約定。如果你違反了,你可能會(huì )被追究法律責任,但如果不違反,爬蟲(chóng)將無(wú)法抓取任何數據,所以通常雙方都會(huì )保留一份。閉上眼睛,不要太囂張。
二、爬取基本流程1.爬取4步
爬蟲(chóng)是如何工作的?爬蟲(chóng)程序大致可以分為四個(gè)步驟。
?、侔l(fā)起請求
一個(gè)請求通過(guò) HTTP 庫發(fā)送到目標站點(diǎn),該請求可以收錄額外的頭部和其他等待服務(wù)器響應的信息。
?、讷@取回復內容
如果服務(wù)器可以正常響應,就會(huì )得到一個(gè)ResponseResponse內容。獲取的頁(yè)面內容類(lèi)型可以包括HTML、Json字符串、二進(jìn)制數據(如圖片、視頻等)。
?、蹆热莘治?br /> 獲取的內容可能是HTML,可以使用正則表達式和網(wǎng)頁(yè)解析庫進(jìn)行解析??赡苁荍son,可以直接轉成Json對象。它可以是可以保存或進(jìn)一步處理的二進(jìn)制數據。
?、鼙4鏀祿?br /> 許多保存的數據樣式可以保存為文本或保存到數據庫或保存為特定格式的文件。
基本上,這是爬蟲(chóng)必須遵循的四個(gè)步驟。
2.請求和響應
請求和響應是爬蟲(chóng)最重要的部分。請求和響應之間是什么關(guān)系??jì)烧叩年P(guān)系如下
簡(jiǎn)單的理解,當我們在電腦瀏覽器上搜索東西的時(shí)候,比如前面提到的在百度搜索“Python”,你已經(jīng)通過(guò)點(diǎn)擊百度向百度服務(wù)器發(fā)送了一個(gè)Request。請求收錄大量信息。比如身份信息,請求信息等,服務(wù)器收到請求后,做出判斷,返回一個(gè)Response給我們的電腦。這里面也收錄了很多請求成功等信息,比如我們請求的信息的文字、圖片、視頻等。
這應該很容易理解。接下來(lái),讓我們仔細看看請求和響應。
三、理解請求
請求收錄什么?它主要收錄以下內容
1.請求方法
請求方法可以理解為你向網(wǎng)站問(wèn)好的方式。你必須從 網(wǎng)站 獲取數據,你必須以正確的方式迎接它。和你打交道是可以的,就像你要別人借一樣。你必須先敲門(mén)打招呼。你可以爬上窗戶(hù)進(jìn)去。任何人看到它都必須為你扔掉。
主要的請求方法是 GET 和 POST。還有其他方法,例如 HEAD/PUT/DELETE/OPTIONS。最常用的方法是GET。
2.請求網(wǎng)址
什么是網(wǎng)址?URL 的全名是統一的資源定位符。比如一個(gè)網(wǎng)頁(yè)文檔、圖片、視頻等,在爬蟲(chóng)中都有一個(gè)唯一的URL,我們可以理解為一個(gè)URL或者一個(gè)鏈接。
3.請求頭
請求頭的英文名稱(chēng)是什么Request Headers通常是指請求中收錄的頭信息,比如User-Agent、Host、Cookies等。
當你向網(wǎng)站發(fā)送請求時(shí),這些東西就相當于你的身份信息。您經(jīng)常需要將自己偽裝成普通用戶(hù)來(lái)逃避您的目標。網(wǎng)站 將您標識為爬蟲(chóng)并避免了一些反采摘問(wèn)題。順利獲取數據。
4.請求正文
官方說(shuō)法是請求中攜帶的附加數據,例如提交表單時(shí)的表單數據。
怎么理解,比如去公公家提親,總不能空手去提親吧?
在爬蟲(chóng)中如何理解。例如,在某些頁(yè)面上,您必須先登錄,或者您必須告訴我您的請求。比如你在百度網(wǎng)頁(yè)上搜索“Python”,那么關(guān)鍵詞“Python”就是你要承載的請求,看到你的請求,百度就知道你要做什么了。
當然,請求體通常用在 POST 請求方法中。GET請求的時(shí)候,我們一般會(huì )在URL中拼接。先了解一下。后續具體爬蟲(chóng)可以加深理解。
5.實(shí)用視圖請求
說(shuō)完了Request的理論,我們可以去實(shí)際操作,看看Request在哪里,收錄什么。
以谷歌瀏覽器為例,我輸入關(guān)鍵字“Python”,找到了一堆結果。我們使用網(wǎng)頁(yè)自帶的控制臺窗口來(lái)分析我們發(fā)送的Request請求。
按住F12或在網(wǎng)頁(yè)空白處右擊選擇“檢查”,可以看到控制臺中有很多選項。例如,上列有一個(gè)菜單欄。主要爬蟲(chóng)一般我們使用元素元素和網(wǎng)絡(luò )網(wǎng)絡(luò )其他更常見(jiàn)。東西暫時(shí)不用。當你學(xué)習更高級的爬蟲(chóng)時(shí),你會(huì )使用它。比如JS逆向工程的時(shí)候,可能會(huì )用到Application窗口,后面再理解。
Elements 收錄請求結果的所有元素,例如每張圖片的源代碼。特別是當您單擊左上角的小箭頭時(shí),您移動(dòng)到的每個(gè)位置都會(huì )顯示在“元素”窗口中。代碼。
網(wǎng)絡(luò )是爬蟲(chóng)常用的網(wǎng)絡(luò )信息。其中包括我們的請求。讓我們檢查網(wǎng)絡(luò )窗口下的禁用緩存,然后單擊全部。
刷新網(wǎng)頁(yè)看看效果。您可以看到我們發(fā)送了 132 個(gè)請求請求。不要好奇。雖然我們只向百度發(fā)送了類(lèi)似“Python”這樣的請求,但有些請求是附在網(wǎng)頁(yè)上的。
雖然有很多類(lèi)型的圖像格式,例如png、jpeg 等,但是您可以滑動(dòng)到頂部。在類(lèi)型列中,有文檔。這種類(lèi)型是網(wǎng)絡(luò )文檔的含義。單擊它以獲取我們的請求信息。
單擊文檔后,會(huì )出現一個(gè)新的菜單欄。在Headers列下,我們可以看到Request URL,也就是我們前面提到的請求URL。這個(gè)URL就是我們實(shí)際從網(wǎng)頁(yè)請求的URL,可以看到請求方法。這是一個(gè) GET 請求。
再次向下滑動(dòng)可以看到我們前面提到的Request Headers有很多信息,但是我們前面提到的User-Agent、Host、Cookies都是我們提供給服務(wù)器的信息。
雖然Request Headers里面的內容很多,但是我們在編寫(xiě)爬蟲(chóng)程序的時(shí)候也要做這方面的偽裝工作,但是并不是所有的信息我們都要選擇性的寫(xiě)一些重要的信息。例如,User-Agent 必須帶 Referer,而 Host 是選擇性使用 cookie。登錄的時(shí)候會(huì )帶四個(gè)常用物品來(lái)偽裝。
至于請求體,我暫時(shí)不去查,因為我們的請求方式是GET請求只能在POST請求中查看。爬蟲(chóng)用了沒(méi)有關(guān)系,你自然就懂了。
四、了解響應
Response 主要包括 3 條內容,我們來(lái)一一看看。
1.響應狀態(tài)
我們發(fā)送請求后,網(wǎng)站 會(huì )返回一個(gè)Response,其中收錄響應狀態(tài)碼。響應狀態(tài)大致可以分為以下幾種
?、俜秶鸀?00,例如響應狀態(tài)碼200表示成功。
?、诜秶鸀槿?,如301,表示跳躍。
?、鬯陌俜秶?,如404,找不到網(wǎng)頁(yè)。
?、芪灏俚姆秶?,比如502,找不到網(wǎng)頁(yè)。
對于爬蟲(chóng)來(lái)說(shuō),兩三百是我們最想看到的響應狀態(tài)。獲取數據是可能的。四五百基本都冷了,拿不到數據。
比如我們剛剛發(fā)送了之前的Request請求,在文檔文件的Headers窗口下的General中可以看到響應狀態(tài)碼為200,說(shuō)明網(wǎng)頁(yè)成功響應了我們的請求。
2. 響應頭
服務(wù)器提供給我們的信息中也會(huì )有一個(gè)響應頭。這部分收錄內容類(lèi)型、內容長(cháng)度、服務(wù)器信息、設置cookies等。
事實(shí)上,響應頭對我們來(lái)說(shuō)并沒(méi)有那么重要??纯催@里。
3. 響應正文
這一點(diǎn)很重要,除了上面第一點(diǎn)的響應狀態(tài),因為它收錄了請求資源的內容,比如網(wǎng)頁(yè) HTML 和圖像二進(jìn)制數。
哪里的響應正文也在文檔文件的Response欄中,向下滑動(dòng)可以看到里面有很多響應數據。這是我們得到的數據,有的可以直接下載,有的需要技術(shù)分析才能得到。
五、爬蟲(chóng)能得到什么樣的數據
爬蟲(chóng)能夠獲取什么樣的數據,基本上可以分為這幾類(lèi)
?、?Web 文檔,如 HTML 文檔、Json 格式的文本等。
?、趫D片是將二進(jìn)制文件保存為圖片格式得到的。
?、垡曨l也是二進(jìn)制文件,可以保存為視頻格式。
?、芷渌?反正能看到的其他東西,理論上都是爬蟲(chóng)能得到的,看難易程度。
六、如何解析數據
從上面可以看出,我們可以成功發(fā)送請求,網(wǎng)頁(yè)會(huì )返回大量數據。有數千甚至數萬(wàn)個(gè)代碼。那么如何在這么多的代碼中找到我們想要的數據就是以下常用的方法
?、僦苯又委?。當網(wǎng)頁(yè)返回的數據是一些文本時(shí),我們想要的內容可以直接處理,無(wú)需過(guò)濾。
?、贘son分析。如果返回的網(wǎng)頁(yè)不是HTML數據而是Json數據,則需要Json解析技術(shù)。
?、壅齽t表達式。如果返回的數據是符合正則表達式的數據,則可以使用正則表達式進(jìn)行分析。
?、芷渌治龇椒?。常用的有XPath、BeautifulSoup、PyQuery,都是爬蟲(chóng)常用的解析庫。
七、如何保存數據
獲取數據后常用的保存數據的方法如下
?、傥淖???梢灾苯颖4鏋榧兾谋?、EXCEL、Json、Xml等類(lèi)型的文本。
?、陉P(guān)系數據庫。數據可以保存到MySQL、Oracle等關(guān)系型數據庫中。
?、鄯顷P(guān)系型數據庫。比如MongoDB、Readis和Key-Value存儲。
?、?二進(jìn)制文件。比如圖片、視頻、音頻等可以直接保存為特定格式。
今天聊聊爬蟲(chóng),歡迎大家在下方評論區留言。
查看全部
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(淺談一下爬蟲(chóng)目的是讓準備學(xué)爬蟲(chóng)或者剛開(kāi)始起步的
)
前言
爬蟲(chóng)是一項非常有趣的技術(shù)。你可以利用爬蟲(chóng)技術(shù)獲取別人無(wú)法獲取或需要付費才能獲取的東西。它還可以自動(dòng)抓取并保存大量數據,以減少手動(dòng)做一些累人的工作的時(shí)間和精力。
可以說(shuō)很多人是學(xué)編程的,不玩爬蟲(chóng)的。這意味著(zhù)無(wú)論是業(yè)余、私人工作還是專(zhuān)業(yè)爬行動(dòng)物,爬行動(dòng)物的世界都非常精彩。
今天給大家講講爬行。爬行的目的是讓準備學(xué)習爬行或剛入門(mén)的朋友對爬行有更深入、更全面的了解。

文章目錄前言一、認識爬蟲(chóng)1.什么是爬蟲(chóng)2.爬蟲(chóng)的分類(lèi)3.機器人協(xié)議二、爬蟲(chóng)的基本流程1.爬蟲(chóng)4步2.請求和響應三、理解請求1.請求方法2.請求URL3.請求頭4.請求體5.實(shí)操查看Request 四、了解Response1.Response status2.Response header3.Response body五、爬蟲(chóng)能得到什么樣的數據六、如何解析數據七、如何保存數據一、了解爬蟲(chóng)1.什么是爬蟲(chóng)
一句話(huà)給大家介紹一下著(zhù)名的爬蟲(chóng)請求網(wǎng)站以及提取數據的自動(dòng)化程序。
下面我們來(lái)拆解了解一下爬蟲(chóng):
網(wǎng)站的請求就是向網(wǎng)站發(fā)送請求。比如去百度搜索關(guān)鍵詞“Python”。這時(shí)候我們的瀏覽器會(huì )向網(wǎng)站發(fā)送請求
提取數據 包括圖片、文本、視頻等在內的數據稱(chēng)為數據。我們發(fā)送請求后,網(wǎng)站 會(huì )將搜索結果呈現給我們。這實(shí)際上是返回的數據。這時(shí)候我們就可以提取數據了。
自動(dòng)化程序是我們編寫(xiě)的代碼,用于實(shí)現過(guò)程數據的自動(dòng)提取,如批量下載和保存返回的圖片,而不是一一手動(dòng)操作。

2. 爬蟲(chóng)分類(lèi)
根據使用場(chǎng)景,爬蟲(chóng)可以分為三類(lèi)
?、僖话懵膸Т蠖R全
強大的采集 人臉被百度瀏覽器等搜索引擎廣泛使用,是一個(gè)大型爬蟲(chóng)程序。
?、趯?zhuān)注于小而精的爬行動(dòng)物
功能比較單一,只抓取特定網(wǎng)站的特定內容。比如去某個(gè)網(wǎng)站批量獲取一些數據。這也是我們個(gè)人使用的最常見(jiàn)的爬蟲(chóng)類(lèi)型。
?、墼隽颗老x(chóng)只采集更新內容
這實(shí)際上是聚焦爬蟲(chóng)的迭代爬蟲(chóng)。它只是 采集 更新的數據與舊數據相比嗎?采集 相當于一直存在和運行。只要有符合要求的數據更新,就會(huì )自動(dòng)爬取新的數據。

3.機器人協(xié)議
在爬蟲(chóng)中,有一個(gè)叫做 Robots 的協(xié)議。您需要注意它,也稱(chēng)為“網(wǎng)絡(luò )爬蟲(chóng)排除標準”。它的作用是網(wǎng)站告訴你哪些東西可以爬,哪些東西不能爬。
在哪里可以看到這個(gè)機器人協(xié)議。一般情況下,可以直接在網(wǎng)站的首頁(yè)URL后添加/robots.txt進(jìn)行查看。比如百度的Robots協(xié)議可以看到有很多URL是規定不能爬取的。例如Disallow:/shifen/表示當前Disallow:/shifen及Disallow:/shifen下的子目錄無(wú)法爬取。

實(shí)際上,這份Robots協(xié)議屬于君子協(xié)議。對于爬行動(dòng)物來(lái)說(shuō),基本上是口頭約定。如果你違反了,你可能會(huì )被追究法律責任,但如果不違反,爬蟲(chóng)將無(wú)法抓取任何數據,所以通常雙方都會(huì )保留一份。閉上眼睛,不要太囂張。

二、爬取基本流程1.爬取4步
爬蟲(chóng)是如何工作的?爬蟲(chóng)程序大致可以分為四個(gè)步驟。
?、侔l(fā)起請求
一個(gè)請求通過(guò) HTTP 庫發(fā)送到目標站點(diǎn),該請求可以收錄額外的頭部和其他等待服務(wù)器響應的信息。
?、讷@取回復內容
如果服務(wù)器可以正常響應,就會(huì )得到一個(gè)ResponseResponse內容。獲取的頁(yè)面內容類(lèi)型可以包括HTML、Json字符串、二進(jìn)制數據(如圖片、視頻等)。
?、蹆热莘治?br /> 獲取的內容可能是HTML,可以使用正則表達式和網(wǎng)頁(yè)解析庫進(jìn)行解析??赡苁荍son,可以直接轉成Json對象。它可以是可以保存或進(jìn)一步處理的二進(jìn)制數據。
?、鼙4鏀祿?br /> 許多保存的數據樣式可以保存為文本或保存到數據庫或保存為特定格式的文件。
基本上,這是爬蟲(chóng)必須遵循的四個(gè)步驟。
2.請求和響應
請求和響應是爬蟲(chóng)最重要的部分。請求和響應之間是什么關(guān)系??jì)烧叩年P(guān)系如下

簡(jiǎn)單的理解,當我們在電腦瀏覽器上搜索東西的時(shí)候,比如前面提到的在百度搜索“Python”,你已經(jīng)通過(guò)點(diǎn)擊百度向百度服務(wù)器發(fā)送了一個(gè)Request。請求收錄大量信息。比如身份信息,請求信息等,服務(wù)器收到請求后,做出判斷,返回一個(gè)Response給我們的電腦。這里面也收錄了很多請求成功等信息,比如我們請求的信息的文字、圖片、視頻等。
這應該很容易理解。接下來(lái),讓我們仔細看看請求和響應。
三、理解請求
請求收錄什么?它主要收錄以下內容
1.請求方法
請求方法可以理解為你向網(wǎng)站問(wèn)好的方式。你必須從 網(wǎng)站 獲取數據,你必須以正確的方式迎接它。和你打交道是可以的,就像你要別人借一樣。你必須先敲門(mén)打招呼。你可以爬上窗戶(hù)進(jìn)去。任何人看到它都必須為你扔掉。

主要的請求方法是 GET 和 POST。還有其他方法,例如 HEAD/PUT/DELETE/OPTIONS。最常用的方法是GET。
2.請求網(wǎng)址
什么是網(wǎng)址?URL 的全名是統一的資源定位符。比如一個(gè)網(wǎng)頁(yè)文檔、圖片、視頻等,在爬蟲(chóng)中都有一個(gè)唯一的URL,我們可以理解為一個(gè)URL或者一個(gè)鏈接。
3.請求頭
請求頭的英文名稱(chēng)是什么Request Headers通常是指請求中收錄的頭信息,比如User-Agent、Host、Cookies等。
當你向網(wǎng)站發(fā)送請求時(shí),這些東西就相當于你的身份信息。您經(jīng)常需要將自己偽裝成普通用戶(hù)來(lái)逃避您的目標。網(wǎng)站 將您標識為爬蟲(chóng)并避免了一些反采摘問(wèn)題。順利獲取數據。
4.請求正文
官方說(shuō)法是請求中攜帶的附加數據,例如提交表單時(shí)的表單數據。
怎么理解,比如去公公家提親,總不能空手去提親吧?

在爬蟲(chóng)中如何理解。例如,在某些頁(yè)面上,您必須先登錄,或者您必須告訴我您的請求。比如你在百度網(wǎng)頁(yè)上搜索“Python”,那么關(guān)鍵詞“Python”就是你要承載的請求,看到你的請求,百度就知道你要做什么了。
當然,請求體通常用在 POST 請求方法中。GET請求的時(shí)候,我們一般會(huì )在URL中拼接。先了解一下。后續具體爬蟲(chóng)可以加深理解。
5.實(shí)用視圖請求
說(shuō)完了Request的理論,我們可以去實(shí)際操作,看看Request在哪里,收錄什么。
以谷歌瀏覽器為例,我輸入關(guān)鍵字“Python”,找到了一堆結果。我們使用網(wǎng)頁(yè)自帶的控制臺窗口來(lái)分析我們發(fā)送的Request請求。
按住F12或在網(wǎng)頁(yè)空白處右擊選擇“檢查”,可以看到控制臺中有很多選項。例如,上列有一個(gè)菜單欄。主要爬蟲(chóng)一般我們使用元素元素和網(wǎng)絡(luò )網(wǎng)絡(luò )其他更常見(jiàn)。東西暫時(shí)不用。當你學(xué)習更高級的爬蟲(chóng)時(shí),你會(huì )使用它。比如JS逆向工程的時(shí)候,可能會(huì )用到Application窗口,后面再理解。
Elements 收錄請求結果的所有元素,例如每張圖片的源代碼。特別是當您單擊左上角的小箭頭時(shí),您移動(dòng)到的每個(gè)位置都會(huì )顯示在“元素”窗口中。代碼。

網(wǎng)絡(luò )是爬蟲(chóng)常用的網(wǎng)絡(luò )信息。其中包括我們的請求。讓我們檢查網(wǎng)絡(luò )窗口下的禁用緩存,然后單擊全部。

刷新網(wǎng)頁(yè)看看效果。您可以看到我們發(fā)送了 132 個(gè)請求請求。不要好奇。雖然我們只向百度發(fā)送了類(lèi)似“Python”這樣的請求,但有些請求是附在網(wǎng)頁(yè)上的。

雖然有很多類(lèi)型的圖像格式,例如png、jpeg 等,但是您可以滑動(dòng)到頂部。在類(lèi)型列中,有文檔。這種類(lèi)型是網(wǎng)絡(luò )文檔的含義。單擊它以獲取我們的請求信息。

單擊文檔后,會(huì )出現一個(gè)新的菜單欄。在Headers列下,我們可以看到Request URL,也就是我們前面提到的請求URL。這個(gè)URL就是我們實(shí)際從網(wǎng)頁(yè)請求的URL,可以看到請求方法。這是一個(gè) GET 請求。

再次向下滑動(dòng)可以看到我們前面提到的Request Headers有很多信息,但是我們前面提到的User-Agent、Host、Cookies都是我們提供給服務(wù)器的信息。

雖然Request Headers里面的內容很多,但是我們在編寫(xiě)爬蟲(chóng)程序的時(shí)候也要做這方面的偽裝工作,但是并不是所有的信息我們都要選擇性的寫(xiě)一些重要的信息。例如,User-Agent 必須帶 Referer,而 Host 是選擇性使用 cookie。登錄的時(shí)候會(huì )帶四個(gè)常用物品來(lái)偽裝。
至于請求體,我暫時(shí)不去查,因為我們的請求方式是GET請求只能在POST請求中查看。爬蟲(chóng)用了沒(méi)有關(guān)系,你自然就懂了。
四、了解響應
Response 主要包括 3 條內容,我們來(lái)一一看看。
1.響應狀態(tài)
我們發(fā)送請求后,網(wǎng)站 會(huì )返回一個(gè)Response,其中收錄響應狀態(tài)碼。響應狀態(tài)大致可以分為以下幾種
?、俜秶鸀?00,例如響應狀態(tài)碼200表示成功。
?、诜秶鸀槿?,如301,表示跳躍。
?、鬯陌俜秶?,如404,找不到網(wǎng)頁(yè)。
?、芪灏俚姆秶?,比如502,找不到網(wǎng)頁(yè)。
對于爬蟲(chóng)來(lái)說(shuō),兩三百是我們最想看到的響應狀態(tài)。獲取數據是可能的。四五百基本都冷了,拿不到數據。
比如我們剛剛發(fā)送了之前的Request請求,在文檔文件的Headers窗口下的General中可以看到響應狀態(tài)碼為200,說(shuō)明網(wǎng)頁(yè)成功響應了我們的請求。

2. 響應頭
服務(wù)器提供給我們的信息中也會(huì )有一個(gè)響應頭。這部分收錄內容類(lèi)型、內容長(cháng)度、服務(wù)器信息、設置cookies等。
事實(shí)上,響應頭對我們來(lái)說(shuō)并沒(méi)有那么重要??纯催@里。
3. 響應正文
這一點(diǎn)很重要,除了上面第一點(diǎn)的響應狀態(tài),因為它收錄了請求資源的內容,比如網(wǎng)頁(yè) HTML 和圖像二進(jìn)制數。
哪里的響應正文也在文檔文件的Response欄中,向下滑動(dòng)可以看到里面有很多響應數據。這是我們得到的數據,有的可以直接下載,有的需要技術(shù)分析才能得到。

五、爬蟲(chóng)能得到什么樣的數據
爬蟲(chóng)能夠獲取什么樣的數據,基本上可以分為這幾類(lèi)
?、?Web 文檔,如 HTML 文檔、Json 格式的文本等。
?、趫D片是將二進(jìn)制文件保存為圖片格式得到的。
?、垡曨l也是二進(jìn)制文件,可以保存為視頻格式。
?、芷渌?反正能看到的其他東西,理論上都是爬蟲(chóng)能得到的,看難易程度。
六、如何解析數據
從上面可以看出,我們可以成功發(fā)送請求,網(wǎng)頁(yè)會(huì )返回大量數據。有數千甚至數萬(wàn)個(gè)代碼。那么如何在這么多的代碼中找到我們想要的數據就是以下常用的方法
?、僦苯又委?。當網(wǎng)頁(yè)返回的數據是一些文本時(shí),我們想要的內容可以直接處理,無(wú)需過(guò)濾。
?、贘son分析。如果返回的網(wǎng)頁(yè)不是HTML數據而是Json數據,則需要Json解析技術(shù)。
?、壅齽t表達式。如果返回的數據是符合正則表達式的數據,則可以使用正則表達式進(jìn)行分析。
?、芷渌治龇椒?。常用的有XPath、BeautifulSoup、PyQuery,都是爬蟲(chóng)常用的解析庫。
七、如何保存數據
獲取數據后常用的保存數據的方法如下
?、傥淖???梢灾苯颖4鏋榧兾谋?、EXCEL、Json、Xml等類(lèi)型的文本。
?、陉P(guān)系數據庫。數據可以保存到MySQL、Oracle等關(guān)系型數據庫中。
?、鄯顷P(guān)系型數據庫。比如MongoDB、Readis和Key-Value存儲。
?、?二進(jìn)制文件。比如圖片、視頻、音頻等可以直接保存為特定格式。
今天聊聊爬蟲(chóng),歡迎大家在下方評論區留言。

網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(百度只收錄了一個(gè)首頁(yè)是什么原因,怎么辦抓取策略)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 76 次瀏覽 ? 2021-11-02 23:20
不管是新站還是老站,百度只有收錄首頁(yè)的問(wèn)題,很多SEO從業(yè)者都遇到過(guò)這個(gè)問(wèn)題,上一篇文章《百度只有收錄一個(gè)是什么原因主頁(yè)以及怎么做?”純經(jīng)驗談,從四個(gè)方面講述了百度只有收錄一個(gè)主頁(yè)的常見(jiàn)原因。本文將幫助您從搜索引擎抓取策略的層面分析可能的原因。
這里我們需要了解搜索引擎爬蟲(chóng)的兩種爬取策略:
1、搜索引擎深度優(yōu)先爬取策略
2、搜索引擎廣度優(yōu)先爬取策略
為了讓大家更容易理解這兩種策略,我舉個(gè)例子。如果是深度優(yōu)先的爬取策略,搜索引擎爬蟲(chóng)的爬取路徑為:
這時(shí)候搜索引擎抓取的順序是:首頁(yè)、1、頁(yè)A、G頁(yè)、B頁(yè)、2、頁(yè)C、D頁(yè)
一個(gè)簡(jiǎn)單的句子就是:通往黑暗的一種方式
如果是廣度優(yōu)先的爬取策略,搜索引擎爬蟲(chóng)的爬取路徑為:
此時(shí)搜索引擎抓取的順序為:首頁(yè)、欄目1、欄目2、欄目3、網(wǎng)頁(yè)A、網(wǎng)頁(yè)B、網(wǎng)頁(yè)C、網(wǎng)頁(yè)D
一個(gè)簡(jiǎn)單的句子就是:螃蟹走路
搜索引擎實(shí)際上針對不同的網(wǎng)站采取了不同的爬取策略。對于新站點(diǎn)或低權重的網(wǎng)站,一般采用廣度優(yōu)先的爬取策略。
所以,對于一個(gè)新站點(diǎn),一般是第一個(gè)收錄首頁(yè),然后是收錄欄目頁(yè),最后是內容頁(yè)。其實(shí)發(fā)生這種情況后,不用擔心,只要你的文章質(zhì)量好,你遲早會(huì )收錄的。
總結:百度只有收錄一個(gè)主頁(yè)的原因有很多。以上內容只是一些小細節,僅供參考! 查看全部
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(百度只收錄了一個(gè)首頁(yè)是什么原因,怎么辦抓取策略)
不管是新站還是老站,百度只有收錄首頁(yè)的問(wèn)題,很多SEO從業(yè)者都遇到過(guò)這個(gè)問(wèn)題,上一篇文章《百度只有收錄一個(gè)是什么原因主頁(yè)以及怎么做?”純經(jīng)驗談,從四個(gè)方面講述了百度只有收錄一個(gè)主頁(yè)的常見(jiàn)原因。本文將幫助您從搜索引擎抓取策略的層面分析可能的原因。
這里我們需要了解搜索引擎爬蟲(chóng)的兩種爬取策略:
1、搜索引擎深度優(yōu)先爬取策略
2、搜索引擎廣度優(yōu)先爬取策略
為了讓大家更容易理解這兩種策略,我舉個(gè)例子。如果是深度優(yōu)先的爬取策略,搜索引擎爬蟲(chóng)的爬取路徑為:
這時(shí)候搜索引擎抓取的順序是:首頁(yè)、1、頁(yè)A、G頁(yè)、B頁(yè)、2、頁(yè)C、D頁(yè)
一個(gè)簡(jiǎn)單的句子就是:通往黑暗的一種方式
如果是廣度優(yōu)先的爬取策略,搜索引擎爬蟲(chóng)的爬取路徑為:
此時(shí)搜索引擎抓取的順序為:首頁(yè)、欄目1、欄目2、欄目3、網(wǎng)頁(yè)A、網(wǎng)頁(yè)B、網(wǎng)頁(yè)C、網(wǎng)頁(yè)D
一個(gè)簡(jiǎn)單的句子就是:螃蟹走路
搜索引擎實(shí)際上針對不同的網(wǎng)站采取了不同的爬取策略。對于新站點(diǎn)或低權重的網(wǎng)站,一般采用廣度優(yōu)先的爬取策略。
所以,對于一個(gè)新站點(diǎn),一般是第一個(gè)收錄首頁(yè),然后是收錄欄目頁(yè),最后是內容頁(yè)。其實(shí)發(fā)生這種情況后,不用擔心,只要你的文章質(zhì)量好,你遲早會(huì )收錄的。
總結:百度只有收錄一個(gè)主頁(yè)的原因有很多。以上內容只是一些小細節,僅供參考!
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(【知識點(diǎn)】HTML代碼分析的基本原理(一))
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 67 次瀏覽 ? 2021-11-02 00:03
第一節 搜索引擎原理
1、基本概念
來(lái)自中文維基百科的解釋?zhuān)海ɑヂ?lián)網(wǎng))搜索引擎是指自動(dòng)從互聯(lián)網(wǎng)上采集信息,并經(jīng)過(guò)一定的排序,為用戶(hù)提供查詢(xún)的系統。
英文維基百科的解釋?zhuān)壕W(wǎng)絡(luò )搜索引擎提供了一個(gè)界面來(lái)搜索萬(wàn)維網(wǎng)上的信息。信息可能包括網(wǎng)頁(yè)、圖像和其他類(lèi)型的文件。(網(wǎng)絡(luò )搜索引擎提供了一個(gè)接口,可以在萬(wàn)維網(wǎng)上搜索信息。這些信息包括網(wǎng)頁(yè)、圖片和其他類(lèi)型的文檔)
2、類(lèi)別
根據工作原理的不同,它們可以分為兩個(gè)基本類(lèi)別:全文搜索引擎和目錄)。
分類(lèi)目錄是人工采集整理網(wǎng)站數據形成數據庫,如雅虎中國和國內搜狐、新浪、網(wǎng)易目錄。此外,互聯(lián)網(wǎng)上的一些導航網(wǎng)站也可以歸入原創(chuàng )分類(lèi)目錄,例如“網(wǎng)站之家”()。
全文搜索引擎自動(dòng)分析網(wǎng)頁(yè)的超鏈接,依靠對超鏈接和HTML代碼的分析來(lái)獲取網(wǎng)頁(yè)的信息內容,并根據預先設計好的索引進(jìn)行分析和整理。用戶(hù)查詢(xún)規則。
兩者的區別可以用一句話(huà)概括:類(lèi)別目錄是手動(dòng)創(chuàng )建的網(wǎng)站索引,全文搜索是自動(dòng)創(chuàng )建的網(wǎng)頁(yè)索引。(有些人經(jīng)常將搜索引擎與數據庫搜索進(jìn)行比較,但他們實(shí)際上是錯誤的)。
3、全文搜索是如何工作的?
全文搜索引擎一般信息采集、索引、搜索三部分,詳細信息可以由搜索器、分析器、索引器、搜索器和用戶(hù)界面等五部分組成
?。?)Information采集(Webcrawling):信息采集的工作是由搜索者和分析者共同完成的。搜索引擎使用爬蟲(chóng),蜘蛛,或者稱(chēng)為robots的自動(dòng)搜索機器人程序來(lái)查找網(wǎng)頁(yè)上的超鏈接。
進(jìn)一步解釋?zhuān)骸皺C器人”實(shí)際上是一些基于網(wǎng)絡(luò )的程序。他們請求網(wǎng)站上的 HTML 頁(yè)面采集 HTML 頁(yè)面。它遍歷指定范圍內的整個(gè)Web空間,并從一個(gè)網(wǎng)頁(yè)中不斷傳輸。到另一個(gè)網(wǎng)頁(yè),從一個(gè)站點(diǎn)移動(dòng)到另一個(gè)站點(diǎn),并將網(wǎng)頁(yè)采集添加到網(wǎng)頁(yè)數據庫中?!皺C器人”每次遇到一個(gè)新的網(wǎng)頁(yè),都要搜索里面的所有鏈接,所以理論上來(lái)說(shuō),如果為“機器人”建立了一個(gè)合適的初始頁(yè)面集,從這個(gè)初始頁(yè)面集開(kāi)始,所有的鏈接都是遍歷后,“機器人”將能夠采集 到整個(gè)網(wǎng)絡(luò )空間中的網(wǎng)頁(yè)。
在一些開(kāi)源社區中可以找到很多開(kāi)源爬蟲(chóng)程序。
關(guān)鍵點(diǎn)1:核心在于html分析,所以嚴謹、結構化、可讀、無(wú)錯誤的html代碼更容易被采集機器人和采集分析。比如某個(gè)頁(yè)面有這樣的結尾,在頁(yè)面上顯示不是問(wèn)題,但是很可能被采集收錄拒絕,比如類(lèi)似../../***.htm 這樣的超鏈接也可能導致蜘蛛無(wú)法識別。這也是需要推廣網(wǎng)絡(luò )標準的原因之一。按照網(wǎng)絡(luò )標準制作的網(wǎng)頁(yè)更容易被搜索引擎檢索和收錄。
關(guān)鍵點(diǎn)2:搜索機器人有專(zhuān)門(mén)的搜索鏈接庫。搜索同一個(gè)超鏈接時(shí),會(huì )自動(dòng)比較新舊網(wǎng)頁(yè)的內容和大小。如果它們相同,則不會(huì )是采集。因此,有人擔心修改后的網(wǎng)頁(yè)是否可以收錄,這是多余的。
?。?)索引:搜索引擎組織信息的過(guò)程稱(chēng)為“索引”。搜索引擎不僅需要保存采集到的信息,還要按照一定的規則進(jìn)行排列。索引可以是一般的大型數據庫,如如ORACLE、Sybase等,也可以定義自己的文件格式進(jìn)行存儲。索引是搜索中比較復雜的部分,涉及到網(wǎng)頁(yè)結構分析、分詞、排序等技術(shù),一個(gè)好的索引可以大大提高檢索速度。
關(guān)鍵點(diǎn)一:雖然目前的搜索引擎都支持增量索引,但創(chuàng )建索引仍然需要很長(cháng)時(shí)間。搜索引擎會(huì )定期更新索引。因此,即使爬蟲(chóng)來(lái)了,直到我們可以在頁(yè)面上進(jìn)行搜索之前,都會(huì )有一定的時(shí)間間隔。
關(guān)鍵點(diǎn)2:索引是區分好搜索和壞搜索的重要標志。
?。?)Searching:用戶(hù)向搜索引擎發(fā)送查詢(xún),搜索引擎接受查詢(xún)并將信息返回給用戶(hù)。有些系統在返回結果之前會(huì )計算和評估網(wǎng)頁(yè)的相關(guān)性,并基于相關(guān)度排序,將相關(guān)度高的放在首位,相關(guān)度低的放在后面;有的系統在用戶(hù)查詢(xún)之前已經(jīng)計算了每個(gè)網(wǎng)頁(yè)的頁(yè)面排名(PageRank會(huì )在后面介紹),返回頁(yè)面排名查詢(xún)結果返回時(shí),較大的放在前面,較小的放在后面。
關(guān)鍵點(diǎn)一:不同的搜索引擎有不同的排序規則,所以在不同的搜索引擎中搜索相同的關(guān)鍵詞時(shí),排序是不同的。
第二節 百度搜索引擎的工作原理
我所知道的百度搜索:由于工作原因,小生有幸一直在使用百度的Bestcom企業(yè)搜索引擎(該部門(mén)現已下崗,主要是百度的戰略開(kāi)始向谷歌靠攏,不再單獨銷(xiāo)售搜索引擎,并切換到搜索服務(wù)),據百度銷(xiāo)售人員介紹,Besttone的搜索核心與Big Search相同,只是版本可能略低,所以我有理由相信搜索的工作方式是相似的。以下是一些簡(jiǎn)單的介紹和注意事項:
1、關(guān)于網(wǎng)站搜索的更新頻率
百度搜索可以設置網(wǎng)站的更新頻率和時(shí)間。一般網(wǎng)站的更新頻率非???,會(huì )設置獨立的爬蟲(chóng)進(jìn)行跟蹤。不過(guò)百度比較勤快,中小網(wǎng)站一般天天更新。所以,如果你想讓你的網(wǎng)站更新更快,最好把你的鏈接放在一個(gè)大分類(lèi)目錄(比如yahoosina網(wǎng)易),或者百度自己的相關(guān)網(wǎng)站,有你的網(wǎng)站 超鏈接位于或您的 網(wǎng)站 位于某個(gè)大型 網(wǎng)站 中,例如大型 網(wǎng)站 博客。
2、關(guān)于采集的深度
百度搜索可以定義采集的深度,也就是說(shuō)百度不一定會(huì )檢索到你網(wǎng)站的所有內容。它可能只會(huì )索引你的網(wǎng)站首頁(yè)的內容,特別是對于小網(wǎng)站Speak。
3、采集關(guān)于經(jīng)常不和網(wǎng)站交流
百度對網(wǎng)站的連接和斷開(kāi)有特別的判斷。如果發(fā)現某個(gè)網(wǎng)站不可用,尤其是一些中小網(wǎng)站,百度會(huì )自動(dòng)停止向這些網(wǎng)站發(fā)送爬蟲(chóng),所以選擇很重要一個(gè)好的服務(wù)器并保持 網(wǎng)站 一天 24 小時(shí)開(kāi)放。
4、關(guān)于更改IP網(wǎng)站
百度搜索可以基于域名或IP地址。如果是域名,會(huì )自動(dòng)解析為對應的ip地址。因此,會(huì )有兩個(gè)問(wèn)題。首先是如果你的網(wǎng)站和其他人使用相同的IP地址,如果別人的網(wǎng)站被百度處罰,你的網(wǎng)站就會(huì )受到牽連。二是如果你更改ip地址,百度會(huì )發(fā)現你的域名與之前的ip地址不對應,會(huì )拒絕給你的網(wǎng)站發(fā)送爬蟲(chóng)。所以建議不要隨意更改ip地址。如果可能,嘗試獨享ip。保持網(wǎng)站的穩定性很重要。
5、關(guān)于靜態(tài)和動(dòng)態(tài)網(wǎng)站采集
很多人擔心是不是像asp?id=這樣的頁(yè)面很難采集,像html這樣的頁(yè)面容易采集。事實(shí)上,情況并沒(méi)有想象的那么糟糕。目前大部分搜索引擎都支持動(dòng)態(tài)網(wǎng)站的采集和檢索,包括需要登錄的網(wǎng)站,都可以檢索到,所以你不用擔心你的自己的動(dòng)態(tài)。網(wǎng)站 搜索引擎無(wú)法識別它們。百度搜索支持動(dòng)態(tài)。定制。但是,如果可能,請嘗試生成靜態(tài)頁(yè)面。同時(shí),對于大多數搜索引擎來(lái)說(shuō),腳本跳轉(JS)、框架(frame)、
Flash 超鏈接,動(dòng)態(tài)頁(yè)面中含有非法字符的頁(yè)面是無(wú)奈之舉。
6、關(guān)于索引的消失
如前所述,需要創(chuàng )建搜索索引。通常,良好搜索的索引是文本文件,而不是數據庫。因此,刪除索引中的記錄并不是一件方便的事情。例如,百度需要使用特殊工具手動(dòng)刪除索引記錄。據百度員工介紹,百度有一群人負責這件事——受理投訴、刪除記錄、人工。當然也可以直接刪除某個(gè)規則下的所有索引,即可以刪除某個(gè)網(wǎng)站下的所有索引。還有一個(gè)機制(未驗證),即過(guò)期網(wǎng)頁(yè)和作弊網(wǎng)頁(yè)(主要是網(wǎng)頁(yè)標題,關(guān)鍵詞和內容不匹配),在索引過(guò)程中也會(huì )被刪除。
7、關(guān)于重復數據刪除
百度搜索的去重不如谷歌的理想。主要是區分文章的標題和來(lái)源地址。只要不一樣,就不會(huì )自動(dòng)去重,所以不用擔心采集內容相似,很快就被Google搜索懲罰不一樣,人不多同時(shí)具有相同的標題 收錄。
另外,不要把搜索引擎想的那么聰明。他們基本上遵循一定的規則和公式。如果你不想被搜索引擎懲罰,就避開(kāi)這些規則。
第三節 谷歌搜索排名技術(shù)
搜索方面,谷歌比百度好,主要原因是谷歌更公平,而百度人為因素很多(這也符合中國國情),谷歌的公平源于其排名技術(shù)PageRank。
很多人都知道PageRank,也就是網(wǎng)站的質(zhì)量等級。值越小,網(wǎng)站越好。實(shí)際上,PageRank 是根據特殊公式計算得出的。當我們在 Google 上搜索 關(guān)鍵詞 時(shí),頁(yè)面排名較低的頁(yè)面的排名會(huì )更高。這個(gè)公式?jīng)]有人為干預,所以是公平的。
PageRank的最初想法來(lái)自紙質(zhì)檔案的管理。我們知道每篇論文最后都有參考文獻。如果某個(gè)文章被不同的論文多次引用,那么這個(gè)文章就可以被認為是一篇文章。優(yōu)秀的文章。
同理,簡(jiǎn)單的說(shuō),PageRank 可以對網(wǎng)頁(yè)的重要性做出客觀(guān)的評價(jià)。PageRank 不計算直接鏈接的數量,而是將網(wǎng)頁(yè) A 到網(wǎng)頁(yè) B 的鏈接解釋為網(wǎng)頁(yè) A 到網(wǎng)頁(yè) B 的投票。這樣,PageRank 將根據收到的投票數來(lái)評估頁(yè)面的重要性B頁(yè)面。此外,PageRank還會(huì )評估每個(gè)投票頁(yè)面的重要性,因為某些頁(yè)面的投票被認為具有更高的價(jià)值,因此它所鏈接的頁(yè)面可以獲得更高的價(jià)值。
這里省略了Page Rank的公式,說(shuō)說(shuō)影響Page Rank的主要因素
1、 指向您的 網(wǎng)站 的超鏈接數(您的 網(wǎng)站 被他人引用)。數字越大,您的 網(wǎng)站 就越重要。通俗的說(shuō),是其他網(wǎng)站友情鏈接,還是你的網(wǎng)站推薦鏈接;
2、超鏈接對你的網(wǎng)站的重要性,說(shuō)明質(zhì)量好的網(wǎng)站有你的網(wǎng)站的超鏈接,說(shuō)明你的網(wǎng)站也很出眾。
3、 網(wǎng)頁(yè)特定因素:包括網(wǎng)頁(yè)的內容、標題和網(wǎng)址,即關(guān)鍵詞 和網(wǎng)頁(yè)的位置。
第四季新網(wǎng)站如何處理搜索
以下是對以上分析的總結:
1、為什么不用搜索引擎收錄你的網(wǎng)站,有以下幾種可能(不是絕對的,要看各自的情況)
?。?)沒(méi)有島網(wǎng)頁(yè)鏈接,收錄的網(wǎng)站也沒(méi)有超鏈接給你,搜索引擎將無(wú)法找到你;
?。?)網(wǎng)站 網(wǎng)頁(yè)性質(zhì)和文件類(lèi)型(如flash、JS跳轉、一些動(dòng)態(tài)網(wǎng)頁(yè)、frame等)搜索引擎無(wú)法識別;
?。?)你的網(wǎng)站所在的服務(wù)器已經(jīng)被搜索引擎懲罰,而不是與收錄同IP的內容;
?。?)最近更改了服務(wù)器的IP地址,搜索引擎需要一段時(shí)間重新采集;
?。?)服務(wù)器不穩定,頻繁宕機,或無(wú)法承受爬蟲(chóng)的壓力采集;
?。?)網(wǎng)頁(yè)代碼低劣,搜索無(wú)法正確分析頁(yè)面內容。請至少學(xué)習HTML的基本語(yǔ)法。推薦XHTML;
?。?)網(wǎng)站 使用robots(robots.txt)協(xié)議拒絕搜索引擎抓取的網(wǎng)頁(yè);
?。?)使用關(guān)鍵詞作弊網(wǎng)頁(yè),網(wǎng)頁(yè)關(guān)鍵詞與內容嚴重不匹配,或部分關(guān)鍵詞密度過(guò)高;
?。?) 含有非法內容的網(wǎng)頁(yè);
?。?0)same網(wǎng)站 存在大量同名網(wǎng)頁(yè),或者網(wǎng)頁(yè)標題沒(méi)有實(shí)際意義;
2、如何正確做新站(僅供參考)
?。?)與優(yōu)秀的網(wǎng)站交換鏈接;
?。?)廣泛登錄各種網(wǎng)站的網(wǎng)站目錄列表;
?。?)多去優(yōu)質(zhì)論壇發(fā)言,發(fā)言質(zhì)量要好,最好不要回復。在發(fā)言中留下你的網(wǎng)站地址;
?。?)申請網(wǎng)站的博客(新浪、網(wǎng)易、CSDN),在博客中推廣自己的網(wǎng)站;
?。?)使用好的建站程序,最好生成靜態(tài)頁(yè)面,自動(dòng)生成關(guān)鍵詞;
?。?)注意每個(gè)網(wǎng)頁(yè)的標題和區域,盡量把匹配的關(guān)鍵詞放在這些容易搜索和索引的位置,注意文章的開(kāi)頭@>,并嘗試將其放在文章的開(kāi)頭部分,使用了類(lèi)似abstract的功能(可以學(xué)習網(wǎng)易的文章風(fēng)格)。
例如,“基于開(kāi)源jabber(XMPP)構建內部即時(shí)通訊服務(wù)的解決方案”;
標題部分:基于開(kāi)源jabber(XMPP)搭建內部即時(shí)通訊服務(wù)解決方案-肥龍(消耗品)專(zhuān)欄-PROG3.COM
關(guān)鍵詞部分:安裝,">
文章說(shuō)明部分:是知名的即時(shí)通訊服務(wù)服務(wù)器。它是一個(gè)免費的開(kāi)源軟件,允許用戶(hù)建立自己的即時(shí)通訊服務(wù)器,可以在互聯(lián)網(wǎng)或局域網(wǎng)中使用。
XMPP(Extensible Message Processing Field Protocol)是一種基于可擴展標記語(yǔ)言(XML)的協(xié)議,用于即時(shí)通訊(IM)和在線(xiàn)現場(chǎng)檢測。它正在促進(jìn)
準實(shí)時(shí)運行時(shí)間。該協(xié)議最終可能允許 Internet 用戶(hù)向 Internet 上的任何其他人發(fā)送即時(shí)消息,即使他們的操作系統和瀏覽器不同。XMPP 的技術(shù)來(lái)源于
對于 Jabber 來(lái)說(shuō),它其實(shí)是 Jabber 的核心協(xié)議,所以 XMPP 有時(shí)會(huì )被誤稱(chēng)為 Jabber 協(xié)議。Jabber 是一個(gè)基于 XMPP 協(xié)議的 IM 應用程序。除了 Jabber,XMPP 還支持許多應用程序。 查看全部
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(【知識點(diǎn)】HTML代碼分析的基本原理(一))
第一節 搜索引擎原理
1、基本概念
來(lái)自中文維基百科的解釋?zhuān)海ɑヂ?lián)網(wǎng))搜索引擎是指自動(dòng)從互聯(lián)網(wǎng)上采集信息,并經(jīng)過(guò)一定的排序,為用戶(hù)提供查詢(xún)的系統。
英文維基百科的解釋?zhuān)壕W(wǎng)絡(luò )搜索引擎提供了一個(gè)界面來(lái)搜索萬(wàn)維網(wǎng)上的信息。信息可能包括網(wǎng)頁(yè)、圖像和其他類(lèi)型的文件。(網(wǎng)絡(luò )搜索引擎提供了一個(gè)接口,可以在萬(wàn)維網(wǎng)上搜索信息。這些信息包括網(wǎng)頁(yè)、圖片和其他類(lèi)型的文檔)
2、類(lèi)別
根據工作原理的不同,它們可以分為兩個(gè)基本類(lèi)別:全文搜索引擎和目錄)。
分類(lèi)目錄是人工采集整理網(wǎng)站數據形成數據庫,如雅虎中國和國內搜狐、新浪、網(wǎng)易目錄。此外,互聯(lián)網(wǎng)上的一些導航網(wǎng)站也可以歸入原創(chuàng )分類(lèi)目錄,例如“網(wǎng)站之家”()。
全文搜索引擎自動(dòng)分析網(wǎng)頁(yè)的超鏈接,依靠對超鏈接和HTML代碼的分析來(lái)獲取網(wǎng)頁(yè)的信息內容,并根據預先設計好的索引進(jìn)行分析和整理。用戶(hù)查詢(xún)規則。
兩者的區別可以用一句話(huà)概括:類(lèi)別目錄是手動(dòng)創(chuàng )建的網(wǎng)站索引,全文搜索是自動(dòng)創(chuàng )建的網(wǎng)頁(yè)索引。(有些人經(jīng)常將搜索引擎與數據庫搜索進(jìn)行比較,但他們實(shí)際上是錯誤的)。
3、全文搜索是如何工作的?
全文搜索引擎一般信息采集、索引、搜索三部分,詳細信息可以由搜索器、分析器、索引器、搜索器和用戶(hù)界面等五部分組成
?。?)Information采集(Webcrawling):信息采集的工作是由搜索者和分析者共同完成的。搜索引擎使用爬蟲(chóng),蜘蛛,或者稱(chēng)為robots的自動(dòng)搜索機器人程序來(lái)查找網(wǎng)頁(yè)上的超鏈接。
進(jìn)一步解釋?zhuān)骸皺C器人”實(shí)際上是一些基于網(wǎng)絡(luò )的程序。他們請求網(wǎng)站上的 HTML 頁(yè)面采集 HTML 頁(yè)面。它遍歷指定范圍內的整個(gè)Web空間,并從一個(gè)網(wǎng)頁(yè)中不斷傳輸。到另一個(gè)網(wǎng)頁(yè),從一個(gè)站點(diǎn)移動(dòng)到另一個(gè)站點(diǎn),并將網(wǎng)頁(yè)采集添加到網(wǎng)頁(yè)數據庫中?!皺C器人”每次遇到一個(gè)新的網(wǎng)頁(yè),都要搜索里面的所有鏈接,所以理論上來(lái)說(shuō),如果為“機器人”建立了一個(gè)合適的初始頁(yè)面集,從這個(gè)初始頁(yè)面集開(kāi)始,所有的鏈接都是遍歷后,“機器人”將能夠采集 到整個(gè)網(wǎng)絡(luò )空間中的網(wǎng)頁(yè)。
在一些開(kāi)源社區中可以找到很多開(kāi)源爬蟲(chóng)程序。
關(guān)鍵點(diǎn)1:核心在于html分析,所以嚴謹、結構化、可讀、無(wú)錯誤的html代碼更容易被采集機器人和采集分析。比如某個(gè)頁(yè)面有這樣的結尾,在頁(yè)面上顯示不是問(wèn)題,但是很可能被采集收錄拒絕,比如類(lèi)似../../***.htm 這樣的超鏈接也可能導致蜘蛛無(wú)法識別。這也是需要推廣網(wǎng)絡(luò )標準的原因之一。按照網(wǎng)絡(luò )標準制作的網(wǎng)頁(yè)更容易被搜索引擎檢索和收錄。
關(guān)鍵點(diǎn)2:搜索機器人有專(zhuān)門(mén)的搜索鏈接庫。搜索同一個(gè)超鏈接時(shí),會(huì )自動(dòng)比較新舊網(wǎng)頁(yè)的內容和大小。如果它們相同,則不會(huì )是采集。因此,有人擔心修改后的網(wǎng)頁(yè)是否可以收錄,這是多余的。
?。?)索引:搜索引擎組織信息的過(guò)程稱(chēng)為“索引”。搜索引擎不僅需要保存采集到的信息,還要按照一定的規則進(jìn)行排列。索引可以是一般的大型數據庫,如如ORACLE、Sybase等,也可以定義自己的文件格式進(jìn)行存儲。索引是搜索中比較復雜的部分,涉及到網(wǎng)頁(yè)結構分析、分詞、排序等技術(shù),一個(gè)好的索引可以大大提高檢索速度。
關(guān)鍵點(diǎn)一:雖然目前的搜索引擎都支持增量索引,但創(chuàng )建索引仍然需要很長(cháng)時(shí)間。搜索引擎會(huì )定期更新索引。因此,即使爬蟲(chóng)來(lái)了,直到我們可以在頁(yè)面上進(jìn)行搜索之前,都會(huì )有一定的時(shí)間間隔。
關(guān)鍵點(diǎn)2:索引是區分好搜索和壞搜索的重要標志。
?。?)Searching:用戶(hù)向搜索引擎發(fā)送查詢(xún),搜索引擎接受查詢(xún)并將信息返回給用戶(hù)。有些系統在返回結果之前會(huì )計算和評估網(wǎng)頁(yè)的相關(guān)性,并基于相關(guān)度排序,將相關(guān)度高的放在首位,相關(guān)度低的放在后面;有的系統在用戶(hù)查詢(xún)之前已經(jīng)計算了每個(gè)網(wǎng)頁(yè)的頁(yè)面排名(PageRank會(huì )在后面介紹),返回頁(yè)面排名查詢(xún)結果返回時(shí),較大的放在前面,較小的放在后面。
關(guān)鍵點(diǎn)一:不同的搜索引擎有不同的排序規則,所以在不同的搜索引擎中搜索相同的關(guān)鍵詞時(shí),排序是不同的。
第二節 百度搜索引擎的工作原理
我所知道的百度搜索:由于工作原因,小生有幸一直在使用百度的Bestcom企業(yè)搜索引擎(該部門(mén)現已下崗,主要是百度的戰略開(kāi)始向谷歌靠攏,不再單獨銷(xiāo)售搜索引擎,并切換到搜索服務(wù)),據百度銷(xiāo)售人員介紹,Besttone的搜索核心與Big Search相同,只是版本可能略低,所以我有理由相信搜索的工作方式是相似的。以下是一些簡(jiǎn)單的介紹和注意事項:
1、關(guān)于網(wǎng)站搜索的更新頻率
百度搜索可以設置網(wǎng)站的更新頻率和時(shí)間。一般網(wǎng)站的更新頻率非???,會(huì )設置獨立的爬蟲(chóng)進(jìn)行跟蹤。不過(guò)百度比較勤快,中小網(wǎng)站一般天天更新。所以,如果你想讓你的網(wǎng)站更新更快,最好把你的鏈接放在一個(gè)大分類(lèi)目錄(比如yahoosina網(wǎng)易),或者百度自己的相關(guān)網(wǎng)站,有你的網(wǎng)站 超鏈接位于或您的 網(wǎng)站 位于某個(gè)大型 網(wǎng)站 中,例如大型 網(wǎng)站 博客。
2、關(guān)于采集的深度
百度搜索可以定義采集的深度,也就是說(shuō)百度不一定會(huì )檢索到你網(wǎng)站的所有內容。它可能只會(huì )索引你的網(wǎng)站首頁(yè)的內容,特別是對于小網(wǎng)站Speak。
3、采集關(guān)于經(jīng)常不和網(wǎng)站交流
百度對網(wǎng)站的連接和斷開(kāi)有特別的判斷。如果發(fā)現某個(gè)網(wǎng)站不可用,尤其是一些中小網(wǎng)站,百度會(huì )自動(dòng)停止向這些網(wǎng)站發(fā)送爬蟲(chóng),所以選擇很重要一個(gè)好的服務(wù)器并保持 網(wǎng)站 一天 24 小時(shí)開(kāi)放。
4、關(guān)于更改IP網(wǎng)站
百度搜索可以基于域名或IP地址。如果是域名,會(huì )自動(dòng)解析為對應的ip地址。因此,會(huì )有兩個(gè)問(wèn)題。首先是如果你的網(wǎng)站和其他人使用相同的IP地址,如果別人的網(wǎng)站被百度處罰,你的網(wǎng)站就會(huì )受到牽連。二是如果你更改ip地址,百度會(huì )發(fā)現你的域名與之前的ip地址不對應,會(huì )拒絕給你的網(wǎng)站發(fā)送爬蟲(chóng)。所以建議不要隨意更改ip地址。如果可能,嘗試獨享ip。保持網(wǎng)站的穩定性很重要。
5、關(guān)于靜態(tài)和動(dòng)態(tài)網(wǎng)站采集
很多人擔心是不是像asp?id=這樣的頁(yè)面很難采集,像html這樣的頁(yè)面容易采集。事實(shí)上,情況并沒(méi)有想象的那么糟糕。目前大部分搜索引擎都支持動(dòng)態(tài)網(wǎng)站的采集和檢索,包括需要登錄的網(wǎng)站,都可以檢索到,所以你不用擔心你的自己的動(dòng)態(tài)。網(wǎng)站 搜索引擎無(wú)法識別它們。百度搜索支持動(dòng)態(tài)。定制。但是,如果可能,請嘗試生成靜態(tài)頁(yè)面。同時(shí),對于大多數搜索引擎來(lái)說(shuō),腳本跳轉(JS)、框架(frame)、
Flash 超鏈接,動(dòng)態(tài)頁(yè)面中含有非法字符的頁(yè)面是無(wú)奈之舉。
6、關(guān)于索引的消失
如前所述,需要創(chuàng )建搜索索引。通常,良好搜索的索引是文本文件,而不是數據庫。因此,刪除索引中的記錄并不是一件方便的事情。例如,百度需要使用特殊工具手動(dòng)刪除索引記錄。據百度員工介紹,百度有一群人負責這件事——受理投訴、刪除記錄、人工。當然也可以直接刪除某個(gè)規則下的所有索引,即可以刪除某個(gè)網(wǎng)站下的所有索引。還有一個(gè)機制(未驗證),即過(guò)期網(wǎng)頁(yè)和作弊網(wǎng)頁(yè)(主要是網(wǎng)頁(yè)標題,關(guān)鍵詞和內容不匹配),在索引過(guò)程中也會(huì )被刪除。
7、關(guān)于重復數據刪除
百度搜索的去重不如谷歌的理想。主要是區分文章的標題和來(lái)源地址。只要不一樣,就不會(huì )自動(dòng)去重,所以不用擔心采集內容相似,很快就被Google搜索懲罰不一樣,人不多同時(shí)具有相同的標題 收錄。
另外,不要把搜索引擎想的那么聰明。他們基本上遵循一定的規則和公式。如果你不想被搜索引擎懲罰,就避開(kāi)這些規則。
第三節 谷歌搜索排名技術(shù)
搜索方面,谷歌比百度好,主要原因是谷歌更公平,而百度人為因素很多(這也符合中國國情),谷歌的公平源于其排名技術(shù)PageRank。
很多人都知道PageRank,也就是網(wǎng)站的質(zhì)量等級。值越小,網(wǎng)站越好。實(shí)際上,PageRank 是根據特殊公式計算得出的。當我們在 Google 上搜索 關(guān)鍵詞 時(shí),頁(yè)面排名較低的頁(yè)面的排名會(huì )更高。這個(gè)公式?jīng)]有人為干預,所以是公平的。
PageRank的最初想法來(lái)自紙質(zhì)檔案的管理。我們知道每篇論文最后都有參考文獻。如果某個(gè)文章被不同的論文多次引用,那么這個(gè)文章就可以被認為是一篇文章。優(yōu)秀的文章。
同理,簡(jiǎn)單的說(shuō),PageRank 可以對網(wǎng)頁(yè)的重要性做出客觀(guān)的評價(jià)。PageRank 不計算直接鏈接的數量,而是將網(wǎng)頁(yè) A 到網(wǎng)頁(yè) B 的鏈接解釋為網(wǎng)頁(yè) A 到網(wǎng)頁(yè) B 的投票。這樣,PageRank 將根據收到的投票數來(lái)評估頁(yè)面的重要性B頁(yè)面。此外,PageRank還會(huì )評估每個(gè)投票頁(yè)面的重要性,因為某些頁(yè)面的投票被認為具有更高的價(jià)值,因此它所鏈接的頁(yè)面可以獲得更高的價(jià)值。
這里省略了Page Rank的公式,說(shuō)說(shuō)影響Page Rank的主要因素
1、 指向您的 網(wǎng)站 的超鏈接數(您的 網(wǎng)站 被他人引用)。數字越大,您的 網(wǎng)站 就越重要。通俗的說(shuō),是其他網(wǎng)站友情鏈接,還是你的網(wǎng)站推薦鏈接;
2、超鏈接對你的網(wǎng)站的重要性,說(shuō)明質(zhì)量好的網(wǎng)站有你的網(wǎng)站的超鏈接,說(shuō)明你的網(wǎng)站也很出眾。
3、 網(wǎng)頁(yè)特定因素:包括網(wǎng)頁(yè)的內容、標題和網(wǎng)址,即關(guān)鍵詞 和網(wǎng)頁(yè)的位置。
第四季新網(wǎng)站如何處理搜索
以下是對以上分析的總結:
1、為什么不用搜索引擎收錄你的網(wǎng)站,有以下幾種可能(不是絕對的,要看各自的情況)
?。?)沒(méi)有島網(wǎng)頁(yè)鏈接,收錄的網(wǎng)站也沒(méi)有超鏈接給你,搜索引擎將無(wú)法找到你;
?。?)網(wǎng)站 網(wǎng)頁(yè)性質(zhì)和文件類(lèi)型(如flash、JS跳轉、一些動(dòng)態(tài)網(wǎng)頁(yè)、frame等)搜索引擎無(wú)法識別;
?。?)你的網(wǎng)站所在的服務(wù)器已經(jīng)被搜索引擎懲罰,而不是與收錄同IP的內容;
?。?)最近更改了服務(wù)器的IP地址,搜索引擎需要一段時(shí)間重新采集;
?。?)服務(wù)器不穩定,頻繁宕機,或無(wú)法承受爬蟲(chóng)的壓力采集;
?。?)網(wǎng)頁(yè)代碼低劣,搜索無(wú)法正確分析頁(yè)面內容。請至少學(xué)習HTML的基本語(yǔ)法。推薦XHTML;
?。?)網(wǎng)站 使用robots(robots.txt)協(xié)議拒絕搜索引擎抓取的網(wǎng)頁(yè);
?。?)使用關(guān)鍵詞作弊網(wǎng)頁(yè),網(wǎng)頁(yè)關(guān)鍵詞與內容嚴重不匹配,或部分關(guān)鍵詞密度過(guò)高;
?。?) 含有非法內容的網(wǎng)頁(yè);
?。?0)same網(wǎng)站 存在大量同名網(wǎng)頁(yè),或者網(wǎng)頁(yè)標題沒(méi)有實(shí)際意義;
2、如何正確做新站(僅供參考)
?。?)與優(yōu)秀的網(wǎng)站交換鏈接;
?。?)廣泛登錄各種網(wǎng)站的網(wǎng)站目錄列表;
?。?)多去優(yōu)質(zhì)論壇發(fā)言,發(fā)言質(zhì)量要好,最好不要回復。在發(fā)言中留下你的網(wǎng)站地址;
?。?)申請網(wǎng)站的博客(新浪、網(wǎng)易、CSDN),在博客中推廣自己的網(wǎng)站;
?。?)使用好的建站程序,最好生成靜態(tài)頁(yè)面,自動(dòng)生成關(guān)鍵詞;
?。?)注意每個(gè)網(wǎng)頁(yè)的標題和區域,盡量把匹配的關(guān)鍵詞放在這些容易搜索和索引的位置,注意文章的開(kāi)頭@>,并嘗試將其放在文章的開(kāi)頭部分,使用了類(lèi)似abstract的功能(可以學(xué)習網(wǎng)易的文章風(fēng)格)。
例如,“基于開(kāi)源jabber(XMPP)構建內部即時(shí)通訊服務(wù)的解決方案”;
標題部分:基于開(kāi)源jabber(XMPP)搭建內部即時(shí)通訊服務(wù)解決方案-肥龍(消耗品)專(zhuān)欄-PROG3.COM
關(guān)鍵詞部分:安裝,">
文章說(shuō)明部分:是知名的即時(shí)通訊服務(wù)服務(wù)器。它是一個(gè)免費的開(kāi)源軟件,允許用戶(hù)建立自己的即時(shí)通訊服務(wù)器,可以在互聯(lián)網(wǎng)或局域網(wǎng)中使用。
XMPP(Extensible Message Processing Field Protocol)是一種基于可擴展標記語(yǔ)言(XML)的協(xié)議,用于即時(shí)通訊(IM)和在線(xiàn)現場(chǎng)檢測。它正在促進(jìn)
準實(shí)時(shí)運行時(shí)間。該協(xié)議最終可能允許 Internet 用戶(hù)向 Internet 上的任何其他人發(fā)送即時(shí)消息,即使他們的操作系統和瀏覽器不同。XMPP 的技術(shù)來(lái)源于
對于 Jabber 來(lái)說(shuō),它其實(shí)是 Jabber 的核心協(xié)議,所以 XMPP 有時(shí)會(huì )被誤稱(chēng)為 Jabber 協(xié)議。Jabber 是一個(gè)基于 XMPP 協(xié)議的 IM 應用程序。除了 Jabber,XMPP 還支持許多應用程序。
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(Python語(yǔ)言程序簡(jiǎn)單高效,編寫(xiě)網(wǎng)絡(luò )爬蟲(chóng)有特別的優(yōu)勢)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 89 次瀏覽 ? 2021-11-01 18:06
1.什么是爬蟲(chóng)
爬蟲(chóng)是網(wǎng)絡(luò )爬蟲(chóng)。大家可以把它理解為在互聯(lián)網(wǎng)上爬行的蜘蛛?;ヂ?lián)網(wǎng)就像一個(gè)大網(wǎng),爬蟲(chóng)就是在這個(gè)網(wǎng)上爬來(lái)爬去的蜘蛛。如果它遇到資源,那么它會(huì )被爬下來(lái)。你想爬什么?這取決于你來(lái)控制它。比如它在爬一個(gè)網(wǎng)頁(yè),他在這個(gè)網(wǎng)頁(yè)上找到了一條路,其實(shí)就是一個(gè)網(wǎng)頁(yè)的超鏈接,然后就可以爬到另一個(gè)網(wǎng)頁(yè)上獲取數據了。這樣一來(lái),整個(gè)相連的網(wǎng)都在這只蜘蛛的觸手可及的范圍內,分分鐘爬下來(lái)也不成問(wèn)題。
網(wǎng)絡(luò )爬蟲(chóng)是一組可以自動(dòng)從網(wǎng)站的相關(guān)網(wǎng)頁(yè)中搜索和提取數據的程序。提取和存儲這些數據是進(jìn)一步數據分析的關(guān)鍵和前提。Python語(yǔ)言程序簡(jiǎn)單高效,編寫(xiě)網(wǎng)絡(luò )爬蟲(chóng)有特殊優(yōu)勢。尤其是業(yè)界有各種專(zhuān)門(mén)為Python編寫(xiě)的爬蟲(chóng)程序框架,使得爬蟲(chóng)程序的編寫(xiě)更加簡(jiǎn)單高效。
Python 是一種面向對象的解釋型計算機編程語(yǔ)言。該語(yǔ)言開(kāi)源、免費、功能強大,語(yǔ)法簡(jiǎn)單明了,庫豐富而強大,是目前廣泛使用的編程語(yǔ)言。
2.瀏覽網(wǎng)頁(yè)的過(guò)程
在用戶(hù)瀏覽網(wǎng)頁(yè)的過(guò)程中,我們可能會(huì )看到很多漂亮的圖片,比如我們會(huì )看到一些圖片和百度搜索框。這個(gè)過(guò)程其實(shí)就是用戶(hù)輸入URL,通過(guò)DNS服務(wù)器找到服務(wù)器主機之后。向服務(wù)器發(fā)送請求。服務(wù)器解析后,將瀏覽器的HTML、JS、CSS等文件發(fā)送給用戶(hù)。瀏覽器解析出來(lái),用戶(hù)可以看到各種圖片。
因此,用戶(hù)看到的網(wǎng)頁(yè)本質(zhì)上是由HTML代碼組成的,爬蟲(chóng)爬取這個(gè)內容。通過(guò)對這些HTML代碼進(jìn)行分析和過(guò)濾,可以獲得圖片、文字等資源。 查看全部
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(Python語(yǔ)言程序簡(jiǎn)單高效,編寫(xiě)網(wǎng)絡(luò )爬蟲(chóng)有特別的優(yōu)勢)
1.什么是爬蟲(chóng)
爬蟲(chóng)是網(wǎng)絡(luò )爬蟲(chóng)。大家可以把它理解為在互聯(lián)網(wǎng)上爬行的蜘蛛?;ヂ?lián)網(wǎng)就像一個(gè)大網(wǎng),爬蟲(chóng)就是在這個(gè)網(wǎng)上爬來(lái)爬去的蜘蛛。如果它遇到資源,那么它會(huì )被爬下來(lái)。你想爬什么?這取決于你來(lái)控制它。比如它在爬一個(gè)網(wǎng)頁(yè),他在這個(gè)網(wǎng)頁(yè)上找到了一條路,其實(shí)就是一個(gè)網(wǎng)頁(yè)的超鏈接,然后就可以爬到另一個(gè)網(wǎng)頁(yè)上獲取數據了。這樣一來(lái),整個(gè)相連的網(wǎng)都在這只蜘蛛的觸手可及的范圍內,分分鐘爬下來(lái)也不成問(wèn)題。
網(wǎng)絡(luò )爬蟲(chóng)是一組可以自動(dòng)從網(wǎng)站的相關(guān)網(wǎng)頁(yè)中搜索和提取數據的程序。提取和存儲這些數據是進(jìn)一步數據分析的關(guān)鍵和前提。Python語(yǔ)言程序簡(jiǎn)單高效,編寫(xiě)網(wǎng)絡(luò )爬蟲(chóng)有特殊優(yōu)勢。尤其是業(yè)界有各種專(zhuān)門(mén)為Python編寫(xiě)的爬蟲(chóng)程序框架,使得爬蟲(chóng)程序的編寫(xiě)更加簡(jiǎn)單高效。
Python 是一種面向對象的解釋型計算機編程語(yǔ)言。該語(yǔ)言開(kāi)源、免費、功能強大,語(yǔ)法簡(jiǎn)單明了,庫豐富而強大,是目前廣泛使用的編程語(yǔ)言。
2.瀏覽網(wǎng)頁(yè)的過(guò)程
在用戶(hù)瀏覽網(wǎng)頁(yè)的過(guò)程中,我們可能會(huì )看到很多漂亮的圖片,比如我們會(huì )看到一些圖片和百度搜索框。這個(gè)過(guò)程其實(shí)就是用戶(hù)輸入URL,通過(guò)DNS服務(wù)器找到服務(wù)器主機之后。向服務(wù)器發(fā)送請求。服務(wù)器解析后,將瀏覽器的HTML、JS、CSS等文件發(fā)送給用戶(hù)。瀏覽器解析出來(lái),用戶(hù)可以看到各種圖片。
因此,用戶(hù)看到的網(wǎng)頁(yè)本質(zhì)上是由HTML代碼組成的,爬蟲(chóng)爬取這個(gè)內容。通過(guò)對這些HTML代碼進(jìn)行分析和過(guò)濾,可以獲得圖片、文字等資源。
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(Excel教程Excel函數的Xpath路徑,快速檢驗我們爬取的信息是否正確)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 149 次瀏覽 ? 2021-10-31 20:02
2、如何搜索關(guān)鍵詞?
通過(guò)URL我們可以發(fā)現,你只需要在kw=()和ffa括號中輸入你要搜索的內容即可。這樣,我們就可以用一個(gè) {} 來(lái)代替它,后面我們會(huì )循環(huán)遍歷它。
【五、項目實(shí)施】
1、創(chuàng )建一個(gè)名為BaiduImageSpider的類(lèi),定義一個(gè)main方法main和一個(gè)初始化方法init。導入所需的庫。
import requests
from lxml import etree
from urllib import parse
class BaiduImageSpider(object):
def __init__(self, tieba_name):
pass
def main(self):
pass
if __name__ == '__main__':
inout_word = input("請輸入你要查詢(xún)的信息:")
spider.main()
pass
if __name__ == '__main__':
spider= ImageSpider()
spider.main()
2、準備url地址和請求頭來(lái)請求數據。
import requests
from lxml import etree
from urllib import parse
class BaiduImageSpider(object):
def __init__(self, tieba_name):
self.tieba_name = tieba_name #輸入的名字
self.url = "http://tieba.baidu.com/f?kw={}&ie=utf-8&pn=0"
self.headers = {
'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3)'
}
'''發(fā)送請求 獲取響應'''
def get_parse_page(self, url, xpath):
html = requests.get(url=url, headers=self.headers).content.decode("utf-8")
parse_html = etree.HTML(html)
r_list = parse_html.xpath(xpath)
return r_list
def main(self):
url = self.url.format(self.tieba_name)
if __name__ == '__main__':
inout_word = input("請輸入你要查詢(xún)的信息:")
key_word = parse.quote(inout_word)
spider = BaiduImageSpider(key_word)
spider.main()
3、xpath 數據分析
3.1、chrome_Xpath 插件安裝
1) 這里使用了一個(gè)插件。它可以快速檢查我們抓取的信息是否正確。具體安裝方法如下。
2)百度下載chrome_Xpath_v2.0.2.crx,chrome瀏覽器輸入:/extensions/
3) 將chrome_Xpath_v2.0.2.crx 直接拖到擴展頁(yè)面;
4) 如果安裝失敗,彈出提示“無(wú)法從這個(gè)網(wǎng)站添加應用程序、擴展和用戶(hù)腳本”。如果遇到這個(gè)問(wèn)題,解決方法是:打開(kāi)開(kāi)發(fā)者模式保存crx文件(直接或者修改后綴為rar)解壓到一個(gè)文件夾,點(diǎn)擊開(kāi)發(fā)者模式加載解壓后的擴展,選擇解壓后的文件夾,點(diǎn)擊確定,安裝成功;
3.2、chrome_Xpath 插件使用
上面的chrome_Xpath插件我們已經(jīng)安裝好了,接下來(lái)就要用到了。
打開(kāi)瀏覽器,按快捷鍵F12。
選擇下圖所示的元素。
3) 右擊,然后選擇“Copy XPath”,如下圖。
3.3、寫(xiě)代碼,獲取鏈接函數。
我們已經(jīng)獲得了上面鏈接函數的Xpath路徑,然后定義了一個(gè)鏈接函數get_tlink并繼承self來(lái)實(shí)現多頁(yè)面抓取。
'''獲取鏈接函數'''
def get_tlink(self, url):
xpath = '//div[@class="threadlist_lz clearfix"]/div/a/@href'
t_list = self.get_parse_page(url, xpath)
# print(len(t_list))
for t in t_list:
t_link = "http://www.tieba.com" + t
'''接下來(lái)對帖子地址發(fā)送請求 將保存到本地'''
self.write_image(t_link)
4、保存數據
這里定義了一個(gè)write_image方法來(lái)保存數據,如下圖。
'''保存到本地函數'''
d
1000
ef write_image(self, t_link):
xpath = "//div[@class='d_post_content j_d_post_content clearfix']/img[@class='BDE_Image']/@src | //div[@class='video_src_wrapper']/embed/@data-video"
img_list = self.get_parse_page(t_link, xpath)
for img_link in img_list:
html = requests.get(url=img_link, headers=self.headers).content
filename = "百度/"+img_link[-10:]
with open(filename, 'wb') as f:
f.write(html)
print("%s下載成功" % filename)
注:@data-video 為 URL 中的視頻,如下圖所示。
【六、效果展示】
1、點(diǎn)擊運行,如下圖(請輸入您要查詢(xún)的信息):
2、以吳京為例輸入后回車(chē):
3、將下載的圖片保存在名為“百度”的文件夾中,該文件夾需要提前在本地創(chuàng )建。一定要記得提前在當前代碼的同級目錄下新建一個(gè)名為“百度”的文件夾,否則系統會(huì )找不到文件夾,會(huì )報錯找不到文件夾“百度”。
4、下圖中的MP4為評論區視頻。
[七、總結]
1、 不建議抓取太多數據,可能造成服務(wù)器負載,簡(jiǎn)單試一下。
2、本文基于Python網(wǎng)絡(luò )爬蟲(chóng),利用爬蟲(chóng)庫實(shí)現百度貼吧評論區爬取。對Python爬取百度貼吧的一些難點(diǎn)進(jìn)行詳細講解并提供有效的解決方案。
3、歡迎積極嘗試。有時(shí)你看到別人實(shí)施起來(lái)很容易,但自己動(dòng)手時(shí),總會(huì )出現各種問(wèn)題。不要自卑,勤于理解。深刻的。學(xué)習r(shí)equests庫的使用和爬蟲(chóng)程序的編寫(xiě)。
4、 通過(guò)這個(gè)項目,你可以更快的得到你想要的信息。
5、如需本文源碼,請后臺回復“百度貼吧”獲取。
看完這篇文章你學(xué)會(huì )了嗎?請轉發(fā)并分享給更多人
IT共享之家 查看全部
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(Excel教程Excel函數的Xpath路徑,快速檢驗我們爬取的信息是否正確)
2、如何搜索關(guān)鍵詞?
通過(guò)URL我們可以發(fā)現,你只需要在kw=()和ffa括號中輸入你要搜索的內容即可。這樣,我們就可以用一個(gè) {} 來(lái)代替它,后面我們會(huì )循環(huán)遍歷它。
【五、項目實(shí)施】
1、創(chuàng )建一個(gè)名為BaiduImageSpider的類(lèi),定義一個(gè)main方法main和一個(gè)初始化方法init。導入所需的庫。
import requests
from lxml import etree
from urllib import parse
class BaiduImageSpider(object):
def __init__(self, tieba_name):
pass
def main(self):
pass
if __name__ == '__main__':
inout_word = input("請輸入你要查詢(xún)的信息:")
spider.main()
pass
if __name__ == '__main__':
spider= ImageSpider()
spider.main()
2、準備url地址和請求頭來(lái)請求數據。
import requests
from lxml import etree
from urllib import parse
class BaiduImageSpider(object):
def __init__(self, tieba_name):
self.tieba_name = tieba_name #輸入的名字
self.url = "http://tieba.baidu.com/f?kw={}&ie=utf-8&pn=0"
self.headers = {
'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3)'
}
'''發(fā)送請求 獲取響應'''
def get_parse_page(self, url, xpath):
html = requests.get(url=url, headers=self.headers).content.decode("utf-8")
parse_html = etree.HTML(html)
r_list = parse_html.xpath(xpath)
return r_list
def main(self):
url = self.url.format(self.tieba_name)
if __name__ == '__main__':
inout_word = input("請輸入你要查詢(xún)的信息:")
key_word = parse.quote(inout_word)
spider = BaiduImageSpider(key_word)
spider.main()
3、xpath 數據分析
3.1、chrome_Xpath 插件安裝
1) 這里使用了一個(gè)插件。它可以快速檢查我們抓取的信息是否正確。具體安裝方法如下。
2)百度下載chrome_Xpath_v2.0.2.crx,chrome瀏覽器輸入:/extensions/

3) 將chrome_Xpath_v2.0.2.crx 直接拖到擴展頁(yè)面;
4) 如果安裝失敗,彈出提示“無(wú)法從這個(gè)網(wǎng)站添加應用程序、擴展和用戶(hù)腳本”。如果遇到這個(gè)問(wèn)題,解決方法是:打開(kāi)開(kāi)發(fā)者模式保存crx文件(直接或者修改后綴為rar)解壓到一個(gè)文件夾,點(diǎn)擊開(kāi)發(fā)者模式加載解壓后的擴展,選擇解壓后的文件夾,點(diǎn)擊確定,安裝成功;
3.2、chrome_Xpath 插件使用
上面的chrome_Xpath插件我們已經(jīng)安裝好了,接下來(lái)就要用到了。
打開(kāi)瀏覽器,按快捷鍵F12。
選擇下圖所示的元素。

3) 右擊,然后選擇“Copy XPath”,如下圖。

3.3、寫(xiě)代碼,獲取鏈接函數。
我們已經(jīng)獲得了上面鏈接函數的Xpath路徑,然后定義了一個(gè)鏈接函數get_tlink并繼承self來(lái)實(shí)現多頁(yè)面抓取。
'''獲取鏈接函數'''
def get_tlink(self, url):
xpath = '//div[@class="threadlist_lz clearfix"]/div/a/@href'
t_list = self.get_parse_page(url, xpath)
# print(len(t_list))
for t in t_list:
t_link = "http://www.tieba.com" + t
'''接下來(lái)對帖子地址發(fā)送請求 將保存到本地'''
self.write_image(t_link)
4、保存數據
這里定義了一個(gè)write_image方法來(lái)保存數據,如下圖。
'''保存到本地函數'''
d
1000
ef write_image(self, t_link):
xpath = "//div[@class='d_post_content j_d_post_content clearfix']/img[@class='BDE_Image']/@src | //div[@class='video_src_wrapper']/embed/@data-video"
img_list = self.get_parse_page(t_link, xpath)
for img_link in img_list:
html = requests.get(url=img_link, headers=self.headers).content
filename = "百度/"+img_link[-10:]
with open(filename, 'wb') as f:
f.write(html)
print("%s下載成功" % filename)
注:@data-video 為 URL 中的視頻,如下圖所示。

【六、效果展示】
1、點(diǎn)擊運行,如下圖(請輸入您要查詢(xún)的信息):
2、以吳京為例輸入后回車(chē):

3、將下載的圖片保存在名為“百度”的文件夾中,該文件夾需要提前在本地創(chuàng )建。一定要記得提前在當前代碼的同級目錄下新建一個(gè)名為“百度”的文件夾,否則系統會(huì )找不到文件夾,會(huì )報錯找不到文件夾“百度”。

4、下圖中的MP4為評論區視頻。

[七、總結]
1、 不建議抓取太多數據,可能造成服務(wù)器負載,簡(jiǎn)單試一下。
2、本文基于Python網(wǎng)絡(luò )爬蟲(chóng),利用爬蟲(chóng)庫實(shí)現百度貼吧評論區爬取。對Python爬取百度貼吧的一些難點(diǎn)進(jìn)行詳細講解并提供有效的解決方案。
3、歡迎積極嘗試。有時(shí)你看到別人實(shí)施起來(lái)很容易,但自己動(dòng)手時(shí),總會(huì )出現各種問(wèn)題。不要自卑,勤于理解。深刻的。學(xué)習r(shí)equests庫的使用和爬蟲(chóng)程序的編寫(xiě)。
4、 通過(guò)這個(gè)項目,你可以更快的得到你想要的信息。
5、如需本文源碼,請后臺回復“百度貼吧”獲取。
看完這篇文章你學(xué)會(huì )了嗎?請轉發(fā)并分享給更多人
IT共享之家
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(如何實(shí)現搜索關(guān)鍵字?(一)_e操盤(pán)_)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 66 次瀏覽 ? 2021-10-30 10:05
2、如何搜索關(guān)鍵詞?
通過(guò)URL,我們可以發(fā)現我們只需要在kw=()和括號中輸入你要搜索的內容即可。這樣,我們就可以用一個(gè) {} 來(lái)代替它,后面我們會(huì )循環(huán)遍歷它。
【五、項目實(shí)施】
1、創(chuàng )建一個(gè)名為BaiduImageSpider的類(lèi),定義一個(gè)main方法main和一個(gè)初始化方法init。導入所需的庫。
import requests
from lxml import etree
from urllib import parse
class BaiduImageSpider(object):
def __init__(self, tieba_name):
pass
def main(self):
pass
if __name__ == '__main__':
inout_word = input("請輸入你要查詢(xún)的信息:")
spider.main()
pass
if __name__ == '__main__':
spider= ImageSpider()
spider.main()
2、準備url地址和請求頭來(lái)請求數據。
import requests
from lxml import etree
from urllib import parse
class BaiduImageSpider(object):
def __init__(self, tieba_name):
self.tieba_name = tieba_name #輸入的名字
self.url = "http://tieba.baidu.com/f?kw={}&ie=utf-8&pn=0"
self.headers = {
'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3)'
}
'''發(fā)送請求 獲取響應'''
def get_parse_page(self, url, xpath):
html = requests.get(url=url, headers=self.headers).content.decode("utf-8")
parse_html = etree.HTML(html)
r_list = parse_html.xpath(xpath)
return r_list
def main(self):
url = self.url.format(self.tieba_name)
if __name__ == '__main__':
inout_word = input("請輸入你要查詢(xún)的信息:")
key_word = parse.quote(inout_word)
spider = BaiduImageSpider(key_word)
spider.main()
3、xpath 數據分析
3.1、chrome_Xpath 插件安裝
1) 這里使用了一個(gè)插件。它可以快速檢查我們抓取的信息是否正確。具體安裝方法如下。
2)百度下載chrome_Xpath_v2.0.2.crx,chrome瀏覽器輸入:chrome://extensions/
3) 將chrome_Xpath_v2.0.2.crx 直接拖到擴展頁(yè)面;
4) 如果安裝失敗,彈出提示“無(wú)法從這個(gè)網(wǎng)站添加應用程序、擴展和用戶(hù)腳本”。如果遇到這個(gè)問(wèn)題,解決方法是:打開(kāi)開(kāi)發(fā)者模式保存crx文件(直接或者修改后綴為rar)解壓到一個(gè)文件夾,點(diǎn)擊開(kāi)發(fā)者模式加載解壓后的擴展,選擇解壓后的文件夾,點(diǎn)擊確定,安裝成功;
3.2、chrome_Xpath 插件使用
上面的chrome_Xpath插件我們已經(jīng)安裝好了,接下來(lái)就要用到了。
1) 打開(kāi)瀏覽器,按快捷鍵F12。
2) 選擇下圖所示的元素。
3) 右擊,然后選擇“Copy XPath”,如下圖。
3.3、寫(xiě)代碼,獲取鏈接函數。
我們已經(jīng)獲得了上面鏈接函數的Xpath路徑,然后定義了一個(gè)鏈接函數get_tlink并繼承self來(lái)實(shí)現多頁(yè)面抓取。
'''獲取鏈接函數'''
def get_tlink(self, url):
xpath = '//div[@class="threadlist_lz clearfix"]/div/a/@href'
t_list = self.get_parse_page(url, xpath)
# print(len(t_list))
for t in t_list:
t_link = "http://www.tieba.com" + t
'''接下來(lái)對帖子地址發(fā)送請求 將保存到本地'''
self.write_image(t_link)
4、保存數據
這里定義了一個(gè)write_image方法來(lái)保存數據,如下圖。
'''保存到本地函數'''
def write_image(self, t_link):
xpath = "//div[@class='d_post_content j_d_post_content clearfix']/img[@class='BDE_Image']/@src | //div[@class='video_src_wrapper']/embed/@data-video"
img_list = self.get_parse_page(t_link, xpath)
for img_link in img_list:
html = requests.get(url=img_link, headers=self.headers).content
filename = "百度/"+img_link[-10:]
with open(filename, 'wb') as f:
f.write(html)
print("%s下載成功" % filename)
注:@data-video 為 URL 中的視頻,如下圖所示。
【六、效果展示】
1、點(diǎn)擊運行,如下圖(請輸入您要查詢(xún)的信息):
2、以吳京為例輸入后回車(chē):
3、將下載的圖片保存在名為“百度”的文件夾中,該文件夾需要提前在本地創(chuàng )建。記得提前在當前代碼的同級目錄下新建一個(gè)名為“百度”的文件夾,否則系統找不到文件夾,會(huì )報錯找不到文件夾“百度”。
4、 下圖中的MP4為評論區視頻。
[七、總結]
1、 不建議抓取太多數據,可能造成服務(wù)器負載,簡(jiǎn)單試一下。
2、本文基于Python網(wǎng)絡(luò )爬蟲(chóng),利用爬蟲(chóng)庫實(shí)現百度貼吧評論區爬取。對Python爬取百度貼吧的一些難點(diǎn)進(jìn)行詳細講解并提供有效的解決方案。
3、歡迎積極嘗試。有時(shí)你看到別人實(shí)施起來(lái)很容易,但自己動(dòng)手時(shí),總會(huì )出現各種問(wèn)題。不看高手,努力理解更好。深刻的。學(xué)習r(shí)equests庫的使用和爬蟲(chóng)程序的編寫(xiě)。
4、 通過(guò)這個(gè)項目,你可以更快的得到你想要的信息。
5、如需本文源碼,請后臺回復“百度貼吧”獲取。
看完這篇文章你學(xué)會(huì )了嗎?請轉發(fā)并分享給更多人
IT共享之家 查看全部
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(如何實(shí)現搜索關(guān)鍵字?(一)_e操盤(pán)_)
2、如何搜索關(guān)鍵詞?
通過(guò)URL,我們可以發(fā)現我們只需要在kw=()和括號中輸入你要搜索的內容即可。這樣,我們就可以用一個(gè) {} 來(lái)代替它,后面我們會(huì )循環(huán)遍歷它。
【五、項目實(shí)施】
1、創(chuàng )建一個(gè)名為BaiduImageSpider的類(lèi),定義一個(gè)main方法main和一個(gè)初始化方法init。導入所需的庫。
import requests
from lxml import etree
from urllib import parse
class BaiduImageSpider(object):
def __init__(self, tieba_name):
pass
def main(self):
pass
if __name__ == '__main__':
inout_word = input("請輸入你要查詢(xún)的信息:")
spider.main()
pass
if __name__ == '__main__':
spider= ImageSpider()
spider.main()
2、準備url地址和請求頭來(lái)請求數據。
import requests
from lxml import etree
from urllib import parse
class BaiduImageSpider(object):
def __init__(self, tieba_name):
self.tieba_name = tieba_name #輸入的名字
self.url = "http://tieba.baidu.com/f?kw={}&ie=utf-8&pn=0"
self.headers = {
'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3)'
}
'''發(fā)送請求 獲取響應'''
def get_parse_page(self, url, xpath):
html = requests.get(url=url, headers=self.headers).content.decode("utf-8")
parse_html = etree.HTML(html)
r_list = parse_html.xpath(xpath)
return r_list
def main(self):
url = self.url.format(self.tieba_name)
if __name__ == '__main__':
inout_word = input("請輸入你要查詢(xún)的信息:")
key_word = parse.quote(inout_word)
spider = BaiduImageSpider(key_word)
spider.main()
3、xpath 數據分析
3.1、chrome_Xpath 插件安裝
1) 這里使用了一個(gè)插件。它可以快速檢查我們抓取的信息是否正確。具體安裝方法如下。
2)百度下載chrome_Xpath_v2.0.2.crx,chrome瀏覽器輸入:chrome://extensions/
3) 將chrome_Xpath_v2.0.2.crx 直接拖到擴展頁(yè)面;
4) 如果安裝失敗,彈出提示“無(wú)法從這個(gè)網(wǎng)站添加應用程序、擴展和用戶(hù)腳本”。如果遇到這個(gè)問(wèn)題,解決方法是:打開(kāi)開(kāi)發(fā)者模式保存crx文件(直接或者修改后綴為rar)解壓到一個(gè)文件夾,點(diǎn)擊開(kāi)發(fā)者模式加載解壓后的擴展,選擇解壓后的文件夾,點(diǎn)擊確定,安裝成功;
3.2、chrome_Xpath 插件使用
上面的chrome_Xpath插件我們已經(jīng)安裝好了,接下來(lái)就要用到了。
1) 打開(kāi)瀏覽器,按快捷鍵F12。
2) 選擇下圖所示的元素。
3) 右擊,然后選擇“Copy XPath”,如下圖。

3.3、寫(xiě)代碼,獲取鏈接函數。
我們已經(jīng)獲得了上面鏈接函數的Xpath路徑,然后定義了一個(gè)鏈接函數get_tlink并繼承self來(lái)實(shí)現多頁(yè)面抓取。
'''獲取鏈接函數'''
def get_tlink(self, url):
xpath = '//div[@class="threadlist_lz clearfix"]/div/a/@href'
t_list = self.get_parse_page(url, xpath)
# print(len(t_list))
for t in t_list:
t_link = "http://www.tieba.com" + t
'''接下來(lái)對帖子地址發(fā)送請求 將保存到本地'''
self.write_image(t_link)
4、保存數據
這里定義了一個(gè)write_image方法來(lái)保存數據,如下圖。
'''保存到本地函數'''
def write_image(self, t_link):
xpath = "//div[@class='d_post_content j_d_post_content clearfix']/img[@class='BDE_Image']/@src | //div[@class='video_src_wrapper']/embed/@data-video"
img_list = self.get_parse_page(t_link, xpath)
for img_link in img_list:
html = requests.get(url=img_link, headers=self.headers).content
filename = "百度/"+img_link[-10:]
with open(filename, 'wb') as f:
f.write(html)
print("%s下載成功" % filename)
注:@data-video 為 URL 中的視頻,如下圖所示。
【六、效果展示】
1、點(diǎn)擊運行,如下圖(請輸入您要查詢(xún)的信息):
2、以吳京為例輸入后回車(chē):
3、將下載的圖片保存在名為“百度”的文件夾中,該文件夾需要提前在本地創(chuàng )建。記得提前在當前代碼的同級目錄下新建一個(gè)名為“百度”的文件夾,否則系統找不到文件夾,會(huì )報錯找不到文件夾“百度”。
4、 下圖中的MP4為評論區視頻。

[七、總結]
1、 不建議抓取太多數據,可能造成服務(wù)器負載,簡(jiǎn)單試一下。
2、本文基于Python網(wǎng)絡(luò )爬蟲(chóng),利用爬蟲(chóng)庫實(shí)現百度貼吧評論區爬取。對Python爬取百度貼吧的一些難點(diǎn)進(jìn)行詳細講解并提供有效的解決方案。
3、歡迎積極嘗試。有時(shí)你看到別人實(shí)施起來(lái)很容易,但自己動(dòng)手時(shí),總會(huì )出現各種問(wèn)題。不看高手,努力理解更好。深刻的。學(xué)習r(shí)equests庫的使用和爬蟲(chóng)程序的編寫(xiě)。
4、 通過(guò)這個(gè)項目,你可以更快的得到你想要的信息。
5、如需本文源碼,請后臺回復“百度貼吧”獲取。
看完這篇文章你學(xué)會(huì )了嗎?請轉發(fā)并分享給更多人
IT共享之家
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(如何實(shí)現搜索關(guān)鍵字?(一)_e操盤(pán)_)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 126 次瀏覽 ? 2021-10-29 15:21
2、如何搜索關(guān)鍵詞?
通過(guò)URL,我們可以發(fā)現我們只需要在kw=()和括號中輸入你要搜索的內容即可。這樣,我們就可以用一個(gè) {} 來(lái)代替它,后面我們會(huì )循環(huán)遍歷它。
【五、項目實(shí)施】
1、創(chuàng )建一個(gè)名為BaiduImageSpider的類(lèi),定義一個(gè)main方法main和一個(gè)初始化方法init。導入所需的庫。
import requests
from lxml import etree
from urllib import parse
class BaiduImageSpider(object):
def __init__(self, tieba_name):
pass
def main(self):
pass
if __name__ == '__main__':
inout_word = input("請輸入你要查詢(xún)的信息:")
spider.main()
pass
if __name__ == '__main__':
spider= ImageSpider()
spider.main()
2、準備url地址和請求頭來(lái)請求數據。
import requests
from lxml import etree
from urllib import parse
class BaiduImageSpider(object):
def __init__(self, tieba_name):
self.tieba_name = tieba_name #輸入的名字
self.url = "http://tieba.baidu.com/f?kw={}&ie=utf-8&pn=0"
self.headers = {
'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3)'
}
'''發(fā)送請求 獲取響應'''
def get_parse_page(self, url, xpath):
html = requests.get(url=url, headers=self.headers).content.decode("utf-8")
parse_html = etree.HTML(html)
r_list = parse_html.xpath(xpath)
return r_list
def main(self):
url = self.url.format(self.tieba_name)
if __name__ == '__main__':
inout_word = input("請輸入你要查詢(xún)的信息:")
key_word = parse.quote(inout_word)
spider = BaiduImageSpider(key_word)
spider.main()
3、xpath 數據分析
3.1、chrome_Xpath 插件安裝
1) 這里使用了一個(gè)插件。它可以快速檢查我們抓取的信息是否正確。具體安裝方法如下。
2)百度下載chrome_Xpath_v2.0.2.crx,chrome瀏覽器輸入:chrome://extensions/
3) 將chrome_Xpath_v2.0.2.crx 直接拖到擴展頁(yè)面;
4) 如果安裝失敗,彈窗提示“無(wú)法從這個(gè)網(wǎng)站添加應用程序、擴展和用戶(hù)腳本”。如果遇到這個(gè)問(wèn)題,解決方法是:打開(kāi)開(kāi)發(fā)者模式保存crx文件(直接或者修改后綴為rar)解壓到一個(gè)文件夾,點(diǎn)擊開(kāi)發(fā)者模式加載解壓后的擴展,選擇解壓后的文件夾,點(diǎn)擊確定,安裝成功;
3.2、chrome_Xpath 插件使用
上面的chrome_Xpath插件我們已經(jīng)安裝好了,接下來(lái)就要用到了。1) 打開(kāi)瀏覽器,按快捷鍵F12。2) 選擇下圖所示的元素。
3) 右擊,然后選擇“復制XPath”,如下圖。
3.3、寫(xiě)代碼,獲取鏈接函數。
我們已經(jīng)獲得了上面鏈接函數的Xpath路徑,然后定義了一個(gè)鏈接函數get_tlink并繼承self來(lái)實(shí)現多頁(yè)面抓取。
'''獲取鏈接函數'''
def get_tlink(self, url):
xpath = '//div[@class="threadlist_lz clearfix"]/div/a/@href'
t_list = self.get_parse_page(url, xpath)
# print(len(t_list))
for t in t_list:
t_link = "http://www.tieba.com" + t
'''接下來(lái)對帖子地址發(fā)送請求 將保存到本地'''
self.write_image(t_link)
4、保存數據
這里定義了一個(gè)write_image方法來(lái)保存數據,如下圖。
'''保存到本地函數'''
def write_image(self, t_link):
xpath = "//div[@class='d_post_content j_d_post_content clearfix']/img[@class='BDE_Image']/@src | //div[@class='video_src_wrapper']/embed/@data-video"
img_list = self.get_parse_page(t_link, xpath)
for img_link in img_list:
html = requests.get(url=img_link, headers=self.headers).content
filename = "百度/"+img_link[-10:]
with open(filename, 'wb') as f:
f.write(html)
print("%s下載成功" % filename)
注:@data-video 為 URL 中的視頻,如下圖所示。
【六、效果展示】
1、點(diǎn)擊運行,如下圖(請輸入您要查詢(xún)的信息):
2、以吳京為例輸入后回車(chē):
3、將下載的圖片保存在名為“百度”的文件夾中,該文件夾需要提前在本地創(chuàng )建。記得提前在當前代碼的同級目錄下新建一個(gè)名為“百度”的文件夾,否則系統找不到文件夾,會(huì )報錯找不到文件夾“百度”。
4、下圖中的MP4為評論區視頻。
[七、總結]
1、 不建議抓取太多數據,可能造成服務(wù)器負載,簡(jiǎn)單試一下。
2、本文基于Python網(wǎng)絡(luò )爬蟲(chóng),利用爬蟲(chóng)庫實(shí)現百度貼吧評論區爬取。對Python爬取百度貼吧的一些難點(diǎn)進(jìn)行詳細講解并提供有效的解決方案。3、歡迎積極嘗試。有時(shí)你看到別人實(shí)施起來(lái)很容易,但自己動(dòng)手時(shí),總會(huì )出現各種問(wèn)題。不要自卑,勤于理解。深刻的。學(xué)習r(shí)equests庫的使用和爬蟲(chóng)程序的編寫(xiě)。4、 通過(guò)這個(gè)項目,你可以更快的得到你想要的信息。 查看全部
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(如何實(shí)現搜索關(guān)鍵字?(一)_e操盤(pán)_)
2、如何搜索關(guān)鍵詞?
通過(guò)URL,我們可以發(fā)現我們只需要在kw=()和括號中輸入你要搜索的內容即可。這樣,我們就可以用一個(gè) {} 來(lái)代替它,后面我們會(huì )循環(huán)遍歷它。
【五、項目實(shí)施】
1、創(chuàng )建一個(gè)名為BaiduImageSpider的類(lèi),定義一個(gè)main方法main和一個(gè)初始化方法init。導入所需的庫。
import requests
from lxml import etree
from urllib import parse
class BaiduImageSpider(object):
def __init__(self, tieba_name):
pass
def main(self):
pass
if __name__ == '__main__':
inout_word = input("請輸入你要查詢(xún)的信息:")
spider.main()
pass
if __name__ == '__main__':
spider= ImageSpider()
spider.main()
2、準備url地址和請求頭來(lái)請求數據。
import requests
from lxml import etree
from urllib import parse
class BaiduImageSpider(object):
def __init__(self, tieba_name):
self.tieba_name = tieba_name #輸入的名字
self.url = "http://tieba.baidu.com/f?kw={}&ie=utf-8&pn=0"
self.headers = {
'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3)'
}
'''發(fā)送請求 獲取響應'''
def get_parse_page(self, url, xpath):
html = requests.get(url=url, headers=self.headers).content.decode("utf-8")
parse_html = etree.HTML(html)
r_list = parse_html.xpath(xpath)
return r_list
def main(self):
url = self.url.format(self.tieba_name)
if __name__ == '__main__':
inout_word = input("請輸入你要查詢(xún)的信息:")
key_word = parse.quote(inout_word)
spider = BaiduImageSpider(key_word)
spider.main()
3、xpath 數據分析
3.1、chrome_Xpath 插件安裝
1) 這里使用了一個(gè)插件。它可以快速檢查我們抓取的信息是否正確。具體安裝方法如下。
2)百度下載chrome_Xpath_v2.0.2.crx,chrome瀏覽器輸入:chrome://extensions/
3) 將chrome_Xpath_v2.0.2.crx 直接拖到擴展頁(yè)面;
4) 如果安裝失敗,彈窗提示“無(wú)法從這個(gè)網(wǎng)站添加應用程序、擴展和用戶(hù)腳本”。如果遇到這個(gè)問(wèn)題,解決方法是:打開(kāi)開(kāi)發(fā)者模式保存crx文件(直接或者修改后綴為rar)解壓到一個(gè)文件夾,點(diǎn)擊開(kāi)發(fā)者模式加載解壓后的擴展,選擇解壓后的文件夾,點(diǎn)擊確定,安裝成功;
3.2、chrome_Xpath 插件使用
上面的chrome_Xpath插件我們已經(jīng)安裝好了,接下來(lái)就要用到了。1) 打開(kāi)瀏覽器,按快捷鍵F12。2) 選擇下圖所示的元素。
3) 右擊,然后選擇“復制XPath”,如下圖。
3.3、寫(xiě)代碼,獲取鏈接函數。
我們已經(jīng)獲得了上面鏈接函數的Xpath路徑,然后定義了一個(gè)鏈接函數get_tlink并繼承self來(lái)實(shí)現多頁(yè)面抓取。
'''獲取鏈接函數'''
def get_tlink(self, url):
xpath = '//div[@class="threadlist_lz clearfix"]/div/a/@href'
t_list = self.get_parse_page(url, xpath)
# print(len(t_list))
for t in t_list:
t_link = "http://www.tieba.com" + t
'''接下來(lái)對帖子地址發(fā)送請求 將保存到本地'''
self.write_image(t_link)
4、保存數據
這里定義了一個(gè)write_image方法來(lái)保存數據,如下圖。
'''保存到本地函數'''
def write_image(self, t_link):
xpath = "//div[@class='d_post_content j_d_post_content clearfix']/img[@class='BDE_Image']/@src | //div[@class='video_src_wrapper']/embed/@data-video"
img_list = self.get_parse_page(t_link, xpath)
for img_link in img_list:
html = requests.get(url=img_link, headers=self.headers).content
filename = "百度/"+img_link[-10:]
with open(filename, 'wb') as f:
f.write(html)
print("%s下載成功" % filename)
注:@data-video 為 URL 中的視頻,如下圖所示。
【六、效果展示】
1、點(diǎn)擊運行,如下圖(請輸入您要查詢(xún)的信息):
2、以吳京為例輸入后回車(chē):
3、將下載的圖片保存在名為“百度”的文件夾中,該文件夾需要提前在本地創(chuàng )建。記得提前在當前代碼的同級目錄下新建一個(gè)名為“百度”的文件夾,否則系統找不到文件夾,會(huì )報錯找不到文件夾“百度”。
4、下圖中的MP4為評論區視頻。
[七、總結]
1、 不建議抓取太多數據,可能造成服務(wù)器負載,簡(jiǎn)單試一下。
2、本文基于Python網(wǎng)絡(luò )爬蟲(chóng),利用爬蟲(chóng)庫實(shí)現百度貼吧評論區爬取。對Python爬取百度貼吧的一些難點(diǎn)進(jìn)行詳細講解并提供有效的解決方案。3、歡迎積極嘗試。有時(shí)你看到別人實(shí)施起來(lái)很容易,但自己動(dòng)手時(shí),總會(huì )出現各種問(wèn)題。不要自卑,勤于理解。深刻的。學(xué)習r(shí)equests庫的使用和爬蟲(chóng)程序的編寫(xiě)。4、 通過(guò)這個(gè)項目,你可以更快的得到你想要的信息。
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(Python項目案例開(kāi)發(fā)從入門(mén)到實(shí)戰》(清華大學(xué)出版社鄭秋生))
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 83 次瀏覽 ? 2021-10-29 15:18
來(lái)自《Python項目案例開(kāi)發(fā)從入門(mén)到實(shí)戰》(清華大學(xué)出版社鄭秋生、夏敏毅主編)爬蟲(chóng)應用-抓取百度圖片
本文爬取了搜狗圖片庫中的圖片。與抓取特定網(wǎng)頁(yè)中的圖片相比,抓取圖片庫中的圖片相對復雜一些。復雜的主要原因在于圖片的動(dòng)態(tài)加載。
圖片庫中的圖片太多,所以在訪(fǎng)問(wèn)網(wǎng)頁(yè)時(shí),并不是一次性加載所有圖片,而是根據鼠標滾輪的行為動(dòng)態(tài)加載。這將導致與之前抓取特定網(wǎng)頁(yè)中的圖片不同。主要原因是沒(méi)有辦法通過(guò)之前查看網(wǎng)頁(yè)源代碼的方法直接獲取到存儲圖片的鏈接。相反,它需要在網(wǎng)絡(luò )中 XHR 下的標題和預覽中找到。圖片存儲網(wǎng)址的規律。
別著(zhù)急,我們稍后會(huì )詳細解釋。首先,我先貼出代碼:
1 import requests
2 import urllib
3 import json
4 import os
5 import shutil # 用來(lái)刪除文件夾
6
7
8 def getSogouImag(category, length, path):
9 # 判斷文件夾是否存在,存在則刪除
10 if os.path.exists(path):
11 shutil.rmtree(path)
12 # 創(chuàng )建文件夾
13 os.mkdir(path)
14 # 得到要爬取的圖片數量
15 n = length
16 # 返回要爬取的類(lèi)別
17 cate = category
18 # 根據搜索的網(wǎng)頁(yè)得到存儲圖片的網(wǎng)頁(yè)是這個(gè)代碼的難點(diǎn),下面會(huì )詳細講解
19 url = 'https://pic.sogou.com/pics/channel/getAllRecomPicByTag.jsp?category=' + cate + '&tag=%E5%85%A8%E9%83%A8&start=0&len=' + str(n)
20 # 訪(fǎng)問(wèn)網(wǎng)頁(yè)
21 imgs = requests.get(url)
22 # 獲取網(wǎng)頁(yè)內容
23 imgs_text = imgs.text
24 # 字符串轉換成json格式
25 imgs_json = json.loads(imgs_text)
26 # 得到圖片信息列表
27 imgs_items = imgs_json['all_items']
28 m = 0
29 # 存儲每個(gè)想要保存的圖片鏈接,為了后續
30 for i in imgs_items:
31 # thumbUrl存儲的圖片是大小為480*360的圖片網(wǎng)頁(yè)
32 img_url = i['thumbUrl']
33 print('*********' + str(m) + '.png********' + 'Downloading...')
34 print('下載的url: ', img_url)
35 # 下載圖片并且保存
36 urllib.request.urlretrieve(img_url, path+str(m) + '.jpg')
37 m = m + 1
38 print('Download complete !')
39
40
41 getSogouImag('壁紙', 5, './img/')
42
43 pass
在這里,獲取存儲圖像的URL是關(guān)鍵和難點(diǎn)。下面詳細介紹如何獲取URL。
?。?)首先打開(kāi)源碼(chrome可以點(diǎn)擊鼠標右鍵,按Inspect),這時(shí)候如果用前三章(爬蟲(chóng)系列一和系列二)抓取指定網(wǎng)頁(yè)中的圖片)正則表達式或CSS標簽過(guò)濾等方法只會(huì )返回一個(gè)搜狗圖標圖片,其他我們要下載的顯示圖片是看不到的。
?。?)如果我們要找到我們要下載的圖片,必須點(diǎn)擊Network,選擇XHR,然后我們會(huì )在Name中看到getAllRecomPicByTag.jsp?category=%E5%A3%81%E7%BA column 用鼠標加載圖片越多,這個(gè)getAllRecomPicByTag的內容就會(huì )出現越多,點(diǎn)擊它,可以看到存儲圖片地址的API出現了。
在這里,您可以單擊預覽并觀(guān)察此 json 數組。一層一層打開(kāi)all_items,可以看到里面存放了圖片的地址。如果您明白這是我們可以找到圖片鏈接的地方,那么我們就可以確定我們想要的圖片鏈接您找到的圖片鏈接在 Headers 中。
?。?)點(diǎn)擊Headers可以找到對應的url鏈接。
請求 URL 鏈接如下所示:
%E5%A3%81%E7%BA%B8&tag=%E5%85%A8%E9%83%A8&start=0&len=15&width=1920&height=1080
我們猜測這應該是搜狗圖片存放圖片鏈接的URL,我們來(lái)解析一下。先看category和tag后面的字符串,應該是字符的編碼。檢查%E5%A3%81%E7%BA%B8是“壁紙”的編碼,%E5%85%A8%E9%83%是“全部”編碼,所以上面的鏈接和下面的鏈接是相等的:
壁紙&tag=all&start=0&len=15&width=1920&height=1080
網(wǎng)頁(yè)打開(kāi)如下圖所示:
另外,start是起始下標,len是長(cháng)度,也就是圖片張數,所以我們可以通過(guò)這個(gè)信息給url傳入參數,讓搜索更加靈活,如下圖:
url ='' + cate +'&tag=%E5%85%A8%E9%83%A8&start=0&len=' + str(n)
其中,cate和n是可以自定義的變量,分別代表要搜索的類(lèi)別和要爬取的圖片數量。
以上就是使用python動(dòng)態(tài)抓取圖片庫中圖片的詳細講解,希望可以幫助大家理解。 查看全部
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(Python項目案例開(kāi)發(fā)從入門(mén)到實(shí)戰》(清華大學(xué)出版社鄭秋生))
來(lái)自《Python項目案例開(kāi)發(fā)從入門(mén)到實(shí)戰》(清華大學(xué)出版社鄭秋生、夏敏毅主編)爬蟲(chóng)應用-抓取百度圖片
本文爬取了搜狗圖片庫中的圖片。與抓取特定網(wǎng)頁(yè)中的圖片相比,抓取圖片庫中的圖片相對復雜一些。復雜的主要原因在于圖片的動(dòng)態(tài)加載。
圖片庫中的圖片太多,所以在訪(fǎng)問(wèn)網(wǎng)頁(yè)時(shí),并不是一次性加載所有圖片,而是根據鼠標滾輪的行為動(dòng)態(tài)加載。這將導致與之前抓取特定網(wǎng)頁(yè)中的圖片不同。主要原因是沒(méi)有辦法通過(guò)之前查看網(wǎng)頁(yè)源代碼的方法直接獲取到存儲圖片的鏈接。相反,它需要在網(wǎng)絡(luò )中 XHR 下的標題和預覽中找到。圖片存儲網(wǎng)址的規律。
別著(zhù)急,我們稍后會(huì )詳細解釋。首先,我先貼出代碼:
1 import requests
2 import urllib
3 import json
4 import os
5 import shutil # 用來(lái)刪除文件夾
6
7
8 def getSogouImag(category, length, path):
9 # 判斷文件夾是否存在,存在則刪除
10 if os.path.exists(path):
11 shutil.rmtree(path)
12 # 創(chuàng )建文件夾
13 os.mkdir(path)
14 # 得到要爬取的圖片數量
15 n = length
16 # 返回要爬取的類(lèi)別
17 cate = category
18 # 根據搜索的網(wǎng)頁(yè)得到存儲圖片的網(wǎng)頁(yè)是這個(gè)代碼的難點(diǎn),下面會(huì )詳細講解
19 url = 'https://pic.sogou.com/pics/channel/getAllRecomPicByTag.jsp?category=' + cate + '&tag=%E5%85%A8%E9%83%A8&start=0&len=' + str(n)
20 # 訪(fǎng)問(wèn)網(wǎng)頁(yè)
21 imgs = requests.get(url)
22 # 獲取網(wǎng)頁(yè)內容
23 imgs_text = imgs.text
24 # 字符串轉換成json格式
25 imgs_json = json.loads(imgs_text)
26 # 得到圖片信息列表
27 imgs_items = imgs_json['all_items']
28 m = 0
29 # 存儲每個(gè)想要保存的圖片鏈接,為了后續
30 for i in imgs_items:
31 # thumbUrl存儲的圖片是大小為480*360的圖片網(wǎng)頁(yè)
32 img_url = i['thumbUrl']
33 print('*********' + str(m) + '.png********' + 'Downloading...')
34 print('下載的url: ', img_url)
35 # 下載圖片并且保存
36 urllib.request.urlretrieve(img_url, path+str(m) + '.jpg')
37 m = m + 1
38 print('Download complete !')
39
40
41 getSogouImag('壁紙', 5, './img/')
42
43 pass
在這里,獲取存儲圖像的URL是關(guān)鍵和難點(diǎn)。下面詳細介紹如何獲取URL。
?。?)首先打開(kāi)源碼(chrome可以點(diǎn)擊鼠標右鍵,按Inspect),這時(shí)候如果用前三章(爬蟲(chóng)系列一和系列二)抓取指定網(wǎng)頁(yè)中的圖片)正則表達式或CSS標簽過(guò)濾等方法只會(huì )返回一個(gè)搜狗圖標圖片,其他我們要下載的顯示圖片是看不到的。
?。?)如果我們要找到我們要下載的圖片,必須點(diǎn)擊Network,選擇XHR,然后我們會(huì )在Name中看到getAllRecomPicByTag.jsp?category=%E5%A3%81%E7%BA column 用鼠標加載圖片越多,這個(gè)getAllRecomPicByTag的內容就會(huì )出現越多,點(diǎn)擊它,可以看到存儲圖片地址的API出現了。
在這里,您可以單擊預覽并觀(guān)察此 json 數組。一層一層打開(kāi)all_items,可以看到里面存放了圖片的地址。如果您明白這是我們可以找到圖片鏈接的地方,那么我們就可以確定我們想要的圖片鏈接您找到的圖片鏈接在 Headers 中。

?。?)點(diǎn)擊Headers可以找到對應的url鏈接。

請求 URL 鏈接如下所示:
%E5%A3%81%E7%BA%B8&tag=%E5%85%A8%E9%83%A8&start=0&len=15&width=1920&height=1080
我們猜測這應該是搜狗圖片存放圖片鏈接的URL,我們來(lái)解析一下。先看category和tag后面的字符串,應該是字符的編碼。檢查%E5%A3%81%E7%BA%B8是“壁紙”的編碼,%E5%85%A8%E9%83%是“全部”編碼,所以上面的鏈接和下面的鏈接是相等的:
壁紙&tag=all&start=0&len=15&width=1920&height=1080
網(wǎng)頁(yè)打開(kāi)如下圖所示:

另外,start是起始下標,len是長(cháng)度,也就是圖片張數,所以我們可以通過(guò)這個(gè)信息給url傳入參數,讓搜索更加靈活,如下圖:
url ='' + cate +'&tag=%E5%85%A8%E9%83%A8&start=0&len=' + str(n)
其中,cate和n是可以自定義的變量,分別代表要搜索的類(lèi)別和要爬取的圖片數量。
以上就是使用python動(dòng)態(tài)抓取圖片庫中圖片的詳細講解,希望可以幫助大家理解。
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(如何實(shí)現搜索關(guān)鍵字?(一)_e操盤(pán)_)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 78 次瀏覽 ? 2021-10-29 13:07
2、如何搜索關(guān)鍵詞?
通過(guò)URL,我們可以發(fā)現我們只需要在kw=()和括號中輸入你要搜索的內容即可。這樣,我們就可以用一個(gè) {} 來(lái)代替它,后面我們會(huì )循環(huán)遍歷它。
【五、項目實(shí)施】
1、創(chuàng )建一個(gè)名為BaiduImageSpider的類(lèi),定義一個(gè)main方法main和一個(gè)初始化方法init。導入所需的庫。
import requests
from lxml import etree
from urllib import parse
class BaiduImageSpider(object):
? ?def __init__(self, tieba_name):
? ? ? ?pass
? ?def main(self):
? ? ? ?pass
if __name__ == '__main__':
? ?inout_word = input("請輸入你要查詢(xún)的信息:")
? ?spider.main()
? ? ? ?pass
if __name__ == '__main__':
? ?spider= ImageSpider()
? ?spider.main()
2、準備url地址和請求頭來(lái)請求數據。
import requests
from lxml import etree
from urllib import parse
class BaiduImageSpider(object):
? ?def __init__(self, tieba_name):
? ? ? ? ?self.tieba_name = tieba_name #輸入的名字
? ? ? ?self.url = "http://tieba.baidu.com/f?kw={}&ie=utf-8&pn=0"
? ? ? ?self.headers = {
? ? ? ? ? ?'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3)'
? ? ? ?}
? ?'''發(fā)送請求 獲取響應'''
? ?def get_parse_page(self, url, xpath):
? ? ? ?html = requests.get(url=url, headers=self.headers).content.decode("utf-8")
? ? ? ?parse_html = etree.HTML(html)
? ? ? ?r_list = parse_html.xpath(xpath)
? ? ? ?return r_list
? ?def main(self):
? ? ? ?url = self.url.format(self.tieba_name)
if __name__ == '__main__':
? ?inout_word = input("請輸入你要查詢(xún)的信息:")
? ?key_word = parse.quote(inout_word)
? ?spider = BaiduImageSpider(key_word)
? ?spider.main()
3、xpath 數據分析
3.1、chrome_Xpath 插件安裝
1) 這里使用了一個(gè)插件。它可以快速檢查我們抓取的信息是否正確。具體安裝方法如下。
2)百度下載chrome_Xpath_v2.0.2.crx,chrome瀏覽器輸入:chrome://extensions/
3) 將chrome_Xpath_v2.0.2.crx 直接拖到擴展頁(yè)面;
4) 如果安裝失敗,彈出提示“無(wú)法從這個(gè)網(wǎng)站添加應用程序、擴展和用戶(hù)腳本”。如果遇到這個(gè)問(wèn)題,解決方法是:打開(kāi)開(kāi)發(fā)者模式保存crx文件(直接或者修改后綴為rar)解壓到一個(gè)文件夾,點(diǎn)擊開(kāi)發(fā)者模式加載解壓后的擴展,選擇解壓后的文件夾,點(diǎn)擊確定,安裝成功;
3.2、chrome_Xpath 插件使用
上面的chrome_Xpath插件我們已經(jīng)安裝好了,接下來(lái)就要用到了。1) 打開(kāi)瀏覽器,按快捷鍵F12。2) 選擇下圖所示的元素。
3) 右擊,然后選擇“Copy XPath”,如下圖。
3.3、寫(xiě)代碼,獲取鏈接函數。
我們已經(jīng)獲得了上面鏈接函數的Xpath路徑,然后定義了一個(gè)鏈接函數get_tlink并繼承self來(lái)實(shí)現多頁(yè)面抓取。
'''獲取鏈接函數'''
? ?def get_tlink(self, url):
? ? ? ?xpath = '//div[@class="threadlist_lz clearfix"]/div/a/@href'
? ? ? ?t_list = self.get_parse_page(url, xpath)
? ? ? ?# print(len(t_list))
? ? ? ?for t in t_list:
? ? ? ? ? ?t_link = "http://www.tieba.com" + t
? ? ? ? ? ?'''接下來(lái)對帖子地址發(fā)送請求 ?將保存到本地'''
? ? ? ? ? ?self.write_image(t_link)
4、保存數據
這里定義了一個(gè)write_image方法來(lái)保存數據,如下圖。
'''保存到本地函數'''
def write_image(self, t_link):
? ? ?xpath = "//div[@class='d_post_content j_d_post_content clearfix']/img[@class='BDE_Image']/@src | //div[@class='video_src_wrapper']/embed/@data-video"
? ? ? ?img_list = self.get_parse_page(t_link, xpath) ? ? ?
? ? ? ?for img_link in img_list: ?
? ? ? ? ? ?html = requests.get(url=img_link, headers=self.headers).content
? ? ? ? ? ?filename = "百度/"+img_link[-10:]
? ? ? ?
? ? ? ? ? ?with open(filename, 'wb') as f:
? ? ? ? ? ? ? ?f.write(html)
? ? ? ? ? ? ? ?print("%s下載成功" % filename)
如下所示:
【六、效果展示】
1、點(diǎn)擊運行,如下圖(請輸入您要查詢(xún)的信息):
2、以吳京為例輸入后回車(chē):
3、將下載的圖片保存在名為“百度”的文件夾中,該文件夾需要提前在本地創(chuàng )建。記得提前在當前代碼的同級目錄下新建一個(gè)名為“百度”的文件夾,否則系統找不到文件夾,會(huì )報錯找不到文件夾“百度”。
4、 下圖中的MP4為評論區視頻。
總結:
1、 不建議抓取太多數據,可能造成服務(wù)器負載,簡(jiǎn)單試一下。
2、本文基于Python網(wǎng)絡(luò )爬蟲(chóng),利用爬蟲(chóng)庫實(shí)現百度貼吧評論區爬取。對Python爬取百度貼吧的一些難點(diǎn)進(jìn)行詳細講解并提供有效的解決方案。3、歡迎積極嘗試。有時(shí)你看到別人實(shí)施起來(lái)很容易,但自己動(dòng)手時(shí),總會(huì )出現各種問(wèn)題。不要自卑,勤于理解。深刻的。學(xué)習r(shí)equests庫的使用和爬蟲(chóng)程序的編寫(xiě)。
關(guān)于如何使用Python網(wǎng)絡(luò )爬蟲(chóng)抓取百度貼吧評論區的圖片和視頻的問(wèn)題解答分享到這里。希望以上內容對大家有所幫助。如果您還有很多疑問(wèn),可以關(guān)注一宿云行業(yè)資訊頻道,了解更多相關(guān)知識。 查看全部
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(如何實(shí)現搜索關(guān)鍵字?(一)_e操盤(pán)_)
2、如何搜索關(guān)鍵詞?
通過(guò)URL,我們可以發(fā)現我們只需要在kw=()和括號中輸入你要搜索的內容即可。這樣,我們就可以用一個(gè) {} 來(lái)代替它,后面我們會(huì )循環(huán)遍歷它。
【五、項目實(shí)施】
1、創(chuàng )建一個(gè)名為BaiduImageSpider的類(lèi),定義一個(gè)main方法main和一個(gè)初始化方法init。導入所需的庫。
import requests
from lxml import etree
from urllib import parse
class BaiduImageSpider(object):
? ?def __init__(self, tieba_name):
? ? ? ?pass
? ?def main(self):
? ? ? ?pass
if __name__ == '__main__':
? ?inout_word = input("請輸入你要查詢(xún)的信息:")
? ?spider.main()
? ? ? ?pass
if __name__ == '__main__':
? ?spider= ImageSpider()
? ?spider.main()
2、準備url地址和請求頭來(lái)請求數據。
import requests
from lxml import etree
from urllib import parse
class BaiduImageSpider(object):
? ?def __init__(self, tieba_name):
? ? ? ? ?self.tieba_name = tieba_name #輸入的名字
? ? ? ?self.url = "http://tieba.baidu.com/f?kw={}&ie=utf-8&pn=0"
? ? ? ?self.headers = {
? ? ? ? ? ?'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3)'
? ? ? ?}
? ?'''發(fā)送請求 獲取響應'''
? ?def get_parse_page(self, url, xpath):
? ? ? ?html = requests.get(url=url, headers=self.headers).content.decode("utf-8")
? ? ? ?parse_html = etree.HTML(html)
? ? ? ?r_list = parse_html.xpath(xpath)
? ? ? ?return r_list
? ?def main(self):
? ? ? ?url = self.url.format(self.tieba_name)
if __name__ == '__main__':
? ?inout_word = input("請輸入你要查詢(xún)的信息:")
? ?key_word = parse.quote(inout_word)
? ?spider = BaiduImageSpider(key_word)
? ?spider.main()
3、xpath 數據分析
3.1、chrome_Xpath 插件安裝
1) 這里使用了一個(gè)插件。它可以快速檢查我們抓取的信息是否正確。具體安裝方法如下。
2)百度下載chrome_Xpath_v2.0.2.crx,chrome瀏覽器輸入:chrome://extensions/

3) 將chrome_Xpath_v2.0.2.crx 直接拖到擴展頁(yè)面;
4) 如果安裝失敗,彈出提示“無(wú)法從這個(gè)網(wǎng)站添加應用程序、擴展和用戶(hù)腳本”。如果遇到這個(gè)問(wèn)題,解決方法是:打開(kāi)開(kāi)發(fā)者模式保存crx文件(直接或者修改后綴為rar)解壓到一個(gè)文件夾,點(diǎn)擊開(kāi)發(fā)者模式加載解壓后的擴展,選擇解壓后的文件夾,點(diǎn)擊確定,安裝成功;
3.2、chrome_Xpath 插件使用
上面的chrome_Xpath插件我們已經(jīng)安裝好了,接下來(lái)就要用到了。1) 打開(kāi)瀏覽器,按快捷鍵F12。2) 選擇下圖所示的元素。

3) 右擊,然后選擇“Copy XPath”,如下圖。

3.3、寫(xiě)代碼,獲取鏈接函數。
我們已經(jīng)獲得了上面鏈接函數的Xpath路徑,然后定義了一個(gè)鏈接函數get_tlink并繼承self來(lái)實(shí)現多頁(yè)面抓取。
'''獲取鏈接函數'''
? ?def get_tlink(self, url):
? ? ? ?xpath = '//div[@class="threadlist_lz clearfix"]/div/a/@href'
? ? ? ?t_list = self.get_parse_page(url, xpath)
? ? ? ?# print(len(t_list))
? ? ? ?for t in t_list:
? ? ? ? ? ?t_link = "http://www.tieba.com" + t
? ? ? ? ? ?'''接下來(lái)對帖子地址發(fā)送請求 ?將保存到本地'''
? ? ? ? ? ?self.write_image(t_link)
4、保存數據
這里定義了一個(gè)write_image方法來(lái)保存數據,如下圖。
'''保存到本地函數'''
def write_image(self, t_link):
? ? ?xpath = "//div[@class='d_post_content j_d_post_content clearfix']/img[@class='BDE_Image']/@src | //div[@class='video_src_wrapper']/embed/@data-video"
? ? ? ?img_list = self.get_parse_page(t_link, xpath) ? ? ?
? ? ? ?for img_link in img_list: ?
? ? ? ? ? ?html = requests.get(url=img_link, headers=self.headers).content
? ? ? ? ? ?filename = "百度/"+img_link[-10:]
? ? ? ?
? ? ? ? ? ?with open(filename, 'wb') as f:
? ? ? ? ? ? ? ?f.write(html)
? ? ? ? ? ? ? ?print("%s下載成功" % filename)
如下所示:

【六、效果展示】
1、點(diǎn)擊運行,如下圖(請輸入您要查詢(xún)的信息):

2、以吳京為例輸入后回車(chē):

3、將下載的圖片保存在名為“百度”的文件夾中,該文件夾需要提前在本地創(chuàng )建。記得提前在當前代碼的同級目錄下新建一個(gè)名為“百度”的文件夾,否則系統找不到文件夾,會(huì )報錯找不到文件夾“百度”。

4、 下圖中的MP4為評論區視頻。

總結:
1、 不建議抓取太多數據,可能造成服務(wù)器負載,簡(jiǎn)單試一下。
2、本文基于Python網(wǎng)絡(luò )爬蟲(chóng),利用爬蟲(chóng)庫實(shí)現百度貼吧評論區爬取。對Python爬取百度貼吧的一些難點(diǎn)進(jìn)行詳細講解并提供有效的解決方案。3、歡迎積極嘗試。有時(shí)你看到別人實(shí)施起來(lái)很容易,但自己動(dòng)手時(shí),總會(huì )出現各種問(wèn)題。不要自卑,勤于理解。深刻的。學(xué)習r(shí)equests庫的使用和爬蟲(chóng)程序的編寫(xiě)。
關(guān)于如何使用Python網(wǎng)絡(luò )爬蟲(chóng)抓取百度貼吧評論區的圖片和視頻的問(wèn)題解答分享到這里。希望以上內容對大家有所幫助。如果您還有很多疑問(wèn),可以關(guān)注一宿云行業(yè)資訊頻道,了解更多相關(guān)知識。
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(什么叫網(wǎng)絡(luò )爬蟲(chóng),也稱(chēng)之為抓取和網(wǎng)頁(yè)數據獲取(圖))
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 86 次瀏覽 ? 2021-10-27 09:11
什么是網(wǎng)絡(luò )爬蟲(chóng)?
國外的網(wǎng)絡(luò )爬蟲(chóng)也叫網(wǎng)頁(yè)抓取和網(wǎng)頁(yè)數據采集。它們大多是指根據HTML文件傳輸協(xié)議(HTTP)或根據網(wǎng)絡(luò )計算機瀏覽器獲取可在互聯(lián)網(wǎng)上使用的數據。
網(wǎng)絡(luò )數據抓取如何工作?
一般在獲取網(wǎng)頁(yè)數據時(shí)只需要兩個(gè)過(guò)程。
打開(kāi)網(wǎng)頁(yè) → 從網(wǎng)頁(yè)復制實(shí)際數據并將其導出到報告或數據庫文件。
關(guān)于國外的網(wǎng)絡(luò )爬蟲(chóng),這一切是如何開(kāi)始的?
雖然對很多人來(lái)說(shuō),網(wǎng)絡(luò )爬蟲(chóng)聽(tīng)起來(lái)像是“大數據”或“深度學(xué)習”等新概念,但實(shí)際上網(wǎng)絡(luò )數據爬蟲(chóng)的歷史時(shí)間似乎很長(cháng),這可以追溯到seo專(zhuān)業(yè)培訓。金手指專(zhuān)長(cháng)四:當專(zhuān)網(wǎng)(或流行的“互聯(lián)網(wǎng)技術(shù)”)出現時(shí)。
一開(kāi)始,互聯(lián)網(wǎng)技術(shù)還沒(méi)有被搜索到。在百度搜索引擎開(kāi)發(fā)和設計之前,互聯(lián)網(wǎng)技術(shù)只是文件傳輸協(xié)議(FTP)網(wǎng)站的組合,客戶(hù)可以通過(guò)這個(gè)網(wǎng)站導航找到特殊的共享文檔。
為了搜索和seo專(zhuān)業(yè)培訓。百金手指專(zhuān)業(yè)4:為了形成可用于互聯(lián)網(wǎng)技術(shù)的分布式系統數據,我們建立了一個(gè)自動(dòng)化的技術(shù)程序流程,稱(chēng)為網(wǎng)絡(luò )爬蟲(chóng)/智能機器人,它可以抓取所有的互聯(lián)網(wǎng)技術(shù)網(wǎng)頁(yè),然后復制將所有網(wǎng)頁(yè)上的內容寫(xiě)入數據庫文件,以制作數據庫索引。
然后,隨著(zhù)互聯(lián)網(wǎng)的發(fā)展,數以千萬(wàn)計的網(wǎng)頁(yè)最終以多種不同的方式轉化為這樣的收錄數據的網(wǎng)頁(yè),包括文本、圖像、視頻和音頻?;ヂ?lián)網(wǎng)技術(shù)已經(jīng)成為一個(gè)開(kāi)放的數據源。
隨著(zhù)數據資源越來(lái)越豐富,檢索也越來(lái)越容易,大家發(fā)現從網(wǎng)頁(yè)中找到自己想要的信息內容是一件比較簡(jiǎn)單的事情,而且一般分散在很多網(wǎng)站上。但是出現了另一個(gè)問(wèn)題。當他們需要數據時(shí),并非每個(gè) URL 都顯示免費下載按鈕。進(jìn)行手動(dòng)復制顯然是非常低效和枯燥的。
這就是網(wǎng)絡(luò )爬蟲(chóng)出現的原因。網(wǎng)絡(luò )爬蟲(chóng)實(shí)際上是由網(wǎng)絡(luò )智能機器人/網(wǎng)絡(luò )爬蟲(chóng)驅動(dòng),其功能與百度搜索引擎相同。簡(jiǎn)單地說(shuō),就是抓取和復制。唯一的區別可能是運營(yíng)規模。網(wǎng)頁(yè)數據爬取就是從特殊的網(wǎng)址中獲取特殊的數據,百度搜索引擎一般檢索到互聯(lián)網(wǎng)上的大部分網(wǎng)址。
時(shí)間線(xiàn)
國外網(wǎng)絡(luò )爬蟲(chóng)的發(fā)展,1989年互聯(lián)網(wǎng)的出現
從技術(shù)上講,互聯(lián)網(wǎng)和互聯(lián)網(wǎng)是不同的。前者指的是信息空間,后者指的是多臺電子計算機的相互seo專(zhuān)業(yè)培訓。白金手指專(zhuān)業(yè)版4:連接內部網(wǎng)絡(luò )。
感謝互聯(lián)網(wǎng)的發(fā)明者 Tim Berners-Lee。他創(chuàng )造和發(fā)明的三件物品成為每個(gè)人日常生活的一部分。
統一資源定位器(url),可以根據它瀏覽自己喜歡的網(wǎng)址;內嵌的網(wǎng)頁(yè)鏈接讓我們可以在頁(yè)面中間進(jìn)行導航,比如產(chǎn)品詳情頁(yè)面,我們可以在寶貝詳情中找到產(chǎn)品型號等很多信息內容,比如“購買(mǎi)該產(chǎn)品的消費者也購買(mǎi)了某個(gè)產(chǎn)品"; 網(wǎng)頁(yè)不僅包括文字,還包括圖像、音頻、視頻和手機軟件組件。
1991年第一個(gè)互聯(lián)網(wǎng)電腦瀏覽器
它也是由 Tim Berners-Lee 創(chuàng )建和發(fā)明的,稱(chēng)為 WorldWide(無(wú)室內空間),以新的 WWW 項目命名?;ヂ?lián)網(wǎng)出現一年后,每個(gè)人都有辦法訪(fǎng)問(wèn)它并與之互動(dòng)。
1992 年第一個(gè) Web 服務(wù)器和第一個(gè)網(wǎng)頁(yè)
網(wǎng)頁(yè)總數略有增加。到 1996 年,HTTP Web 服務(wù)器總數超過(guò) 200。
1993年6月,第一臺基于網(wǎng)絡(luò )的智能機器人——互聯(lián)網(wǎng)數據機器人
雖然它的功能和今天的網(wǎng)頁(yè)智能機器人一樣,但只是用來(lái)精確測量網(wǎng)頁(yè)的大小。
1993年11月,第一個(gè)基于網(wǎng)絡(luò )爬蟲(chóng)的互聯(lián)網(wǎng)百度搜索引擎——JumpStation
由于當時(shí)互聯(lián)網(wǎng)上的網(wǎng)址并不多,百度搜索引擎過(guò)去常常依靠人工服務(wù)系統管理員來(lái)采集和編譯鏈接,將它們變成一種特殊的文件格式。
JumpStation 制作了一個(gè)新的飛越。它是第一個(gè)借助網(wǎng)絡(luò )智能機器人的WWW百度搜索引擎。
從那時(shí)起,大家才剛剛開(kāi)始使用這個(gè)程序化交易網(wǎng)絡(luò )爬蟲(chóng)程序來(lái)采集和整理互聯(lián)網(wǎng)技術(shù)。從Infoseek、Altavista和Excite,到今天的bing搜索和谷歌,百度搜索引擎智能機器人的關(guān)鍵是不變的:
找到一個(gè)網(wǎng)頁(yè)頁(yè)面,免費下載(獲?。?,抓取該網(wǎng)頁(yè)頁(yè)面顯示信息的所有信息內容,然后添加到百度搜索引擎的數據庫文件中。
因為網(wǎng)頁(yè)是為人和客戶(hù)設計的,不是為自動(dòng)化技術(shù)的應用而設計的,即使開(kāi)發(fā)設計了網(wǎng)頁(yè)智能機器人,電子計算機技術(shù)工程師和生物學(xué)家也很難進(jìn)行網(wǎng)頁(yè)數據采集,更別說(shuō)普通人了. 因此,大家一直在致力于讓網(wǎng)絡(luò )爬蟲(chóng)越來(lái)越容易應用。
2001年的Web API和API Web Crawler
API 指示代碼編程套接字的使用。它是一個(gè)socket,根據內置的控制模塊使開(kāi)發(fā)設計程序流程更加方便快捷。
2001 年,Salesforce 和 eBay 發(fā)布了自己的 API,程序員可以使用它免費瀏覽和下載一些已發(fā)布的數據。
從那時(shí)起,許多網(wǎng)站都提供了 Web API,以便每個(gè)人都可以瀏覽他們的公共數據庫。 查看全部
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(什么叫網(wǎng)絡(luò )爬蟲(chóng),也稱(chēng)之為抓取和網(wǎng)頁(yè)數據獲取(圖))
什么是網(wǎng)絡(luò )爬蟲(chóng)?
國外的網(wǎng)絡(luò )爬蟲(chóng)也叫網(wǎng)頁(yè)抓取和網(wǎng)頁(yè)數據采集。它們大多是指根據HTML文件傳輸協(xié)議(HTTP)或根據網(wǎng)絡(luò )計算機瀏覽器獲取可在互聯(lián)網(wǎng)上使用的數據。
網(wǎng)絡(luò )數據抓取如何工作?
一般在獲取網(wǎng)頁(yè)數據時(shí)只需要兩個(gè)過(guò)程。
打開(kāi)網(wǎng)頁(yè) → 從網(wǎng)頁(yè)復制實(shí)際數據并將其導出到報告或數據庫文件。

關(guān)于國外的網(wǎng)絡(luò )爬蟲(chóng),這一切是如何開(kāi)始的?
雖然對很多人來(lái)說(shuō),網(wǎng)絡(luò )爬蟲(chóng)聽(tīng)起來(lái)像是“大數據”或“深度學(xué)習”等新概念,但實(shí)際上網(wǎng)絡(luò )數據爬蟲(chóng)的歷史時(shí)間似乎很長(cháng),這可以追溯到seo專(zhuān)業(yè)培訓。金手指專(zhuān)長(cháng)四:當專(zhuān)網(wǎng)(或流行的“互聯(lián)網(wǎng)技術(shù)”)出現時(shí)。
一開(kāi)始,互聯(lián)網(wǎng)技術(shù)還沒(méi)有被搜索到。在百度搜索引擎開(kāi)發(fā)和設計之前,互聯(lián)網(wǎng)技術(shù)只是文件傳輸協(xié)議(FTP)網(wǎng)站的組合,客戶(hù)可以通過(guò)這個(gè)網(wǎng)站導航找到特殊的共享文檔。
為了搜索和seo專(zhuān)業(yè)培訓。百金手指專(zhuān)業(yè)4:為了形成可用于互聯(lián)網(wǎng)技術(shù)的分布式系統數據,我們建立了一個(gè)自動(dòng)化的技術(shù)程序流程,稱(chēng)為網(wǎng)絡(luò )爬蟲(chóng)/智能機器人,它可以抓取所有的互聯(lián)網(wǎng)技術(shù)網(wǎng)頁(yè),然后復制將所有網(wǎng)頁(yè)上的內容寫(xiě)入數據庫文件,以制作數據庫索引。

然后,隨著(zhù)互聯(lián)網(wǎng)的發(fā)展,數以千萬(wàn)計的網(wǎng)頁(yè)最終以多種不同的方式轉化為這樣的收錄數據的網(wǎng)頁(yè),包括文本、圖像、視頻和音頻?;ヂ?lián)網(wǎng)技術(shù)已經(jīng)成為一個(gè)開(kāi)放的數據源。
隨著(zhù)數據資源越來(lái)越豐富,檢索也越來(lái)越容易,大家發(fā)現從網(wǎng)頁(yè)中找到自己想要的信息內容是一件比較簡(jiǎn)單的事情,而且一般分散在很多網(wǎng)站上。但是出現了另一個(gè)問(wèn)題。當他們需要數據時(shí),并非每個(gè) URL 都顯示免費下載按鈕。進(jìn)行手動(dòng)復制顯然是非常低效和枯燥的。

這就是網(wǎng)絡(luò )爬蟲(chóng)出現的原因。網(wǎng)絡(luò )爬蟲(chóng)實(shí)際上是由網(wǎng)絡(luò )智能機器人/網(wǎng)絡(luò )爬蟲(chóng)驅動(dòng),其功能與百度搜索引擎相同。簡(jiǎn)單地說(shuō),就是抓取和復制。唯一的區別可能是運營(yíng)規模。網(wǎng)頁(yè)數據爬取就是從特殊的網(wǎng)址中獲取特殊的數據,百度搜索引擎一般檢索到互聯(lián)網(wǎng)上的大部分網(wǎng)址。
時(shí)間線(xiàn)
國外網(wǎng)絡(luò )爬蟲(chóng)的發(fā)展,1989年互聯(lián)網(wǎng)的出現

從技術(shù)上講,互聯(lián)網(wǎng)和互聯(lián)網(wǎng)是不同的。前者指的是信息空間,后者指的是多臺電子計算機的相互seo專(zhuān)業(yè)培訓。白金手指專(zhuān)業(yè)版4:連接內部網(wǎng)絡(luò )。
感謝互聯(lián)網(wǎng)的發(fā)明者 Tim Berners-Lee。他創(chuàng )造和發(fā)明的三件物品成為每個(gè)人日常生活的一部分。
統一資源定位器(url),可以根據它瀏覽自己喜歡的網(wǎng)址;內嵌的網(wǎng)頁(yè)鏈接讓我們可以在頁(yè)面中間進(jìn)行導航,比如產(chǎn)品詳情頁(yè)面,我們可以在寶貝詳情中找到產(chǎn)品型號等很多信息內容,比如“購買(mǎi)該產(chǎn)品的消費者也購買(mǎi)了某個(gè)產(chǎn)品"; 網(wǎng)頁(yè)不僅包括文字,還包括圖像、音頻、視頻和手機軟件組件。
1991年第一個(gè)互聯(lián)網(wǎng)電腦瀏覽器
它也是由 Tim Berners-Lee 創(chuàng )建和發(fā)明的,稱(chēng)為 WorldWide(無(wú)室內空間),以新的 WWW 項目命名?;ヂ?lián)網(wǎng)出現一年后,每個(gè)人都有辦法訪(fǎng)問(wèn)它并與之互動(dòng)。
1992 年第一個(gè) Web 服務(wù)器和第一個(gè)網(wǎng)頁(yè)
網(wǎng)頁(yè)總數略有增加。到 1996 年,HTTP Web 服務(wù)器總數超過(guò) 200。
1993年6月,第一臺基于網(wǎng)絡(luò )的智能機器人——互聯(lián)網(wǎng)數據機器人
雖然它的功能和今天的網(wǎng)頁(yè)智能機器人一樣,但只是用來(lái)精確測量網(wǎng)頁(yè)的大小。
1993年11月,第一個(gè)基于網(wǎng)絡(luò )爬蟲(chóng)的互聯(lián)網(wǎng)百度搜索引擎——JumpStation

由于當時(shí)互聯(lián)網(wǎng)上的網(wǎng)址并不多,百度搜索引擎過(guò)去常常依靠人工服務(wù)系統管理員來(lái)采集和編譯鏈接,將它們變成一種特殊的文件格式。
JumpStation 制作了一個(gè)新的飛越。它是第一個(gè)借助網(wǎng)絡(luò )智能機器人的WWW百度搜索引擎。
從那時(shí)起,大家才剛剛開(kāi)始使用這個(gè)程序化交易網(wǎng)絡(luò )爬蟲(chóng)程序來(lái)采集和整理互聯(lián)網(wǎng)技術(shù)。從Infoseek、Altavista和Excite,到今天的bing搜索和谷歌,百度搜索引擎智能機器人的關(guān)鍵是不變的:
找到一個(gè)網(wǎng)頁(yè)頁(yè)面,免費下載(獲?。?,抓取該網(wǎng)頁(yè)頁(yè)面顯示信息的所有信息內容,然后添加到百度搜索引擎的數據庫文件中。
因為網(wǎng)頁(yè)是為人和客戶(hù)設計的,不是為自動(dòng)化技術(shù)的應用而設計的,即使開(kāi)發(fā)設計了網(wǎng)頁(yè)智能機器人,電子計算機技術(shù)工程師和生物學(xué)家也很難進(jìn)行網(wǎng)頁(yè)數據采集,更別說(shuō)普通人了. 因此,大家一直在致力于讓網(wǎng)絡(luò )爬蟲(chóng)越來(lái)越容易應用。
2001年的Web API和API Web Crawler

API 指示代碼編程套接字的使用。它是一個(gè)socket,根據內置的控制模塊使開(kāi)發(fā)設計程序流程更加方便快捷。
2001 年,Salesforce 和 eBay 發(fā)布了自己的 API,程序員可以使用它免費瀏覽和下載一些已發(fā)布的數據。
從那時(shí)起,許多網(wǎng)站都提供了 Web API,以便每個(gè)人都可以瀏覽他們的公共數據庫。
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(Python視頻寫(xiě)了一個(gè)爬蟲(chóng)程序,實(shí)現簡(jiǎn)單的網(wǎng)頁(yè)圖片下載)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 146 次瀏覽 ? 2021-10-26 09:21
一、簡(jiǎn)介
這段時(shí)間我一直在學(xué)習 Python 的東西。我聽(tīng)說(shuō)過(guò) Python 爬蟲(chóng)有多強大。我現在才學(xué)會(huì )這個(gè)。跟著(zhù)小烏龜的Python視頻寫(xiě)了一個(gè)爬蟲(chóng)程序,可以實(shí)現簡(jiǎn)單的網(wǎng)頁(yè)圖片下載。
二、代碼
__author__ = "JentZhang"
import urllib.request
import os
import random
import re
def url_open(url):
'''
打開(kāi)網(wǎng)頁(yè)
:param url:
:return:
'''
req = urllib.request.Request(url)
req.add_header('User-Agent',
'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36')
# 應用代理
'''
proxyies = ["111.155.116.237:8123","101.236.23.202:8866","122.114.31.177:808"]
proxy = random.choice(proxyies)
proxy_support = urllib.request.ProxyHandler({"http": proxy})
opener = urllib.request.build_opener(proxy_support)
urllib.request.install_opener(opener)
'''
response = urllib.request.urlopen(url)
html = response.read()
return html
def save_img(folder, img_addrs):
'''
保存圖片
:param folder: 要保存的文件夾
:param img_addrs: 圖片地址(列表)
:return:
'''
# 創(chuàng )建文件夾用來(lái)存放圖片
if not os.path.exists(folder):
os.mkdir(folder)
os.chdir(folder)
for each in img_addrs:
filename = each.split('/')[-1]
try:
with open(filename, 'wb') as f:
img = url_open("http:" + each)
f.write(img)
except urllib.error.HTTPError as e:
# print(e.reason)
pass
print('完畢!')
def find_imgs(url):
'''
獲取全部的圖片鏈接
:param url: 連接地址
:return: 圖片地址的列表
'''
html = url_open(url).decode("utf-8")
img_addrs = re.findall(r'src="(.+?\.gif)', html)
return img_addrs
def get_page(url):
'''
獲取當前一共有多少頁(yè)的圖片
:param url: 網(wǎng)頁(yè)地址
:return:
'''
html = url_open(url).decode('utf-8')
a = html.find("current-comment-page") + 23
b = html.find("]", a)
return html[a:b]
def download_mm(url="http://jandan.net/ooxx/", folder="OOXX", pages=1):
'''
主程序(下載圖片)
:param folder:默認存放的文件夾
:param pages: 下載的頁(yè)數
:return:
'''
page_num = int(get_page(url))
for i in range(pages):
page_num -= i
page_url = url + "page-" + str(page_num) + "#comments"
img_addrs = find_imgs(page_url)
save_img(folder, img_addrs)
if __name__ == "__main__":
download_mm()
三、總結
因為代碼中訪(fǎng)問(wèn)的網(wǎng)址已經(jīng)使用了反爬蟲(chóng)算法。所以爬不出來(lái)我想要的圖片,所以,就做個(gè)爬蟲(chóng)的筆記吧。僅供學(xué)習參考【捂臉】。 . . .
最后:我把jpg格式改成gif了,還是可以爬到很爛的gif:
第一張圖只是反爬蟲(chóng)機制的占位符,沒(méi)有任何內容。 查看全部
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(Python視頻寫(xiě)了一個(gè)爬蟲(chóng)程序,實(shí)現簡(jiǎn)單的網(wǎng)頁(yè)圖片下載)
一、簡(jiǎn)介
這段時(shí)間我一直在學(xué)習 Python 的東西。我聽(tīng)說(shuō)過(guò) Python 爬蟲(chóng)有多強大。我現在才學(xué)會(huì )這個(gè)。跟著(zhù)小烏龜的Python視頻寫(xiě)了一個(gè)爬蟲(chóng)程序,可以實(shí)現簡(jiǎn)單的網(wǎng)頁(yè)圖片下載。
二、代碼
__author__ = "JentZhang"
import urllib.request
import os
import random
import re
def url_open(url):
'''
打開(kāi)網(wǎng)頁(yè)
:param url:
:return:
'''
req = urllib.request.Request(url)
req.add_header('User-Agent',
'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36')
# 應用代理
'''
proxyies = ["111.155.116.237:8123","101.236.23.202:8866","122.114.31.177:808"]
proxy = random.choice(proxyies)
proxy_support = urllib.request.ProxyHandler({"http": proxy})
opener = urllib.request.build_opener(proxy_support)
urllib.request.install_opener(opener)
'''
response = urllib.request.urlopen(url)
html = response.read()
return html
def save_img(folder, img_addrs):
'''
保存圖片
:param folder: 要保存的文件夾
:param img_addrs: 圖片地址(列表)
:return:
'''
# 創(chuàng )建文件夾用來(lái)存放圖片
if not os.path.exists(folder):
os.mkdir(folder)
os.chdir(folder)
for each in img_addrs:
filename = each.split('/')[-1]
try:
with open(filename, 'wb') as f:
img = url_open("http:" + each)
f.write(img)
except urllib.error.HTTPError as e:
# print(e.reason)
pass
print('完畢!')
def find_imgs(url):
'''
獲取全部的圖片鏈接
:param url: 連接地址
:return: 圖片地址的列表
'''
html = url_open(url).decode("utf-8")
img_addrs = re.findall(r'src="(.+?\.gif)', html)
return img_addrs
def get_page(url):
'''
獲取當前一共有多少頁(yè)的圖片
:param url: 網(wǎng)頁(yè)地址
:return:
'''
html = url_open(url).decode('utf-8')
a = html.find("current-comment-page") + 23
b = html.find("]", a)
return html[a:b]
def download_mm(url="http://jandan.net/ooxx/", folder="OOXX", pages=1):
'''
主程序(下載圖片)
:param folder:默認存放的文件夾
:param pages: 下載的頁(yè)數
:return:
'''
page_num = int(get_page(url))
for i in range(pages):
page_num -= i
page_url = url + "page-" + str(page_num) + "#comments"
img_addrs = find_imgs(page_url)
save_img(folder, img_addrs)
if __name__ == "__main__":
download_mm()
三、總結
因為代碼中訪(fǎng)問(wèn)的網(wǎng)址已經(jīng)使用了反爬蟲(chóng)算法。所以爬不出來(lái)我想要的圖片,所以,就做個(gè)爬蟲(chóng)的筆記吧。僅供學(xué)習參考【捂臉】。 . . .
最后:我把jpg格式改成gif了,還是可以爬到很爛的gif:

第一張圖只是反爬蟲(chóng)機制的占位符,沒(méi)有任何內容。
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(ScreamingFrogSEOSpiderforMac軟件介紹(一)_)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 87 次瀏覽 ? 2021-10-25 04:04
Mac版Screaming Frog SEO Spider是一款專(zhuān)門(mén)用于抓取網(wǎng)址進(jìn)行分析的網(wǎng)絡(luò )爬蟲(chóng)開(kāi)發(fā)工具。您可以使用本軟件快速抓取網(wǎng)站中可能出現的斷鏈和服務(wù)器錯誤,或識別網(wǎng)站中臨時(shí)和永久重定向的鏈接,還可以檢查可能出現的重復問(wèn)題URL、頁(yè)面標題、描述、內容等信息中心。
Screaming Frog SEO Spider for Mac 軟件介紹
Mac版尖叫蛙SEO蜘蛛是一款網(wǎng)站爬蟲(chóng),可以讓您爬取網(wǎng)站的URL,獲取關(guān)鍵要素、分析審計技巧、現場(chǎng)搜索引擎優(yōu)化。
特征
1、找到斷開(kāi)的鏈接
立即抓取 網(wǎng)站 并找到斷開(kāi)的鏈接 (404) 和服務(wù)器錯誤。批量導出錯誤和源 URL 進(jìn)行修復,或發(fā)送給開(kāi)發(fā)人員。
2、審計重定向
查找臨時(shí)和永久重定向,識別重定向鏈和循環(huán),或上傳 URL 列表以在站點(diǎn)遷移期間進(jìn)行審查。
3、分析頁(yè)面標題和元數據
在爬取過(guò)程中分析頁(yè)面標題和元描述,找出網(wǎng)站中過(guò)長(cháng)、缺失、缺失或重復的內容。
4、 發(fā)現重復內容
使用 md5 算法檢查和查找完全重復的 URL、部分重復的元素(例如頁(yè)面標題、描述或標題)并查找低內容頁(yè)面。
5、使用XPath提取數據
使用 CSS Path、XPath 或正則表達式從網(wǎng)頁(yè)的 HTML 中采集任何數據。這可能包括社交元標簽、其他標題、價(jià)格、SKU 或更多!
6、 查看機器人和說(shuō)明
查看被 robots.txt、元機器人或 X-Robots-Tag 指令(例如“noindex”或“nofollow”)以及規范和 rel="next" 和 rel="prev" 阻止的 URL。
7、生成XML站點(diǎn)地圖
快速創(chuàng )建 XML 站點(diǎn)地圖和圖片 XML 站點(diǎn)地圖,并通過(guò) URL 進(jìn)行高級配置,包括最后修改、優(yōu)先級和更改頻率。
8、與谷歌分析集成
連接到 Google Analytics API 并獲取用于抓取功能的用戶(hù)數據,例如會(huì )話(huà)或跳出率以及著(zhù)陸頁(yè)的轉化、目標、交易和收入。
9、抓取 JavaScript網(wǎng)站
使用集成的 Chromium WRS 來(lái)渲染網(wǎng)頁(yè),以抓取動(dòng)態(tài)的、富含 JavaScript 的 網(wǎng)站 以及 Angular、React 和 Vue.js 等框架。
10、可視化站點(diǎn)架構
使用交互式爬行和目錄強制地圖和樹(shù)形地圖站點(diǎn)直觀(guān)地評估內部鏈接和 URL 結構。
Mac 版 Screaming Frog SEO Spider 快速摘要
錯誤 - 客戶(hù)端錯誤,例如斷開(kāi)的鏈接和服務(wù)器錯誤(無(wú)響應、4XX、5XX)。
重定向 - 永久、臨時(shí)重定向(3XX 響應)和 JS 重定向。
阻止的 URL - robots.txt 協(xié)議不允許查看和審查 URL。
被阻止的資源 - 在演示模式下查看和審核被阻止的資源。
外部鏈接-所有外部鏈接及其狀態(tài)代碼。
協(xié)議 - URL 是安全 (HTTPS) 還是不安全 (HTTP)。
URI 問(wèn)題 - 非 ASCII 字符、下劃線(xiàn)、大寫(xiě)字符、參數或長(cháng) URL。
重復頁(yè)面-哈希值/MD5校驗和算法來(lái)檢查完全重復的頁(yè)面。
頁(yè)面標題缺失、重復、超過(guò) 65 個(gè)字符、短、像素寬度被截斷、等于或大于 h1。
元描述-缺失、重復、超過(guò) 156 個(gè)字符、短、截斷或像素寬度倍數。
元關(guān)鍵字 - 主要用于參考,因為它們不被 Google、Bing 或 Yahoo 使用。
文件大小- URL 和圖像的大小。
響應時(shí)間。
最后修改的標題。
頁(yè)面(抓?。┥疃?。
字數。
H1-缺失,重復,70多個(gè)字符,不止一個(gè)。
H2-Missing,重復,70多個(gè)字符,不止一個(gè)。
Meta robots-index、無(wú)索引、follow、nofollow、noarchive、nosnippet、noodp、noydir等。
元刷新——包括目標頁(yè)面和時(shí)間延遲。 查看全部
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(ScreamingFrogSEOSpiderforMac軟件介紹(一)_)
Mac版Screaming Frog SEO Spider是一款專(zhuān)門(mén)用于抓取網(wǎng)址進(jìn)行分析的網(wǎng)絡(luò )爬蟲(chóng)開(kāi)發(fā)工具。您可以使用本軟件快速抓取網(wǎng)站中可能出現的斷鏈和服務(wù)器錯誤,或識別網(wǎng)站中臨時(shí)和永久重定向的鏈接,還可以檢查可能出現的重復問(wèn)題URL、頁(yè)面標題、描述、內容等信息中心。

Screaming Frog SEO Spider for Mac 軟件介紹
Mac版尖叫蛙SEO蜘蛛是一款網(wǎng)站爬蟲(chóng),可以讓您爬取網(wǎng)站的URL,獲取關(guān)鍵要素、分析審計技巧、現場(chǎng)搜索引擎優(yōu)化。
特征
1、找到斷開(kāi)的鏈接
立即抓取 網(wǎng)站 并找到斷開(kāi)的鏈接 (404) 和服務(wù)器錯誤。批量導出錯誤和源 URL 進(jìn)行修復,或發(fā)送給開(kāi)發(fā)人員。
2、審計重定向
查找臨時(shí)和永久重定向,識別重定向鏈和循環(huán),或上傳 URL 列表以在站點(diǎn)遷移期間進(jìn)行審查。
3、分析頁(yè)面標題和元數據
在爬取過(guò)程中分析頁(yè)面標題和元描述,找出網(wǎng)站中過(guò)長(cháng)、缺失、缺失或重復的內容。
4、 發(fā)現重復內容
使用 md5 算法檢查和查找完全重復的 URL、部分重復的元素(例如頁(yè)面標題、描述或標題)并查找低內容頁(yè)面。
5、使用XPath提取數據
使用 CSS Path、XPath 或正則表達式從網(wǎng)頁(yè)的 HTML 中采集任何數據。這可能包括社交元標簽、其他標題、價(jià)格、SKU 或更多!

6、 查看機器人和說(shuō)明
查看被 robots.txt、元機器人或 X-Robots-Tag 指令(例如“noindex”或“nofollow”)以及規范和 rel="next" 和 rel="prev" 阻止的 URL。
7、生成XML站點(diǎn)地圖
快速創(chuàng )建 XML 站點(diǎn)地圖和圖片 XML 站點(diǎn)地圖,并通過(guò) URL 進(jìn)行高級配置,包括最后修改、優(yōu)先級和更改頻率。
8、與谷歌分析集成
連接到 Google Analytics API 并獲取用于抓取功能的用戶(hù)數據,例如會(huì )話(huà)或跳出率以及著(zhù)陸頁(yè)的轉化、目標、交易和收入。
9、抓取 JavaScript網(wǎng)站
使用集成的 Chromium WRS 來(lái)渲染網(wǎng)頁(yè),以抓取動(dòng)態(tài)的、富含 JavaScript 的 網(wǎng)站 以及 Angular、React 和 Vue.js 等框架。
10、可視化站點(diǎn)架構
使用交互式爬行和目錄強制地圖和樹(shù)形地圖站點(diǎn)直觀(guān)地評估內部鏈接和 URL 結構。

Mac 版 Screaming Frog SEO Spider 快速摘要
錯誤 - 客戶(hù)端錯誤,例如斷開(kāi)的鏈接和服務(wù)器錯誤(無(wú)響應、4XX、5XX)。
重定向 - 永久、臨時(shí)重定向(3XX 響應)和 JS 重定向。
阻止的 URL - robots.txt 協(xié)議不允許查看和審查 URL。
被阻止的資源 - 在演示模式下查看和審核被阻止的資源。
外部鏈接-所有外部鏈接及其狀態(tài)代碼。
協(xié)議 - URL 是安全 (HTTPS) 還是不安全 (HTTP)。
URI 問(wèn)題 - 非 ASCII 字符、下劃線(xiàn)、大寫(xiě)字符、參數或長(cháng) URL。
重復頁(yè)面-哈希值/MD5校驗和算法來(lái)檢查完全重復的頁(yè)面。
頁(yè)面標題缺失、重復、超過(guò) 65 個(gè)字符、短、像素寬度被截斷、等于或大于 h1。
元描述-缺失、重復、超過(guò) 156 個(gè)字符、短、截斷或像素寬度倍數。
元關(guān)鍵字 - 主要用于參考,因為它們不被 Google、Bing 或 Yahoo 使用。
文件大小- URL 和圖像的大小。
響應時(shí)間。
最后修改的標題。
頁(yè)面(抓?。┥疃?。

字數。
H1-缺失,重復,70多個(gè)字符,不止一個(gè)。
H2-Missing,重復,70多個(gè)字符,不止一個(gè)。
Meta robots-index、無(wú)索引、follow、nofollow、noarchive、nosnippet、noodp、noydir等。
元刷新——包括目標頁(yè)面和時(shí)間延遲。
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(“物聯(lián)網(wǎng)”概念的核心之一(二):網(wǎng)絡(luò )爬蟲(chóng) )
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 157 次瀏覽 ? 2021-10-24 10:19
)
眾所周知,隨著(zhù)計算機、互聯(lián)網(wǎng)、物聯(lián)網(wǎng)、云計算等網(wǎng)絡(luò )技術(shù)的興起,網(wǎng)絡(luò )上的信息爆炸式增長(cháng)。毫無(wú)疑問(wèn),互聯(lián)網(wǎng)上的信息幾乎涵蓋了社會(huì )、文化、政治、經(jīng)濟、娛樂(lè )等所有話(huà)題。使用傳統的數據采集機制(如問(wèn)卷調查法、訪(fǎng)談法)獲取和采集數據往往受到資金和地域范圍的限制,也會(huì )由于樣本量小、可靠性低 數據往往與客觀(guān)事實(shí)存在偏差,局限性較大。
網(wǎng)絡(luò )爬蟲(chóng)使用統一資源定位器(Uniform Resource Locator)尋找目標網(wǎng)頁(yè),將用戶(hù)關(guān)注的數據內容直接返回給用戶(hù)。不需要用戶(hù)以瀏覽網(wǎng)頁(yè)的形式獲取信息,為用戶(hù)節省了時(shí)間和精力。提高了數據采集的準確性,讓用戶(hù)輕松瀏覽海量數據。網(wǎng)絡(luò )爬蟲(chóng)的最終目標是從網(wǎng)頁(yè)中獲取它們需要的信息。雖然可以使用urllib、urllib2、re等一些爬蟲(chóng)基礎庫來(lái)開(kāi)發(fā)爬蟲(chóng)程序,獲取需要的內容,但是所有爬蟲(chóng)程序都是這樣寫(xiě)的,工作量太大。于是就有了爬蟲(chóng)框架。
Webcrawler 也被稱(chēng)為 webspider 或 webrobot。其他不常用的名稱(chēng)包括螞蟻、自動(dòng)索引、模擬器或蠕蟲(chóng),它也是“物聯(lián)網(wǎng)”概念的核心之一。一。網(wǎng)絡(luò )爬蟲(chóng)本質(zhì)上是按照一定的邏輯和算法規則自動(dòng)抓取和下載萬(wàn)維網(wǎng)上網(wǎng)頁(yè)的計算機程序或腳本。它是搜索引擎的重要組成部分。
網(wǎng)絡(luò )爬蟲(chóng)一般從預先設置的一個(gè)或幾個(gè)初始網(wǎng)頁(yè)網(wǎng)址開(kāi)始,然后按照一定的規則抓取網(wǎng)頁(yè),獲取初始網(wǎng)頁(yè)上的網(wǎng)址列表,然后每次抓取一個(gè)網(wǎng)頁(yè),爬蟲(chóng)都會(huì )提取該網(wǎng)頁(yè)。將新的 URL 放入尚未爬取的隊列中,然后循環(huán)從隊列中取出一個(gè)從未爬取過(guò)的 URL,然后進(jìn)行新一輪的爬取,重復上述過(guò)程,直到抓取隊列中的 URL。當爬蟲(chóng)完成或滿(mǎn)足其他既定條件時(shí),爬蟲(chóng)將結束。
隨著(zhù)互聯(lián)網(wǎng)上信息的增多,使用網(wǎng)絡(luò )爬蟲(chóng)工具獲取所需的信息必定是有用的。利用網(wǎng)絡(luò )爬蟲(chóng)獲取采集信息,不僅可以實(shí)現高效、準確、自動(dòng)獲取網(wǎng)絡(luò )信息,還可以幫助企業(yè)或研究人員對采集收到的數據進(jìn)行后續的挖掘和分析.
人工智能、大數據、云計算和物聯(lián)網(wǎng)的未來(lái)發(fā)展值得關(guān)注。都是前沿產(chǎn)業(yè)。多元智能時(shí)代側重于人工智能和大數據的引入和科學(xué)譜。這里有幾篇高質(zhì)量的文章供您參考:
什么是網(wǎng)絡(luò )爬蟲(chóng),我們?yōu)槭裁匆獙W(xué)習網(wǎng)絡(luò )爬蟲(chóng)
六大主流大數據平臺架構分析采集
[大數據采集] 大數據技術(shù)采集如何到達我們的信息?
多元智能時(shí)代-人工智能與大數據學(xué)習導論網(wǎng)站|人工智能、大數據、物聯(lián)網(wǎng)、云計算的學(xué)習與交流網(wǎng)站
查看全部
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(“物聯(lián)網(wǎng)”概念的核心之一(二):網(wǎng)絡(luò )爬蟲(chóng)
)
眾所周知,隨著(zhù)計算機、互聯(lián)網(wǎng)、物聯(lián)網(wǎng)、云計算等網(wǎng)絡(luò )技術(shù)的興起,網(wǎng)絡(luò )上的信息爆炸式增長(cháng)。毫無(wú)疑問(wèn),互聯(lián)網(wǎng)上的信息幾乎涵蓋了社會(huì )、文化、政治、經(jīng)濟、娛樂(lè )等所有話(huà)題。使用傳統的數據采集機制(如問(wèn)卷調查法、訪(fǎng)談法)獲取和采集數據往往受到資金和地域范圍的限制,也會(huì )由于樣本量小、可靠性低 數據往往與客觀(guān)事實(shí)存在偏差,局限性較大。
網(wǎng)絡(luò )爬蟲(chóng)使用統一資源定位器(Uniform Resource Locator)尋找目標網(wǎng)頁(yè),將用戶(hù)關(guān)注的數據內容直接返回給用戶(hù)。不需要用戶(hù)以瀏覽網(wǎng)頁(yè)的形式獲取信息,為用戶(hù)節省了時(shí)間和精力。提高了數據采集的準確性,讓用戶(hù)輕松瀏覽海量數據。網(wǎng)絡(luò )爬蟲(chóng)的最終目標是從網(wǎng)頁(yè)中獲取它們需要的信息。雖然可以使用urllib、urllib2、re等一些爬蟲(chóng)基礎庫來(lái)開(kāi)發(fā)爬蟲(chóng)程序,獲取需要的內容,但是所有爬蟲(chóng)程序都是這樣寫(xiě)的,工作量太大。于是就有了爬蟲(chóng)框架。
Webcrawler 也被稱(chēng)為 webspider 或 webrobot。其他不常用的名稱(chēng)包括螞蟻、自動(dòng)索引、模擬器或蠕蟲(chóng),它也是“物聯(lián)網(wǎng)”概念的核心之一。一。網(wǎng)絡(luò )爬蟲(chóng)本質(zhì)上是按照一定的邏輯和算法規則自動(dòng)抓取和下載萬(wàn)維網(wǎng)上網(wǎng)頁(yè)的計算機程序或腳本。它是搜索引擎的重要組成部分。
網(wǎng)絡(luò )爬蟲(chóng)一般從預先設置的一個(gè)或幾個(gè)初始網(wǎng)頁(yè)網(wǎng)址開(kāi)始,然后按照一定的規則抓取網(wǎng)頁(yè),獲取初始網(wǎng)頁(yè)上的網(wǎng)址列表,然后每次抓取一個(gè)網(wǎng)頁(yè),爬蟲(chóng)都會(huì )提取該網(wǎng)頁(yè)。將新的 URL 放入尚未爬取的隊列中,然后循環(huán)從隊列中取出一個(gè)從未爬取過(guò)的 URL,然后進(jìn)行新一輪的爬取,重復上述過(guò)程,直到抓取隊列中的 URL。當爬蟲(chóng)完成或滿(mǎn)足其他既定條件時(shí),爬蟲(chóng)將結束。
隨著(zhù)互聯(lián)網(wǎng)上信息的增多,使用網(wǎng)絡(luò )爬蟲(chóng)工具獲取所需的信息必定是有用的。利用網(wǎng)絡(luò )爬蟲(chóng)獲取采集信息,不僅可以實(shí)現高效、準確、自動(dòng)獲取網(wǎng)絡(luò )信息,還可以幫助企業(yè)或研究人員對采集收到的數據進(jìn)行后續的挖掘和分析.
人工智能、大數據、云計算和物聯(lián)網(wǎng)的未來(lái)發(fā)展值得關(guān)注。都是前沿產(chǎn)業(yè)。多元智能時(shí)代側重于人工智能和大數據的引入和科學(xué)譜。這里有幾篇高質(zhì)量的文章供您參考:
什么是網(wǎng)絡(luò )爬蟲(chóng),我們?yōu)槭裁匆獙W(xué)習網(wǎng)絡(luò )爬蟲(chóng)
六大主流大數據平臺架構分析采集
[大數據采集] 大數據技術(shù)采集如何到達我們的信息?
多元智能時(shí)代-人工智能與大數據學(xué)習導論網(wǎng)站|人工智能、大數據、物聯(lián)網(wǎng)、云計算的學(xué)習與交流網(wǎng)站
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(2.如何用python請求一個(gè)網(wǎng)頁(yè)的過(guò)程分析(組圖))
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 164 次瀏覽 ? 2021-10-24 02:07
我第一次遇到lxml庫1.什么是爬蟲(chóng)?
所謂爬蟲(chóng)就是按照一定的規則自動(dòng)從互聯(lián)網(wǎng)上抓取信息的程序或腳本。萬(wàn)維網(wǎng)就像一個(gè)巨大的蜘蛛網(wǎng),我們的爬蟲(chóng)就是它上面的蜘蛛,不斷地爬取我們需要的信息。
2.履帶三要素3.履帶過(guò)程分析
當一個(gè)人訪(fǎng)問(wèn)一個(gè)網(wǎng)頁(yè)時(shí),它是如何進(jìn)行的?
?、俅蜷_(kāi)瀏覽器,輸入要訪(fǎng)問(wèn)的URL,發(fā)起請求。
?、诘却?wù)器返回數據,通過(guò)瀏覽器加載網(wǎng)頁(yè)。
?、蹚木W(wǎng)頁(yè)中查找您需要的數據(文本、圖片、文件等)。
?、鼙4婺枰臄祿?。
對于爬蟲(chóng)來(lái)說(shuō),同樣如此。它模仿了人類(lèi)請求網(wǎng)頁(yè)的過(guò)程,但略有不同。
首先,對應上面的步驟①和②,我們需要使用python來(lái)實(shí)現請求一個(gè)網(wǎng)頁(yè)的功能。
其次,對應上面的步驟③,我們需要使用python來(lái)實(shí)現解析請求網(wǎng)頁(yè)的功能。
最后,對于上面的步驟④,我們需要使用python來(lái)實(shí)現保存數據的功能。
因為是一個(gè)簡(jiǎn)單的爬蟲(chóng),其他一些復雜的操作這里就不贅述了。下面,對以上功能一一分析。
4.如何用python請求一個(gè)網(wǎng)頁(yè)
作為擁有豐富類(lèi)庫的編程語(yǔ)言,使用python請求網(wǎng)頁(yè)完全是小菜一碟。這里有一個(gè)非常有用的類(lèi)庫 urllib.request。
如何模擬用戶(hù)請求,請看我的另一篇博客:
4.1. 抓取網(wǎng)頁(yè)
import urllib.request
response = urllib.request.urlopen('https://laoniu.blog.csdn.net/')
print(response.read().decode('utf-8'))
這樣就可以抓取csdn我主頁(yè)的html文檔了
當我們使用爬蟲(chóng)時(shí),我們需要從網(wǎng)頁(yè)中提取我們需要的數據。接下來(lái),我們來(lái)學(xué)習抓取百度搜索頁(yè)面的熱門(mén)列表數據。
4.2.如何解析網(wǎng)頁(yè)
使用 lxml 庫
lxml 是一個(gè)用 Python 編寫(xiě)的庫,可以快速靈活地處理 XML 和 HTML。
它支持 XML 路徑語(yǔ)言 (XPath) 和可擴展樣式表語(yǔ)言轉換 (XSLT),并實(shí)現了通用的 ElementTree API。
安裝
#pip方式安裝
pip3 install lxml
#wheel方式安裝
#下載對應系統版本的wheel文件:http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml
pip3 install lxml-4.2.1-cp36-cp36m-win_amd64.whl
yum install -y epel-release libxslt-devel libxml2-devel openssl-devel
pip3 install lxml
環(huán)境/版本列表:
4.3.寫(xiě)代碼
import urllib.request
from lxml import etree
# 獲取百度熱榜
url = "https://www.baidu.com/s?ie=UTF-8&wd=1"
# 我們在請求頭加入User-Agent參數,這樣可以讓服務(wù)端認為此次請求是用戶(hù)通過(guò)瀏覽器發(fā)起的正常請求,防止被識別為爬蟲(chóng)程序請求導致直接拒絕訪(fǎng)問(wèn)
req = urllib.request.Request(url=url, headers={
'User-Agent': 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'
})
# 發(fā)起請求
html_resp = urllib.request.urlopen(req).read().decode("utf-8")
在這里我們可以順利獲取到百度搜索頁(yè)面的html文檔
我們需要看看熱搜排名的標簽元素在哪里
找到第一個(gè)右鍵復制XPath(后來(lái)的XPath是什么)
我們需要了解和使用XPath。XPath 是 XML Path Language,它是一種用于確定 XML 文檔某部分位置的語(yǔ)言。
復制內容的結果是://*[@id="con-ar"]/div[2]/div/div/table/tbody[1]/tr[1]
這個(gè)xPath字符串表示當前在html中的位置是熱點(diǎn)新聞的第一行
5.XPath 常用規則
表達
描述
節點(diǎn)名
選擇該節點(diǎn)的所有子節點(diǎn)
/
從當前節點(diǎn)中選擇直接子節點(diǎn)
//
從當前節點(diǎn)中選擇后代節點(diǎn)
.
選擇當前節點(diǎn)
..
選擇當前節點(diǎn)的父節點(diǎn)
@
選擇屬性
*
通配符,選擇所有元素節點(diǎn)和元素名稱(chēng)
@*
選擇所有屬性
[@atrib]
選擇具有給定屬性的所有元素
[@atrib='value']
選擇具有給定值的給定屬性的所有元素
[標簽]
選擇具有指定元素的所有直接子節點(diǎn)
[標簽='文本']
選擇所有指定元素,文本內容為文本節點(diǎn)
6.繼續分析
那么,當我們想要獲取所有熱門(mén)新聞時(shí),我們該如何寫(xiě)作呢?
繼續看網(wǎng)頁(yè)
可以看到所有的熱榜都在三個(gè)以下
修改剛剛復制的XPath
//*[@id="con-ar"]/div[2]/div/div/table/tbody[1]/tr[1] 改為 //*[@id="con-ar"]/ div[2]/div/div/table/tbody/tr
這樣X(jué)Path就會(huì )定位到這三個(gè)tbody下的所有tr元素內容
繼續看看tr是不是我們想要的,展開(kāi)一個(gè)tr看看
甘~還有一堆,百度,你不講武道,
這該怎么做。我們需要獲取的數據是【標題】【訪(fǎng)問(wèn)鏈接】【熱度】,現在tr元素全部到手了
然后直接從tr開(kāi)始獲取下面所有標簽的標題和超鏈接
標題的 XPath:*/a/@title 超鏈接的 XPath:*/a/@href
*表示匹配tr/a下的所有元素都在*找到第一個(gè)a標簽@是屬性選擇器標題,href是要選擇的元素屬性
還在發(fā)燒,讓我繼續操作,直接選擇tr下的第二個(gè)td XPath:td[2]
分析完成后貼出完整代碼
import urllib.request
from lxml import etree
# 獲取百度熱榜
url = "https://www.baidu.com/s?ie=UTF-8&wd=1"
# 我們在請求頭加入User-Agent參數,這樣可以讓服務(wù)端認為此次請求是用戶(hù)通過(guò)瀏覽器發(fā)起的正常請求,防止被識別為爬蟲(chóng)程序請求導致直接拒絕訪(fǎng)問(wèn)
req = urllib.request.Request(url=url, headers={
'User-Agent': 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'
})
html_resp = urllib.request.urlopen(req).read().decode("utf-8")
html = etree.HTML(html_resp)#初始化生成一個(gè)XPath解析對象
_list = html.xpath("//*[@id='con-ar']/div[2]/div/div/table/tbody/tr")
print(f"article count : {len(_list)}")
for tr in _list:
title = tr.xpath("*/a/@title")[0] # 獲取url的title
href = tr.xpath("*/a/@href")[0] # 獲取url的href
hot = tr.xpath("string(td[2])").strip() # 獲取熱度
print(f"{hot}\t{title}\thttps://www.baidu.com{href}")
單擊運行,程序運行。很快,所有的數據都來(lái)了,我把它們都抓住了。我笑了。希望百度鼠標能做到
這樣就完成了lxml xpath 的基本使用。更詳細的xpath教程,請看:
7.存儲數據
存入數據后立即修改代碼
print(f"article count : {len(_list)}")
with open('g_data.text', 'w') as f: # 在當前路徑下,以寫(xiě)的方式打開(kāi)一個(gè)名為'g_data.text',如果不存在則創(chuàng )建
for tr in _list:
title = tr.xpath("*/a/@title")[0] # 獲取url的title
href = tr.xpath("*/a/@href")[0] # 獲取url的href
hot = tr.xpath("string(td[2])").strip() # 獲取熱度
line = f"{hot}\t{title}\thttps://www.baidu.com{href}\n"
f.write(line) # 寫(xiě)入文件
8.補充
東西雖然不多,但是寫(xiě)了好久。這是我自己的學(xué)習總結,希望對大家有幫助。我只是一個(gè)菜鳥(niǎo)。你可以直接指出文章中的錯誤。 查看全部
網(wǎng)頁(yè)爬蟲(chóng)抓取百度圖片(2.如何用python請求一個(gè)網(wǎng)頁(yè)的過(guò)程分析(組圖))
我第一次遇到lxml庫1.什么是爬蟲(chóng)?
所謂爬蟲(chóng)就是按照一定的規則自動(dòng)從互聯(lián)網(wǎng)上抓取信息的程序或腳本。萬(wàn)維網(wǎng)就像一個(gè)巨大的蜘蛛網(wǎng),我們的爬蟲(chóng)就是它上面的蜘蛛,不斷地爬取我們需要的信息。
2.履帶三要素3.履帶過(guò)程分析
當一個(gè)人訪(fǎng)問(wèn)一個(gè)網(wǎng)頁(yè)時(shí),它是如何進(jìn)行的?
?、俅蜷_(kāi)瀏覽器,輸入要訪(fǎng)問(wèn)的URL,發(fā)起請求。
?、诘却?wù)器返回數據,通過(guò)瀏覽器加載網(wǎng)頁(yè)。
?、蹚木W(wǎng)頁(yè)中查找您需要的數據(文本、圖片、文件等)。
?、鼙4婺枰臄祿?。
對于爬蟲(chóng)來(lái)說(shuō),同樣如此。它模仿了人類(lèi)請求網(wǎng)頁(yè)的過(guò)程,但略有不同。
首先,對應上面的步驟①和②,我們需要使用python來(lái)實(shí)現請求一個(gè)網(wǎng)頁(yè)的功能。
其次,對應上面的步驟③,我們需要使用python來(lái)實(shí)現解析請求網(wǎng)頁(yè)的功能。
最后,對于上面的步驟④,我們需要使用python來(lái)實(shí)現保存數據的功能。
因為是一個(gè)簡(jiǎn)單的爬蟲(chóng),其他一些復雜的操作這里就不贅述了。下面,對以上功能一一分析。
4.如何用python請求一個(gè)網(wǎng)頁(yè)
作為擁有豐富類(lèi)庫的編程語(yǔ)言,使用python請求網(wǎng)頁(yè)完全是小菜一碟。這里有一個(gè)非常有用的類(lèi)庫 urllib.request。
如何模擬用戶(hù)請求,請看我的另一篇博客:
4.1. 抓取網(wǎng)頁(yè)
import urllib.request
response = urllib.request.urlopen('https://laoniu.blog.csdn.net/')
print(response.read().decode('utf-8'))
這樣就可以抓取csdn我主頁(yè)的html文檔了
當我們使用爬蟲(chóng)時(shí),我們需要從網(wǎng)頁(yè)中提取我們需要的數據。接下來(lái),我們來(lái)學(xué)習抓取百度搜索頁(yè)面的熱門(mén)列表數據。

4.2.如何解析網(wǎng)頁(yè)
使用 lxml 庫
lxml 是一個(gè)用 Python 編寫(xiě)的庫,可以快速靈活地處理 XML 和 HTML。
它支持 XML 路徑語(yǔ)言 (XPath) 和可擴展樣式表語(yǔ)言轉換 (XSLT),并實(shí)現了通用的 ElementTree API。
安裝
#pip方式安裝
pip3 install lxml
#wheel方式安裝
#下載對應系統版本的wheel文件:http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml
pip3 install lxml-4.2.1-cp36-cp36m-win_amd64.whl
yum install -y epel-release libxslt-devel libxml2-devel openssl-devel
pip3 install lxml
環(huán)境/版本列表:
4.3.寫(xiě)代碼
import urllib.request
from lxml import etree
# 獲取百度熱榜
url = "https://www.baidu.com/s?ie=UTF-8&wd=1"
# 我們在請求頭加入User-Agent參數,這樣可以讓服務(wù)端認為此次請求是用戶(hù)通過(guò)瀏覽器發(fā)起的正常請求,防止被識別為爬蟲(chóng)程序請求導致直接拒絕訪(fǎng)問(wèn)
req = urllib.request.Request(url=url, headers={
'User-Agent': 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'
})
# 發(fā)起請求
html_resp = urllib.request.urlopen(req).read().decode("utf-8")
在這里我們可以順利獲取到百度搜索頁(yè)面的html文檔
我們需要看看熱搜排名的標簽元素在哪里


找到第一個(gè)右鍵復制XPath(后來(lái)的XPath是什么)

我們需要了解和使用XPath。XPath 是 XML Path Language,它是一種用于確定 XML 文檔某部分位置的語(yǔ)言。
復制內容的結果是://*[@id="con-ar"]/div[2]/div/div/table/tbody[1]/tr[1]
這個(gè)xPath字符串表示當前在html中的位置是熱點(diǎn)新聞的第一行
5.XPath 常用規則
表達
描述
節點(diǎn)名
選擇該節點(diǎn)的所有子節點(diǎn)
/
從當前節點(diǎn)中選擇直接子節點(diǎn)
//
從當前節點(diǎn)中選擇后代節點(diǎn)
.
選擇當前節點(diǎn)
..
選擇當前節點(diǎn)的父節點(diǎn)
@
選擇屬性
*
通配符,選擇所有元素節點(diǎn)和元素名稱(chēng)
@*
選擇所有屬性
[@atrib]
選擇具有給定屬性的所有元素
[@atrib='value']
選擇具有給定值的給定屬性的所有元素
[標簽]
選擇具有指定元素的所有直接子節點(diǎn)
[標簽='文本']
選擇所有指定元素,文本內容為文本節點(diǎn)
6.繼續分析
那么,當我們想要獲取所有熱門(mén)新聞時(shí),我們該如何寫(xiě)作呢?
繼續看網(wǎng)頁(yè)

可以看到所有的熱榜都在三個(gè)以下
修改剛剛復制的XPath
//*[@id="con-ar"]/div[2]/div/div/table/tbody[1]/tr[1] 改為 //*[@id="con-ar"]/ div[2]/div/div/table/tbody/tr
這樣X(jué)Path就會(huì )定位到這三個(gè)tbody下的所有tr元素內容
繼續看看tr是不是我們想要的,展開(kāi)一個(gè)tr看看

甘~還有一堆,百度,你不講武道,

這該怎么做。我們需要獲取的數據是【標題】【訪(fǎng)問(wèn)鏈接】【熱度】,現在tr元素全部到手了
然后直接從tr開(kāi)始獲取下面所有標簽的標題和超鏈接
標題的 XPath:*/a/@title 超鏈接的 XPath:*/a/@href
*表示匹配tr/a下的所有元素都在*找到第一個(gè)a標簽@是屬性選擇器標題,href是要選擇的元素屬性
還在發(fā)燒,讓我繼續操作,直接選擇tr下的第二個(gè)td XPath:td[2]
分析完成后貼出完整代碼
import urllib.request
from lxml import etree
# 獲取百度熱榜
url = "https://www.baidu.com/s?ie=UTF-8&wd=1"
# 我們在請求頭加入User-Agent參數,這樣可以讓服務(wù)端認為此次請求是用戶(hù)通過(guò)瀏覽器發(fā)起的正常請求,防止被識別為爬蟲(chóng)程序請求導致直接拒絕訪(fǎng)問(wèn)
req = urllib.request.Request(url=url, headers={
'User-Agent': 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'
})
html_resp = urllib.request.urlopen(req).read().decode("utf-8")
html = etree.HTML(html_resp)#初始化生成一個(gè)XPath解析對象
_list = html.xpath("//*[@id='con-ar']/div[2]/div/div/table/tbody/tr")
print(f"article count : {len(_list)}")
for tr in _list:
title = tr.xpath("*/a/@title")[0] # 獲取url的title
href = tr.xpath("*/a/@href")[0] # 獲取url的href
hot = tr.xpath("string(td[2])").strip() # 獲取熱度
print(f"{hot}\t{title}\thttps://www.baidu.com{href}")
單擊運行,程序運行。很快,所有的數據都來(lái)了,我把它們都抓住了。我笑了。希望百度鼠標能做到

這樣就完成了lxml xpath 的基本使用。更詳細的xpath教程,請看:
7.存儲數據
存入數據后立即修改代碼
print(f"article count : {len(_list)}")
with open('g_data.text', 'w') as f: # 在當前路徑下,以寫(xiě)的方式打開(kāi)一個(gè)名為'g_data.text',如果不存在則創(chuàng )建
for tr in _list:
title = tr.xpath("*/a/@title")[0] # 獲取url的title
href = tr.xpath("*/a/@href")[0] # 獲取url的href
hot = tr.xpath("string(td[2])").strip() # 獲取熱度
line = f"{hot}\t{title}\thttps://www.baidu.com{href}\n"
f.write(line) # 寫(xiě)入文件

8.補充
東西雖然不多,但是寫(xiě)了好久。這是我自己的學(xué)習總結,希望對大家有幫助。我只是一個(gè)菜鳥(niǎo)。你可以直接指出文章中的錯誤。