乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      python爬蟲系列之 xpath實戰(zhàn):批量下載壁紙

       看見就非常 2020-05-08

      一、前言

      在開始寫爬蟲之前,我們先了解一下爬蟲

      首先,我們需要知道爬蟲是什么,這里直接引用百度百科的定義

      網絡爬蟲(又被稱為網頁蜘蛛,網絡機器人,在FOAF社區(qū)中間,更經常的稱為網頁追逐者),是一種按照一定的規(guī)則,自動地抓取萬維網信息的程序或者腳本。

      這些還不夠,我們還需要知道爬蟲爬取數據的基本步驟。

      爬蟲爬取數據一般分為三個步驟

      1. 獲取網頁

        巧婦難為無米之炊。我們需要的是數據全在網頁里,拿不到網頁,代碼敲得再好也沒用。所以一個爬蟲的第一步一定是獲取網頁。

      2. 提取信息

        拿到網頁之后,我們要做的就是分析網頁結構,定位要爬取的信息,然后提取出來

      3. 保存信息

        獲得信息之后,一般需要把信息保存起來以便下次使用

      完成上面三步一個簡單的爬蟲就寫好了( ̄▽ ̄)",下面開始寫壁紙爬蟲

      二、開始寫爬蟲

      我們要爬取的目標網站是:http://www.netbian.com/,這個網站長這樣:

      picture-1

      紅色方框里的就是我們要爬取的圖片。

      在動手寫代碼之前,我們要先理一理思路,這樣可以讓思路更清晰,寫代碼時就會更流暢,代碼也更簡潔。

      對于一個爬蟲腳本,我們一般需要考慮以下幾點:

      1. 爬什么:我們要從網頁上獲取的數據是什么

      2. 怎么爬:用什么庫?是否需要使用框架?有沒有 ajax接口?

      3. 爬取步驟:哪個先爬,哪個后爬

      以我們的項目為例:

      1. 爬什么:

        我們的目標是下載網頁中的圖片,要下載圖片就要先獲得圖片的地址,而圖片的地址就在網頁中。

        所以我們需要爬取網頁中圖片的地址。

      2. 怎么爬:

        圖片在幾十到幾百張之間,下載量不大,不需要使用框架,直接使用 requests庫。

        解析網頁使用 xpath。

      3. 爬取步驟:

        第一步:分析網頁,寫出圖片的 xpath路徑

        第二步:用 requests庫獲取網頁

        第三步:使用 lxml庫解析網頁

        第四步:通過 xpath獲得圖片鏈接

        第五步:下載圖片

        第六步:命名并保存圖片

      分析完之后,就開始爬取了!

      首先第一步,分析網頁,在瀏覽器里打開網頁,按下 F12進入開發(fā)者模式,選擇 Elements選項卡,如圖:

      picture-2

      使用元素選擇器:

      picture-3

      找到標簽后,我們就可以寫出標簽的 xpath路徑,這個比較簡單,就不詳細寫了。有疑問的可以評論留言。

      圖片標簽的 xpath路徑:

      #圖片地址
      path = '//a[@title]/img/@src'
      #為了方便給圖片命名 順便把圖片名字也爬下來
      name = '//a[@title]/img/@alt'

      接下來就是應用我們所學的時候了,話不多說,直接上代碼:

      #-*- coding: utf-8 -*
      import requests
      from lxml import etree
      
      
      #網站地址
      url = 'http://www.netbian.com/'
      
      #獲取網頁
      r = requests.get(url)
      r.encoding = r.apparent_encoding
      #解析網頁
      dom = etree.HTML(r.text)
      
      #獲取圖片 img標簽
      #先獲取圖片所在的 img標簽在分別獲取圖片鏈接和名字
      img_path = '//a[@title]/img'
      imgs = dom.xpath(img_path)
      
      #獲取圖片的鏈接和名字 并下載 命名 保存
      for img in imgs:
          #xpath 的相對路徑 “.” 代表上一級標簽
          #不要忘記 xpath返回的總是列表!
          src = img.xpath('./@src')[0]
          name = img.xpath('./@alt')[0]
      
          #下載圖片
          image = requests.get(src)
          #命名并保存圖片
          with open(name+'.jpg', 'wb') as f:
              f.write(image.content)

      運行結果:

      picture-4

      這樣我們就完成了一個簡易版的壁紙爬蟲,為什么說是簡易版呢,理由如下:

      1. 圖片太小了,根本不能用作壁紙(其實是我偷懶了( ̄▽ ̄)"),要獲取高清壁紙的話,還需要點擊圖片進入下一個頁面,簡單起見我直接爬了首頁的縮略圖。

      2. 不能自動翻頁,運行一次只能下載一頁的圖片,翻頁可以獲取網頁中下一頁的鏈接,或者尋找網址的變化規(guī)律

        本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多