python小白爬蟲第一篇

由于公司大佬都去實地部署項目了抑党,所以作為前端切圖仔的我,是不用過去滴

嘻嘻嘻

進入今天的正題撬碟,python作為當下最熱的語言诞挨,所以來蹭蹭熱度莉撇,首先先從爬蟲入手了。剛好是七夕前后亭姥,作為木有女朋友的前端仔稼钩,只能花花時間去爬點資源了顾稀,于是我對https://www.mzitu.com伸出了“ 猿手 ”

準備工作

python3.6安裝好达罗,本人用的是window(如果是使用linux的大佬也不會看我的文章了,哈哈哈)

requests庫-----》一個python派發(fā)請求之類的庫(個人理解)----》可以使用pip install requests安裝

BeautifulSoup-------》一個處理xml静秆、html之類標簽的庫粮揉,挺好用的,誰用誰知道---》安裝同上流程

編輯器的話抚笔,看個人吧扶认,本人是前端開發(fā),所以直接使用vscode了

ok殊橙,一切準備就緒辐宾,準備發(fā)車

秋名山車神發(fā)車了

第一步

先打開網站,看看網頁源碼膨蛮,看看網頁結構(兄弟hold住叠纹,你是來爬資源的,不是來看美女的)
好的敞葛,我們打開源碼(鼠標右鍵誉察,查看源碼),然后你會發(fā)現


頁面源代碼

你可以看到惹谐,你要爬的圖片就是在這些鏈接里
然后持偏,打開你的編輯器,開始擼代碼氨肌,下面這些代碼就不用解釋了吧鸿秆,都又注釋

import requests
from bs4 import BeautifulSoup

# 定義請求頭,防止被識別為爬蟲
headers = {
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36",
  "Referer": "https://www.mzitu.com/"
}
# 定義爬取的網站域名
all_url = "https://www.mzitu.com/"

# 派發(fā)請求怎囚,返回響應的html
start_html = requests.get(all_url,headers=headers)

# 使用beautifulSoup處理html的字符串
Soup = BeautifulSoup(start_html.text,'lxml')

# 打印獲取回來的標簽
print(Soup)

運行之后卿叽,命令行就打印東西了,讓我來看一哈


運行結果

然后你就發(fā)現:哇桩了,和剛剛查看的源代碼一模一樣耶!!!!!


這么神奇嗎附帽?

看官別急,我們來進行下一步的操作井誉,下一步完成之后蕉扮,你距離你的小姐姐又近了一步。剛剛我們通過請求返回了整個網頁的源碼颗圣,但是我們并不是全部都需要喳钟,我們只要截取我們需要的就好了屁使,這個時候就是beautifulSoup出場的機會了
import requests
from bs4 import BeautifulSoup
# 定義請求頭,防止被識別為爬蟲
headers = {
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36",
  "Referer": "https://www.mzitu.com/"
}
# 定義爬取的網站域名
all_url = "https://www.mzitu.com/"
# 派發(fā)請求奔则,返回響應的html
start_html = requests.get(all_url,headers=headers)
# 使用beautifulSoup處理html的字符串
Soup = BeautifulSoup(start_html.text,'lxml')
# 打印獲取回來的標簽
# print(Soup)
# 該api是查找ul的id為pins的標簽蛮寂,然后再找其下面的a標簽
all_a = Soup.find('ul',id='pins').find_all('a')
# 循環(huán)遍歷a標簽的集合
for a in all_a:
  # 打印a標簽
  print(a)

打印出來的就是通過篩選的a標簽了,你要知道a標簽里面可是包含有好多小姐姐嘞易茬,到這里是不是動力十足了呢


小姐姐的集合

但是還不夠酬蹋,我們要拿的是圖片url呀,然后你就想抽莱,這個簡單范抓,我直接用正則匹配出來不就好了嗎?嘻嘻嘻食铐,其實有更簡單的方法

# 在循環(huán)中打印一下
print(a['href'])

就能把a標簽中的url打印出來了匕垫,下面我們加大力度,不然篇幅過長我就會被各位打的虐呻,在循環(huán)中再次請求url象泵,會返回html頁面源碼,我們是篩選出其中的一個標簽


循環(huán)中再次請求

你看頁面你就知道的斟叼,你要爬的是大的圖片偶惠,不可能爬一張小圖片吧,所以我們篩選返回的html中div的class為main-image下的img中的src犁柜,拿到url之后洲鸠,就是下載圖片了

 resp = requests.get(a['href'], headers=headers)
    trueHtml = BeautifulSoup(resp.text, 'lxml')
    # 篩選url
    url = trueHtml.find('div', class_="main-image").find('img')['src']
    # 請求
    result = requests.get(url, headers=headers)
    # 文件的寫入的路徑
    with open("H:\\python\\001\\img\\"+a.get_text()+".jpg", "wb") as f:
        # 寫入內容
        f.write(result.content)
        # 關閉文件
        f.close()

