Python爬蟲詳解,每一個步驟都給你細緻的講解(附源碼)

前言php

本文的文字及圖片來源於網絡,僅供學習、交流使用,不具備任何商業用途,版權歸原做者全部,若有問題請及時聯繫咱們以做處理。html

今天來教你們如何使用Python來爬取博海拾貝的圖片,分類保存,寫入文檔。python

Python爬蟲詳解,每一個步驟都給你細緻的講解(附源碼)

 

項目目標

建立一個文件夾, 分類保存全部文章圖片。下載成功,結果顯示控制檯。swift

Python爬蟲詳解,每一個步驟都給你細緻的講解(附源碼)

 

項目分析

一、如何找到真正訪問的地址,多網頁請求?ruby

滑動鼠標,觀察網站,右鍵F12 。鼠標滾輪滑動加載新內容。如圖:服務器

Python爬蟲詳解,每一個步驟都給你細緻的講解(附源碼)

 

點開隨機網頁 , 點開Request URL ,觀察網址的規律。網絡

Python爬蟲詳解,每一個步驟都給你細緻的講解(附源碼)

 

https://bh.sb/page/1/

https://bh.sb/page/2/

https://bh.sb/page/3/

https://bh.sb/page/4/





觀察到,每增長一頁page/{}/自增長1,用{}代替變換的變量,再用for循環遍歷這網址,實現多個網址請求。less

2. 反爬處理dom

1)獲取正常的 http請求頭,並在requests請求時,設置這些常規的http請求頭。函數

2)使用 fake_useragent ,產生隨機的UserAgent進行訪問。

 

涉及的庫和網站

一、網址以下:

https://www.doutula.com/photo/list/?page={}

二、涉及的庫:requests、lxml、fake_useragent、time、os

三、軟件:PyCharm

項目實施

一、咱們定義一個class類繼承object,而後定義init方法繼承self,再定義一個主函數main繼承self。導入須要的庫和網址,建立保存文件夾。

import requests, os
from lxml import etree
from fake_useragent import UserAgent
import time
class bnotiank(object):
def __init__(self):
os.mkdir("圖片") # 在建立文件夾 記住只有第一次運行加上,若是屢次運行請註釋掉本行。
def main(self):
pass
if __name__ == '__main__':
Siper=bnotiank()
Siper.main()










二、隨機UserAgent ,構造請求頭,防止反爬。

ua = UserAgent(verify_ssl=False)
for i in range(1, 50):
self.headers = {
'User-Agent': ua.random
}



三、發送請求 ,獲取響應,頁面回調,方便下次請求。

'''發送請求 獲取響應'''
def get_page(self, url):
res = requests.get(url=url, headers=self.headers)
html = res.content.decode("utf-8")
return html



四、定義parse_page函數,獲取二級頁面地址,for遍歷獲取須要的字段。

def parse_page(self, html):
parse_html = etree.HTML(html)
image_src_list = parse_html.xpath('//p/a/@href')
# print(image_src_list)


五、對二級頁面發生請求,xpath解析數據,獲取大圖片連接。

reo = parse_html1.xpath('//div//div[@class="content"]') #父結點
for j in reo:
d = j.xpath('.//article[@class="article-content"]//p/img/@src')[0]
text = parse_html1.xpath('//h1[@class ="article-title"] //a/text()')[0].strip()


六、請求圖片地址,寫入文檔。

html2 = requests.get(url=d, headers=self.headers).content
dirname = "./d/" + text + ".jpg" #定義圖命名
with open(dirname, 'wb') as f:
f.write(html2)
print("%s 【下載成功!!!!】" % text)



七、調用方法,實現功能。

url = self.url.format(page)
print(url)
html = self.get_page(url)
self.parse_page(html)


八、設置延時。(防止ip被封)。

time.sleep(1) """時間延時"""

效果展現

一、點擊綠色小三角運行輸入起始頁,終止頁。

Python爬蟲詳解,每一個步驟都給你細緻的講解(附源碼)

 

 

二、將下載成功信息顯示在控制檯。

Python爬蟲詳解,每一個步驟都給你細緻的講解(附源碼)

 

三、text 做爲圖片命名,展現效果以下所示。

Python爬蟲詳解,每一個步驟都給你細緻的講解(附源碼)

 

總結

一、不建議抓取太多數據,容易對服務器形成負載,淺嘗輒止便可。

二、本文基於Python網絡爬蟲,講述了反爬技巧,利用爬蟲庫,實現了分類圖片的獲取,存入文檔。

三、但願經過這個項目,可以幫助瞭解xpath,字符串是如何拼接,format函數如何運用。

四、實現的時候,總會有各類各樣的問題,切勿眼高手低,勤動手,才能夠理解的更加深入。

相關文章
相關標籤/搜索