Python零基礎爬蟲教學(實戰案例手把手Python爬蟲教學)


前言
女朋友看了都能學會的爬蟲教學
自己斷斷續續學習練習了兩三年python爬蟲,從網上看了無數教程,跟大神們學習了各種神奇的操作,現在雖然沒成為大神,但是想通過這篇教程來分享自己學習的爬蟲實戰案例。
通過本教程,你將學會如何用Python爬蟲從網絡上爬取你想要的電影下載資源。本案例以00電影網為例進行爬取,當然你可以修改代碼爬取你想要的任何內容。
如果你是零基礎,請從頭閱讀,如果你有些基礎,可以選擇部分閱讀。
第一章 你需要的環境和軟件
python3.5
既然我們是python爬蟲,那必然需要python了。我用的是3.5.3版本

官方下載鏈接點這個鏈接並下拉翻到圖中位置

 

點擊紅框里的鏈接進行下載,如果你是64位系統就點第一個,如果你是32位系統就點第二個

下載完成后是一個.exe文件,雙擊運行,開始安裝,一路下一步就可以了,這里我沒法一步步演示,如果遇到問題可以留言保證第一時間回答(我也從小白一路走過來,能體會遇到問題時的心情)

pycharm community 2017
這個呢是一個代碼編輯器,可以大大提高編程效率

同樣是去官網下載,並且community版本是免費的,完全夠用

官網下載地址 點進去之后如圖所示

 

確保你選擇了紅框的位置,然后點擊download就可以下載了

下載完成后雙擊打開安裝程序,依然是一直點下一步就好了,當然也有一些自定義選項你可以自己選擇

環境配置
到這里我們的軟件就安裝好了

接下來就是環境配置,這一步的目的是讓pycharm和python配合

首先,為了實現爬蟲程序,我們需要給python安裝一些工具包,操作非常簡單

在開始菜單搜索cmd並回車,打開終端命令行窗口

手動輸入 pip3 install -------------- 並回車

本文案例中需要兩個庫安裝如下

pip3 install requests

pip3 install Beautifulsoup4 這兩句要分別運行,等一句安裝成功了再運行另一句

然后等待安裝,成功后會提示下圖字樣

第二章 開始寫python爬蟲
問題分析
在做任何爬蟲之前,我們都要先了解你爬取的網站的源碼,根據源碼來找到你想爬取的內容在什么位置

那么首先我們來看看目標網站的頁面源碼目標網站,點擊這個網址打開網頁,然后按F12鍵打開開發者模式,如圖所示

圖中,中間靠右側的紅色框里就是我們主要查看的內容,你要從這里面的代碼中找到你想要的內容才可以進行爬取。

這里,我們的目標是搜索電影資源並保存下來。可以看到,網頁中間有一個搜索框,輸入電影名字點擊搜索之后,會跳出搜索結果的頁面,然后點擊搜索結果就進入了該電影的詳情頁,並且有下載鏈接,如圖所示

 

這里我們搜索的是霸王別姬。

由上述過程,可以明確我們要寫一個Python爬蟲程序,讓爬蟲來代替我們去搜索和獲取電影的下載鏈接,這就是我們接下來編程的指導思想,告訴你的程序讓他去做什么。

總結一下,我們的爬蟲要做下面這幾件事情:

1、打開目標網頁
2、找到搜索框
3、提交搜索電影名並打開搜索結果頁面
4、進入搜索電影詳情頁
5、找到下載鏈接位置並把所有鏈接保存到本地電腦上
編程實現爬蟲
1、打開目標網頁
打開pycharm左上角菜單欄以此點擊file-->new project

在彈出的對話框中,設置項目路徑,這里命名為spider,然后點擊create

稍等幾秒項目就建立完成了,這時候在左邊資源管理器欄會出現spider項目文件夾,在spider上面右鍵-->new-->Python file來創建一個python程序腳本文件,命名為spider

然后就可以開始教我們的爬蟲做事了

復制下面代碼到spider.py中

# 導入之前安裝的庫
import requests
from bs4 import BeautifulSoup
 
# 首先定義以個變量url並賦值為目標網站'http://www.0011kytt.com'以及要搜索的電影名movie_name
# 注意引號,字符串必須用引號包圍起來
movie_name = '霸王別姬'
url = 'http://www.0011kytt.com'
# 然后用request.get()來獲取網頁
r = requests.get(url)
# 這里要根據網頁的編碼來設置解碼,這個目標網站編碼為'utf-8'
r.encoding = 'utf-8'
# 然后獲取網頁源碼並賦值給變量html
html = r.text
# 最后打印出網頁源碼
print(html)

然后右鍵spider.py腳本文件,點擊 run 'spyder.py' 即可運行

運行結果在下面控制台欄顯示,如圖所示

