他說:“只是單純的想用Python收集一些素顏照,做機器學習使用”,“我信你個鬼!”

      網友投稿 794 2025-04-01

      今天,他爬取了 上千張 相親素顏照。跟我說?刷相親平臺,收集素顏照,訓練機器模型。這也能信?


      她們明明化妝了。

      閱讀本文你將收獲

      近萬張素顏頭像;

      lxml 解析庫初識;

      XPath 語法初識;

      Cooike 反爬;

      女朋友(沒準是意外收獲)

      Python 采集 19 樓相親女生頭像

      從本篇博客開始,你將進入爬蟲 120 例的第二個小階段,requests + lxml 實現爬蟲。

      requests 相信通過前面 10 個案例,你已經比較熟悉了,接下來我們在其基礎上,新增一款爬蟲解析庫 lxml。該庫主要用于 XML,HTML 的解析,而且解析效率非常高,使用它之后,你就可以擺脫編寫正則表達式的煩惱了。

      目標數據源分析

      爬取目標網站

      本次抓取目標是 19 樓女生相親頻道,該分類頻道截止 7 月 1 日還在持續更新中。

      https://www.19lou.com/r/1/19lnsxq.html

      以下圖片來自網頁截圖,如有侵權,及時聯系橡皮擦哦~

      本次爬取的目標為上圖頭像圖片,文件名保存為標題內容。

      使用的 Python 模塊

      requests 模塊

      lxml 模塊

      fake_useragent 模塊

      重點學習內容

      lxml 模塊初識。

      列表頁分析

      本次抓取圍繞列表頁即可完成任務,列表頁排序規則如下:

      https://www.19lou.com/r/1/19lnsxq.html https://www.19lou.com/r/1/19lnsxq_2.html https://www.19lou.com/r/1/19lnsxq-233.html

      圖片所在標簽如下所示,提取工作交給 lxml 模塊完成,當然為了聯系熟練程度,你依舊可以使用 re 模塊完成一版。

      lxml 基礎知識

      提前通過 pip install lxml 對該庫完成安裝。

      導入該庫與該庫的基本使用。

      from lxml import etree html = "一點HTML代碼" #生成一個 XPath 對象 html=etree.HTML(text) # 提取數據 html.xpath('//li/a')

      上述代碼注釋中提及的 XPath 對象,關于 XPath,是一門在 XML/HTML 文檔中查找信息的語言,大意為通過特定語法在 HTML 中提取數據的語言,基礎知識的學習,可以參考 https://www.w3school.com.cn/xpath/xpath_intro.asp,最佳的學習技巧是邊查邊用。

      整理需求如下

      批量生成待抓取列表頁;

      requests 請求目標數據;

      他說:“只是單純的想用Python收集一些素顏照,做機器學習使用”,“我信你個鬼!”

      lxml 提取目標數據;

      保存圖片。

      編碼時間

      在編碼時,為了防止直接被反爬識別,所在爬取過程中,增加一個等待時間,限制爬取速度(當然在后續發現沒有對 IP 的限制,直接移除即可)。

      代碼編寫過程中,如果出現如下錯誤,更新 fake_useragent 即可。

      raise FakeUserAgentError('Maximum amount of retries reached')

      更新腳本如下:

      pip install -U fake-useragent

      如果依舊失敗,建議自己寫隨機生成 UserAgent 的函數。

      一點點反爬

      爬取該目標數據時,直接通過 requests 請求目標地址,會返回如下代碼,該代碼不是目標數據所在頁面,即網站存在反爬技術。

      直接請求目標網址,得到的響應代碼如下圖所示,注意紅框位置。

      對 requests 請求到的數據進行分析,發現在返回的代碼中設置了 Cookie,該值進行反復測試之后,發現為固定值,后續直接通過 requests 參數 headers 設置即可。

      獲取到目標頁面源碼之后,就可以通過 lxml 進行頁面提取操作了,在前文已經進行了簡單的描述。重點學習的分為兩個部分內容:

      首先通過 lxml 模塊中的 etree 對象,將 HTML 源碼進行序列化,即轉化為 Element 對象;

      然后對 Element 對象進行解析,這里用到的解析語法是 XPath,本文用到了路徑解析,在完整代碼部分有注釋說明。

      完整代碼

      import requests from lxml import etree from fake_useragent import UserAgent import time def save(src, title): try: res = requests.get(src) with open(f"imgs/{title}.jpg", "wb+") as f: f.write(res.content) except Exception as e: print(e) def run(url): # ua = UserAgent(cache=False) ua = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36" headers = { "User-Agent": ua, "Host": "www.19lou.com", "Referer": "https://www.19lou.com/r/1/19lnsxq-233.html", "Cookie": "_Z3nY0d4C_=37XgPK9h" # 從反爬代碼中獲取到的值 } try: res = requests.get(url=url, headers=headers) text = res.text # 將 html 轉換成 Element 對象 html = etree.HTML(text) # xpath 路徑提取 @class 為選取 class 屬性 divs = html.xpath("http://div[@class='pics']") # print(len(divs)) # 遍歷 Elements 節點 for div in divs: # 提取地址,注意提取的屬性為 data-src 而不是 src src = div.xpath("./img/@data-src")[0] # 提取標題 title = div.xpath("./img/@alt")[0] save(src, title) except Exception as e: print(e) if __name__ == '__main__': urls = ["https://www.19lou.com/r/1/19lnsxq.html"] for i in range(114, 243): urls.append(f"https://www.19lou.com/r/1/19lnsxq-{i}.html") for url in urls: print(f"正在抓取{url}") run(url) # time.sleep(5) print("全部爬取完畢")

      為了提高效率,你可以取消 5 秒等待,也可以采用多線程,不過嘗試幾秒鐘就好了,不要過度抓取哦,畢竟咱們只為學習。

      上述代碼還存在一個重要知識點,在獲取到的源碼中圖片的 src 屬性為 dot.gif(加載圖片),data-src 屬性存在值。

      具體對比如下圖所示,上圖為直接查看頁面源碼,下圖為服務器直接返回源碼。

      這部分給我們的爬取提示為,任何數據的解析提取,都要依據服務器直接返回的源碼。

      抓取結果展示時間

      爬蟲 120 例,第 11 例完成,希望本篇博客能帶給你不一樣的驚喜與知識。相關資料可以在下面直接獲取。

      完整代碼-:https://codechina.csdn.net/hihell/python120,NO11。

      爬取資源僅供學習使用,侵權刪。

      Python 正則表達式

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:wps ppt圓角矩形怎么調圓角
      下一篇:條碼生成怎么做(怎么自動生成條碼)
      相關文章
      中文字幕在线观看亚洲| 亚洲福利中文字幕在线网址| 亚洲一级大黄大色毛片| 国产中文在线亚洲精品官网| 亚洲视频在线观看地址| 久久精品国产精品亚洲人人 | 亚洲综合久久夜AV | 亚洲国产精品网站在线播放 | 亚洲精品一级无码鲁丝片| 亚洲国产区男人本色在线观看| 亚洲码一区二区三区| 久久亚洲国产精品| 亚洲精品白浆高清久久久久久| 亚洲国产成人精品女人久久久| 色窝窝亚洲AV网在线观看| 亚洲一卡2卡三卡4卡无卡下载| 亚洲AV无码一区二区三区在线| 亚洲视频在线观看网址| 亚洲av日韩av激情亚洲| 国产亚洲福利精品一区| 亚洲色婷婷六月亚洲婷婷6月| 亚洲 综合 国产 欧洲 丝袜| 亚洲欧美日韩中文二区| 中文字幕亚洲码在线| 亚洲熟妇无码八V在线播放| 亚洲入口无毒网址你懂的| 亚洲成a人片在线观看播放| 亚洲人成在线播放网站岛国| 亚洲高清视频在线观看| 久久亚洲一区二区| 亚洲AV成人精品网站在线播放 | 亚洲最大AV网站在线观看| 亚洲国产一区视频| 国产午夜亚洲精品不卡电影| 亚洲一线产品二线产品| 亚洲乱亚洲乱妇24p| 亚洲中文字幕无码一去台湾 | 亚洲热线99精品视频| 久久国产亚洲电影天堂| 亚洲香蕉免费有线视频| 亚洲一级特黄特黄的大片 |