一、前言在開始寫爬蟲之前,我們先了解一下爬蟲 首先,我們需要知道爬蟲是什么,這里直接引用百度百科的定義 網絡爬蟲(又被稱為網頁蜘蛛,網絡機器人,在FOAF社區(qū)中間,更經常的稱為網頁追逐者),是一種按照一定的規(guī)則,自動地抓取萬維網信息的程序或者腳本。
這些還不夠,我們還需要知道爬蟲爬取數據的基本步驟。 爬蟲爬取數據一般分為三個步驟 獲取網頁巧婦難為無米之炊。我們需要的是數據全在網頁里,拿不到網頁,代碼敲得再好也沒用。所以一個爬蟲的第一步一定是獲取網頁。 提取信息拿到網頁之后,我們要做的就是分析網頁結構,定位要爬取的信息,然后提取出來 保存信息獲得信息之后,一般需要把信息保存起來以便下次使用
完成上面三步一個簡單的爬蟲就寫好了( ̄▽ ̄)",下面開始寫壁紙爬蟲 二、開始寫爬蟲我們要爬取的目標網站是:http://www.netbian.com/,這個網站長這樣: 紅色方框里的就是我們要爬取的圖片。 在動手寫代碼之前,我們要先理一理思路,這樣可以讓思路更清晰,寫代碼時就會更流暢,代碼也更簡潔。 對于一個爬蟲腳本,我們一般需要考慮以下幾點: 爬什么:我們要從網頁上獲取的數據是什么 怎么爬:用什么庫?是否需要使用框架?有沒有 ajax接口? 爬取步驟:哪個先爬,哪個后爬
以我們的項目為例: 爬什么: 我們的目標是下載網頁中的圖片,要下載圖片就要先獲得圖片的地址,而圖片的地址就在網頁中。 所以我們需要爬取網頁中圖片的地址。 怎么爬: 圖片在幾十到幾百張之間,下載量不大,不需要使用框架,直接使用 requests庫。 解析網頁使用 xpath。 爬取步驟: 第一步:分析網頁,寫出圖片的 xpath路徑 第二步:用 requests庫獲取網頁 第三步:使用 lxml庫解析網頁 第四步:通過 xpath獲得圖片鏈接 第五步:下載圖片 第六步:命名并保存圖片
分析完之后,就開始爬取了! 首先第一步,分析網頁,在瀏覽器里打開網頁,按下 F12進入開發(fā)者模式,選擇 Elements選項卡,如圖: 使用元素選擇器: 找到標簽后,我們就可以寫出標簽的 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)
運行結果: 這樣我們就完成了一個簡易版的壁紙爬蟲,為什么說是簡易版呢,理由如下: 圖片太小了,根本不能用作壁紙(其實是我偷懶了( ̄▽ ̄)"),要獲取高清壁紙的話,還需要點擊圖片進入下一個頁面,簡單起見我直接爬了首頁的縮略圖。 不能自動翻頁,運行一次只能下載一頁的圖片,翻頁可以獲取網頁中下一頁的鏈接,或者尋找網址的變化規(guī)律
|