可以看到我們的爬蟲乖乖爬到了網頁的源碼,跟瀏覽器中按F12得到的是一樣的,這一步大功告成。

2、找到搜索框
這一步就要指揮我們的小爬蟲根據剛才得到的源碼去找搜索框了

小爬蟲它怎么會知道搜索框在哪里呢,當然是我們告訴它啊,那我們怎么知道呢,OK,回到瀏覽器按F12,在紅框源碼部分把鼠標指針放上去挨着找,鼠標指針位置對應的網頁部分會變灰色,點擊源碼上的小三角可以展開所有內容,方便我們查找,如圖所示

咦,找到了耶,好神奇有沒有

現在我們知道了原來搜索框在這個網頁源碼的<div class="search_box">這個部分,OK,去告訴那個智障小爬蟲

# 這里利用BeautifulSoup庫來解析網頁的源碼並賦值給soup,方便后面的尋找
soup = BeautifulSoup(html, "lxml")
# 因為我們已經知道搜索框在一個叫<div class="search_box">的地方
# 所以根據class="search_box"來找就好了
# 注意,因為class是python關鍵字,所以這里要用class_,這是BeautifulSoup的規定
search_box = soup.find(class_='search_box')
# OK 打印出來看看找得對不對
print(search_box)

復制這段代碼到spider.py中,粘貼到上一段代碼后面,然后跟上面一樣點擊運行,得到結果如圖

不得了了,這個智障爬蟲已經學會找到搜索框了,OK,這一步又大功告成

3、提交搜索電影名並打開搜索結果頁面

我們的小爬蟲長進不小,繼續教他怎么把電影名字填進搜索框然后點擊搜索

再回到瀏覽器F12界面,我們再來找填電影名的位置以及搜索按鈕的位置,如圖

蘇菲瑪索也太好看了吧  忍不住截出來給大家看看  烏蠅哥亂入 這網頁做的什么鬼

說正事

我們已經找到輸入位置和搜索按鈕位置分別在<input>和<button>中

另外,我們研究一下這個網站的搜索功能,先隨便搜索一個霸王別姬吧,說姬不說吧文明你我他,如圖

從圖中看到,網站鏈接變了,搜索頁面變為了php文件,記錄下這個url

還不趕緊告訴你的智障爬蟲,作為父親就得手把手教他

# 網站搜索頁面的url為http://www.0011kytt.com/search/search.php
search_url = 'http://www.0011kytt.com/search/search.php'
# 從網頁源碼里看到輸入位置的input中有個name='keywords'
# 這個keywords就是用來記錄我們輸入電影名的變量
# 於是,我們構造以下變量,用來讓爬蟲往搜索框填電影名
formdata = {'type': 'text',
            'keywords': movie_name}
# requests.post就可以把formdata填進搜索框,並得到搜索結果頁面賦值給r_r
r_r = requests.post(search_url, formdata)
# 同樣需要解碼
r_r.encoding = 'utf-8'
# 獲取網頁源碼並賦值給變量html
r_html = r_r.text
# 打印看看對不對
print(r_html)

復制代碼到spider.py中,貼在上一段代碼后面,然后運行,得到結果如下圖

哎喲,不得了了,我們的爬蟲會自己搜索了呢!

從圖中可以看到,霸王別姬的詳情頁鏈接就在<div class='item_pic'>的<a href=**********>中,那就好辦了呀,直接讓爬蟲獲取鏈接並打開

# 首先還是用BeautifulSoup庫來解析網頁的源碼
r_soup = BeautifulSoup(r_html, "lxml")
# 再根據class_='item_pic'找到所有搜索結果,有可能搜索到多個匹配的結果
movie_div_list = r_soup.find_all(class_='item_pic')
# 創建一個空的列表movie_url_list來存儲搜索結果的詳情頁鏈接
movie_url_list = []
# 因為有可能搜索到多個匹配的結果
# 所以這里用一個循環來獲取所有搜索結果的電影詳情頁鏈接
for movie_div in movie_div_list:
    # 對每一個搜索結果,找到其中的href里存着的詳情頁鏈接
    movie_url = movie_div.a.attrs['href']
    # 把詳情頁鏈接存到movie_url_list中
    movie_url_list.append(movie_url)
# OK 打印看看所有搜索結果的詳情頁鏈接
print(movie_url_list)

同上點擊運行,結果如下

可以看到列表中只有一個鏈接,因為霸王別姬搜索結果只有一個。。。

4、進入搜索電影詳情頁

這一步很簡單,只要request詳情頁鏈接得到詳情頁源碼,跟我們去瀏覽器手動F12得到的源碼比較一下,如果一樣那就說明成功了

