一、概況
上一篇我們用一個表情網站入門瞭爬蟲,爬瞭很多表情。今天我們繼續在爬的路上,今天就爬個校花吧,畢竟妹子屬於稀缺資源,要不媽媽總會問,你到底找不找女朋友瞭,爬點校花吧,以後跟媽媽聊天,可以哭著對她說,這就是我女朋友,漂亮吧~。行瞭,為瞭媽媽不擔心,我們開始行動吧。
二、準備
在爬之前,我們要確定我們爬取的網站以及要爬取的哪些信息。
- 目標網站:校花網(http://www.xiaohuar.com/list-1-1.html)
- 獲取信息:
- 校花的名字
- 校花的照片
- 校花的詳細資料
確定好要爬的東西,就開始分析網站,其實我特別想獲取聯系方式,可是實力不允許呀。沒有~
三、首頁分析
- URL地址變化分析
- 第一頁:http://www.xiaohuar.com/list-1-0.html
- 第二頁:http://www.xiaohuar.com/list-1-1.html
- 第五頁:http://www.xiaohuar.com/list-1-4.html
不解釋瞭,每頁的地址應該能看的清清楚楚,明明白白。
- 提取信息分析 我們確定瞭每張圖片都是一個獨立的div標簽,那麼我首要任務就是把每頁的div標簽全部在爬下來
我們隨便點一個div,看看裡面的標簽,從每個div裡面我們可以取出下面這些信息。那麼詳細信息我們去哪取,對,校花的詳細信息在詳情鏈接,我們要把詳情鏈接取出來,在去裡面看看有什麼?
打開詳細鏈接,我們可以看到如下信息,是我們想要的,有些信息確實沒有,那也沒辦法瞭。
先分析到這,詳情頁的信息,我們先不管在哪個標簽下,先把我們目前想要的這些信息獲取出來在說。
四、首頁提取
我們用xpath插件先簡單定位一下,xpath有個特別好用的功能,就是模糊定位,我們發現想要的div標簽class屬性都包含一個一樣的樣式名字。 – 註意: 一定確保隻是你想要的內容包括的樣式。如果下面這個包含的是item屬性,就會取出126個,這肯定是不對的。功能雖好,但是一定要慎重使用。
我們已經把最重要的信息詳情地址爬取下來瞭,剩下的就是代碼實現,代碼跟上一篇的鬥圖啦項目的邏輯差不多。
import requests
from lxml import etree
import os
class XHSpider():
def __init__(self):
# 默認第一頁開始
self.pn = 0
# 默認URL
self.url = 'http://www.xiaohuar.com/list-1-{0}.html'
# 添加請求頭,模擬瀏覽器
self.headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'
}
# 發起請求
def loadpage(self):
# 拼接請求地址
req_url = self.url.format(self.pn) # http://www.xiaohuar.com/list-1-0.html
print(req_url)
# 發起請求
reponse = requests.get(url=req_url, headers=self.headers)
# 取返回的內容
content = reponse.text
'''
註意:如果發現用xpath插件在瀏覽器上能取到標簽,但是在代碼裡面取不到
最好把請求下來的源代碼保存到代碼,分析一下為什麼取不到,有時候
瀏覽器裡面的源代碼跟你在代碼裡面請求的源碼可能稍微不一樣。
'''
with open('xiaohua.html','w') as f:
f.write(content)
# 構造xpath解析對象
html = etree.HTML(content)
# 先取出這個頁面所有div標簽
div_list = html.xpath('//div[contains(@class,"masonry_brick")]')
for div in div_list:
# 從從每個div標簽取出詳情頁鏈接 .代表當前位置
desc_url = div.xpath('.//div[@class="img"]//a/@href')[0]
# 標題
img_title = div.xpath('.//div[@class="img"]//img/@alt')[0]
# 封面圖片地址
img_url= div.xpath('.//div[@class="img"]//img/@src')[0]
print(desc_url)
if __name__ == "__main__":
xhs = XHSpider()
xhs.loadpage()
#打印
http://www.xiaohuar.com/p-1-1997.html
http://www.xiaohuar.com/p-1-1995.html
http://www.xiaohuar.com/p-1-1994.html
http://www.xiaohuar.com/p-1-1993.html
http://www.xiaohuar.com/p-1-1991.html
http://www.xiaohuar.com/p-1-1986.html
......
-
扫码下载安卓APP
-
微信扫一扫关注我们微信扫一扫打开小程序手Q扫一扫打开小程序
-
返回顶部