然后你就發(fā)現你的文件夾里面多了一些小姐姐的圖片


嘻嘻嘻

然后你會發(fā)現,咋這么少呀馋缅,就不能多爬點扒腕,我告訴你,沒問題萤悴,下面我們就來多爬點瘾腰。
添加循環(huán),該循環(huán)控制的是翻頁覆履,所以蹋盆,你懂的


你懂我意思吧

話不多bb,直接上代碼
import requests
from bs4 import BeautifulSoup

# 定義請求頭硝全,防止被識別為爬蟲
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36",
    "Referer": "https://www.mzitu.com/"
}
# 定義爬取的網站域名
all_url = "https://www.mzitu.com/"
# 控制翻頁
for i in range(1, 2):
    start_html = requests.get(all_url+"/page/" + str(i) + "/", headers=headers)
    # 使用beautifulSoup處理html的字符串
    Soup = BeautifulSoup(start_html.text, 'lxml')
    # 該api是查找ul的id為pins的標簽栖雾,然后再找其下面的a標簽
    all_a = Soup.find('ul', id='pins').find_all('a')
    all_a = list(set(all_a['href']))
    # 循環(huán)遍歷a標簽的集合
    for a in all_a:
            resp = requests.get(a,headers=headers)
            trueHtml = BeautifulSoup(resp.text, 'lxml')
            # 篩選url
            url = trueHtml.find('div', class_="main-image").find('img')['src']
            # 請求
            result = requests.get(url, headers=headers)
            # 文件的寫入的路徑
            with open("H:\\python\\001\\img\\"+a.get_text()+".jpg", "wb") as f:
                # 寫入內容
                f.write(result.content)
                # 關閉文件
                f.close()

ok。到這里基本的請求你就搞定了伟众,小姐姐也住到了你的“豪宅”(盤)里析藕。可能你一次性爬太多的時候會報錯凳厢,這是正常的账胧,嘻嘻嘻竞慢,這只是單線程的爬蟲,并沒有錯誤處理啥的治泥,而且使用的是你自己的ip筹煮,并沒有做ip的動態(tài)代理。這個文章暫時先這樣


溜了溜了
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末居夹,一起剝皮案震驚了整個濱河市败潦,隨后出現的幾起案子,更是在濱河造成了極大的恐慌吮播,老刑警劉巖变屁,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件眼俊,死亡現場離奇詭異意狠,居然都是意外死亡,警方通過查閱死者的電腦和手機疮胖,發(fā)現死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進店門环戈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人澎灸,你說我怎么就攤上這事院塞。” “怎么了性昭?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵拦止,是天一觀的道長。 經常有香客問我糜颠,道長汹族,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任其兴,我火速辦了婚禮顶瞒,結果婚禮上,老公的妹妹穿的比我還像新娘元旬。我一直安慰自己榴徐,他們只是感情好,可當我...
    茶點故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布匀归。 她就那樣靜靜地躺著坑资,像睡著了一般。 火紅的嫁衣襯著肌膚如雪穆端。 梳的紋絲不亂的頭發(fā)上袱贮,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天,我揣著相機與錄音徙赢,去河邊找鬼字柠。 笑死探越,一個胖子當著我的面吹牛,可吹牛的內容都是我干的窑业。 我是一名探鬼主播钦幔,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼常柄!你這毒婦竟也來了鲤氢?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤西潘,失蹤者是張志新(化名)和其女友劉穎卷玉,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體喷市,經...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡相种,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了品姓。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片寝并。...
    茶點故事閱讀 40,912評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖腹备,靈堂內的尸體忽然破棺而出衬潦,到底是詐尸還是另有隱情,我是刑警寧澤植酥,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布镀岛,位于F島的核電站,受9級特大地震影響友驮,放射性物質發(fā)生泄漏漂羊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一喊儡、第九天 我趴在偏房一處隱蔽的房頂上張望拨与。 院中可真熱鬧,春花似錦艾猜、人聲如沸买喧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽淤毛。三九已至,卻和暖如春算柳,著一層夾襖步出監(jiān)牢的瞬間低淡,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蔗蹋,地道東北人何荚。 一個月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像猪杭,于是被迫代替她去往敵國和親餐塘。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,922評論 2 361