# 這一步得構造詳情頁的鏈接,因為上一步得到的鏈接只是網站的相對路徑我們是無法直接訪問的
# 因為上一步的搜索結果可能有好幾個,所以還是構造循環程序
for movie_url in movie_url_list:
    # 構造詳情頁鏈接
    movie_url = url + movie_url
    # 直接 requests.get獲取網頁
    r_m = requests.get(movie_url)
    # 同樣需要解碼
    r_m.encoding = 'utf-8'
    # 獲取網頁源碼並賦值給變量html
    m_html = r_m.text
    # 打印看看對不對
    print(r_html)

 

同上復制到spider.py並運行得到結果如下(篇幅限制截圖一部分)

然后到霸王別姬的詳情頁霸王別姬按F12查看源碼,比較之后完全一樣,這一步又大功告成,你的智障爬蟲離幼兒園畢業只差一步了!

5、找到下載鏈接位置並把所有鏈接保存到本地電腦上
這一步,我們要指揮爬蟲去爬取詳情頁的所有下載鏈接並保存到自己電腦上

首先,我們還是得自己先看一下詳情頁源碼,找到下載鏈接的位置,再告訴即將幼兒園畢業的爬蟲

可以看到,所有的下載鏈接都在<a class="dwon1">中的href里面,哇,這就好辦了,趕緊告訴你的爬蟲去

    # # 首先還是用BeautifulSoup庫來解析網頁的源碼
    m_soup = BeautifulSoup(m_html, "lxml")
    # 根據<title>取得電影名,方便保存下載鏈接時文件命名
    name = m_soup.find('title').text.split('-')[1]
    # 再根據class_='dwon1'找到所有下載鏈接
    movie_down_list = m_soup.find_all(class_='dwon1')
    # 創建一個空的列表down_url_list來存儲搜索結果的詳情頁鏈接
    down_url_list = []
    # 繼續循環爬取下載鏈接並保存到down_url_list
    for movie_down in movie_down_list:
        # 提取href中的下載鏈接
        down_url = movie_down.attrs['href']
        # 把下載鏈接保存到down_url_list中,並在每個鏈接后面加一個換行符'\n'
        down_url_list.append(down_url + '\n')
 
    # 接下來就是把下載鏈接都保存到'電影名.txt'中
    with open(name+'.txt', 'w') as f:
        f.writelines(down_url_list)

這里注意!注意!注意!這部分代碼跟上部分代碼都在同一個循環中!!!!

為了方便小白使用,請將第4步中的代碼從spider.py中刪除!並且!!復制下面這段完整的代碼到剛才刪除的位置!!!然后運行即可

# 這一步得構造詳情頁的鏈接,因為上一步得到的鏈接只是網站的相對路徑我們是無法直接訪問的
# 因為上一步的搜索結果可能有好幾個,所以還是構造循環程序
for movie_url in movie_url_list:
    # 構造詳情頁鏈接
    movie_url = url + movie_url
    # 直接 requests.get獲取網頁
    r_m = requests.get(movie_url)
    # 同樣需要解碼
    r_m.encoding = 'utf-8'
    # 獲取網頁源碼並賦值給變量html
    m_html = r_m.text
    # 打印看看對不對
    # print(m_html)
 
 
    # # 首先還是用BeautifulSoup庫來解析網頁的源碼
    m_soup = BeautifulSoup(m_html, "lxml")
    # 根據<title>取得電影名,方便保存下載鏈接時文件命名
    name = m_soup.find('title').text.split('-')[1]
    # 再根據class_='dwon1'找到所有下載鏈接
    movie_down_list = m_soup.find_all(class_='dwon1')
    # 創建一個空的列表down_url_list來存儲搜索結果的詳情頁鏈接
    down_url_list = []
    # 繼續循環爬取下載鏈接並保存到down_url_list
    for movie_down in movie_down_list:
        # 提取href中的下載鏈接
        down_url = movie_down.attrs['href']
        # 把下載鏈接保存到down_url_list中,並在每個鏈接后面加一個換行符'\n'
        down_url_list.append(down_url + '\n')
 
    # 接下來就是把下載鏈接都保存到'電影名.txt'中
    with open(name+'.txt', 'w') as f:
        f.writelines(down_url_list)

運行之后我們看到,spider.py路徑中多了一個txt文件,里面保存了下載鏈接,如圖

至此大功告成了!你的智障爬蟲終於幼兒園畢業了!后面就要靠他自己悟了!

結束語
本文代碼按順序組合在一起就可以運行了,
實在不會的話評論區提問題
學透這段代碼你就可以自由改寫去爬任何網站了
然后你要問,我爬這么多電影資源干嘛啊我也看不完啊!
嘿嘿,你可以放進數據庫,做自己的網站呀
做網站可以干嘛? 可以靠流量,掛廣告,賺零花錢呀!
有時間再寫一個零基礎建網站的教程吧
————————————————
版權聲明:本文為CSDN博主「d497465762」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/d497465762/article/details/105580408

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM