av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

手把手教你使用XPath爬取免費(fèi)代理IP

好,我是霖hero。

創(chuàng)新互聯(lián)是一家專(zhuān)業(yè)提供秀英企業(yè)網(wǎng)站建設(shè),專(zhuān)注與成都網(wǎng)站制作、做網(wǎng)站、外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè)、H5網(wǎng)站設(shè)計(jì)、小程序制作等業(yè)務(wù)。10年已為秀英眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)網(wǎng)絡(luò)公司優(yōu)惠進(jìn)行中。

前言

可能有人說(shuō),初學(xué)者Python爬蟲(chóng)爬數(shù)據(jù)太難啦,構(gòu)造正則表達(dá)式的時(shí)候,太煩瑣了,眼睛都看花了,而且前一秒還可以愉快地爬取,下一秒IP就被封了,這還爬個(gè)屁啊,不爬了。哎,不要著急,這篇文章我們教你如何使用XPath來(lái)爬取快代理中的免費(fèi)代理IP,告別眼花,告別IP被封的煩惱。

XPath

首先我們來(lái)簡(jiǎn)單了解一下XPath,想要了解更多XPath,我們可以打開(kāi)W3school官方文檔進(jìn)行了解。

什么是 XPath?

  • XPath是XML路徑語(yǔ)言(XML Path Language);
  • XPath 使用路徑表達(dá)式在 XML 文檔中進(jìn)行導(dǎo)航;
  • XPath 包含一個(gè)標(biāo)準(zhǔn)函數(shù)庫(kù);
  • XPath 是 XSLT 中的主要元素;
  • XPath 是一個(gè) W3C 標(biāo)準(zhǔn);

XPath作用是什么?

  • XPath用來(lái)確定XML文檔中某部分位置的語(yǔ)言
  • XPath在XML文檔中查找信息的語(yǔ)言
  • XPath用于在XML文檔中通過(guò)元素和屬性進(jìn)行導(dǎo)航。

XPath 含有超過(guò) 100 個(gè)內(nèi)建的函數(shù)。這些函數(shù)用于字符串值、數(shù)值、日期和時(shí)間比較、節(jié)點(diǎn)和 QName 處理、序列處理、邏輯值等等。在Python爬蟲(chóng)中,我們完成可以使用XPath來(lái)做相應(yīng)的信息抽取。

XPath——常用規(guī)則

簡(jiǎn)單了解一下XPath后,我們來(lái)看看它的常用規(guī)則,如下表:

我們來(lái)簡(jiǎn)單說(shuō)一個(gè)示例:

 
 
 
 
  1. //title[@*] 

這就是一個(gè)XPath規(guī)則,它代表選擇選取所有帶有屬性的 title 元素。

好了,大概了解了XPath的常用規(guī)則和用法了,我們來(lái)添加一個(gè)Chrome瀏覽器的小插件——XPath Helper,這個(gè)小插件可以大大提高了我們使用XPath的效率。

XPath Helper的添加與使用

XPath Helper的添加

首先打開(kāi)Chrome商店搜索XPath Helper,如下圖所示:

點(diǎn)擊方框2,將插件添加至Chrome中,如下圖所示:

這里我們推薦點(diǎn)擊下圖的小圖釘,更方便我們使用XPath Helper插件

這樣X(jué)Path Helper插件就添加完畢了,接下來(lái)我們簡(jiǎn)單演示一下如何使用該插件。

XPath Helper的使用

首先我們打開(kāi)今天要爬取的快代理網(wǎng)站并打開(kāi)開(kāi)發(fā)者工具,找到我們要爬取內(nèi)容的節(jié)點(diǎn),如下圖所示:

然后打開(kāi)我們添加的插件,并輸入XPath規(guī)則,如下圖所示:

我們根據(jù)了table節(jié)點(diǎn)信息,來(lái)構(gòu)造了XPath規(guī)則,輸入XPath規(guī)矩可以直接看到返回的是什么,這樣我們就不需要每構(gòu)成一次就在程序里運(yùn)行看看能不能返回我們想要的值,這樣大大提高我們的效率。

實(shí)戰(zhàn)演練

爬取首頁(yè)

我們首先打開(kāi)快代理免費(fèi)代理網(wǎng)站并打開(kāi)開(kāi)發(fā)者工具,如下圖所示:

通過(guò)觀察可以發(fā)現(xiàn),頁(yè)面的URL最后的那個(gè)數(shù)字就是頁(yè)碼,也就是我們進(jìn)行翻頁(yè)的重要參數(shù),這里我們使用了page變量為我們翻頁(yè)的參數(shù),具體代碼如下:

 
 
 
 
  1. headers={ 
  2.     'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.106 Safari/537.36' 
  3. def get_page(page): 
  4.     url='https://www.kuaidaili.com/free/inha/'+str(page) 
  5.     response=requests.get(url,headers=headers) 
  6.     #數(shù)據(jù)類(lèi)型轉(zhuǎn)換 
  7.     html = parsel.Selector(response.text) 
  8.     parse_page(html) 

首先我們構(gòu)造了一個(gè)請(qǐng)求頭,然后定義了一個(gè)get_page()方法,這里要注意的是,當(dāng)我們獲取了請(qǐng)求頁(yè)面的文本數(shù)據(jù)時(shí),要進(jìn)行數(shù)據(jù)類(lèi)型的轉(zhuǎn)換,轉(zhuǎn)換為XPath可以查找信息的HTML文本,也就是創(chuàng)建了一個(gè)parsel.Selector對(duì)象,轉(zhuǎn)換后,我們就調(diào)用parse_page()方法,并傳入html參數(shù)。

XPath規(guī)則提取內(nèi)容

我們已經(jīng)成功提取了網(wǎng)頁(yè)的HTML文本,接下來(lái)我們開(kāi)始利用XPath規(guī)則來(lái)提取想要的內(nèi)容,首先我們要確定XPath規(guī)則提取內(nèi)容的范圍,如下圖所示:

從圖中我們可以看到table節(jié)點(diǎn)里包含我們要提取內(nèi)容,然后我們使用XPath Helper插件來(lái)方便我們確定是否能準(zhǔn)確提取目標(biāo)內(nèi)容,如下圖所示:

圖中的方框就是我們要提取內(nèi)容的范圍,確定范圍后,我們確定提取內(nèi)容對(duì)應(yīng)的XPath規(guī)則,如下圖所示:

好了,我們成功提取到了IP地址,經(jīng)過(guò)觀察,我們只要把圖中左上角的方框中IP改為PORT,這樣就可以提取到了端口號(hào)了,具體實(shí)現(xiàn)代碼如下:

 
 
 
 
  1. def parse_page(html): 
  2.     #XPath的匹配范圍 
  3.     parse_list = html.xpath('//table[@class="table table-bordered table-striped"]/tbody/tr') 
  4.     for tr in parse_list: 
  5.         parse_lists = {} 
 
 
 
 
  1. http=tr.xpath('./td[@data-title="類(lèi)型"]//text()').extract_first() 
  2.       num=tr.xpath('./td[@data-title="IP"]//text()').extract_first() 
  3.       port=tr.xpath('./td[@data-title="PORT"]//text()').extract_first() 
  4.       parse_lists[http]=num+':'+port 
  5.       time.sleep(0.1) 
  6.       print(parse_lists) 

要注意的是:

  • 我們?cè)跇?gòu)造XPath規(guī)則時(shí),如://td[@data-title="IP"],我們要將最前面的/改為.,否則只匹配頁(yè)面的第一個(gè)內(nèi)容;
  • 在XPath規(guī)則中,通過(guò)使用text()方法獲取節(jié)點(diǎn)內(nèi)部的文本,如在規(guī)則后面加//text();
  • 調(diào)用extract_first()返回的是一個(gè)string字符串,是list數(shù)組里面的第一個(gè)字符串。

最后我們通過(guò)構(gòu)造一個(gè)parse_lists字典,來(lái)使我們的數(shù)據(jù)更好看。

循環(huán)遍歷

我們使用一個(gè)for循環(huán),來(lái)遍歷翻頁(yè),具體代碼為:

 
 
 
 
  1. if __name__ == '__main__': 
  2.     for page in range(1,3): 
  3.         get_page(page) 

好了,這樣我們就成功爬取了快代理的免費(fèi)代理IP的前兩頁(yè),我們可以根據(jù)需要來(lái)進(jìn)行保存免費(fèi)代理IP。

結(jié)果展示


網(wǎng)站欄目:手把手教你使用XPath爬取免費(fèi)代理IP
本文路徑:http://uogjgqi.cn/article/dpceghc.html
掃二維碼與項(xiàng)目經(jīng)理溝通

我們?cè)谖⑿派?4小時(shí)期待你的聲音

解答本文疑問(wèn)/技術(shù)咨詢(xún)/運(yùn)營(yíng)咨詢(xún)/技術(shù)建議/互聯(lián)網(wǎng)交流