<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 安裝爬蟲需要的包 ``` sudo pip install BeautifulSoup pip install requests sudo apt-get install python-lxml # 使用系統包管理器安裝 ``` > 其中,BeautifulSoup是用來獲取一個頁面里各個標簽里面的內容,我們主要用到它里面的find(),find_All()函數。具體用法在后面介紹。 requests是用來獲取網頁信息的,我們給它一個url,它能把這個url對應的頁面信息全部反饋給我們,我們再用BeautifulSoup里的函數對它們進行處理。 lxml是一個解析器,Python里有專門的解析器,html.parser,但是lxml的解析速度更快,建議用lxml。 ## 批量爬取頁面數據 我們打開[百度圖片](http://image.baidu.com/search/index),在里面搜索要爬取圖片的關鍵詞,例如“楊紫”,然后敲回車。 <div align="center"><img src="images/27.png"/></div> 跳轉到圖片搜索結果界面,右鍵按**F12**,如果不行就**Fn+F12**打開開發者工具。我們將鼠標放在圖片搜索結果界面(標1部分),滑動鼠標滾輪。可以看到隨著滑動,標2部分不斷顯示加載的具體文件。 <div align="center"><img src="images/28.png"/></div> 然后我們點擊這些具體文件,然后展開“**Query String Parameters**”。 <div align="center"><img src="images/31.png"/></div> 可以看到不同文件里面pn是不同的,我們在圖片搜索地址中加入“**&pn=30**”,,回車。 <div align="center"><img src="images/32.png"/></div> 搜索結果是“楊紫”,如果將&pn=30替換成“**&pn=0**”,回車后會發現到我們首次搜索結果的界面。這里pn就是第幾頁的參數。 在圖片搜索結果界面,鼠標右鍵**查看網頁源代碼**(如果你用的是谷歌瀏覽器)。 <div align="center"><img src="images/29.png"/></div> 然后按**Ctrl+F**,在搜索框中輸入“**objURL**”。如下圖紅框中的就是我們要爬取的圖片。 <div align="center"><img src="images/30.png"/></div> 現在我們寫一個正則表達式,來快速獲取所有objURL后面的圖片地址,代碼如下所示。 ```python pic_url = re.findall('"objURL":"(.[^\"]*?)",' html, re.S) ``` ### step1: 獲取要爬取的網頁的內容 導入需要的包 ```python # -*- coding:utf-8 -*- # picture.py from bs4 import BeautifulSoup import requests import re import os import sys import time ``` 主函數 ```python if __name__ == '__main__': # 主函數入口 word = raw_input("輸入搜索圖片關鍵詞:") num = int(raw_input("輸入最多下載多少頁圖片:")) li = [] li = get_page(word, num) # 爬取具體頁面的圖片url download_Image(li) # 下載圖片到本地 ``` ### step2: 爬取具體頁面的圖片 <p id="color" style="color:red">我們要爬取一個頁面,首先需要知道他的URL,然后發送post請求,....</p> ```python # 要抓取網頁url url = "http://image.baidu.com/search/index" # 偽裝瀏覽器 headers = { 'User-Agent':'Mozilla/5.0(Windows NT 6.3; WOW64) AppleWebKit/537.36 \ (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0' } def get_page(word, num): url1 = url + '&word=' + str(word) + '&pn=' n = 0 li = [] # 創建一個空列表 while n < num: pn = n*30 # url中的pn參數 new_url = url1 + str(pn) # 獲取某個網頁內容,發送Post請求 res = requests.post(new_url, headers=headers, timeout=10) content = res.content # 返回二進制響應內容 # 利用正則表達式,找出圖片的url。pic_url是一個列表 pic_url = re.findall('"objURL":"(.*?)"', content, re.S) #print(pic_url) li = li + pic_url # 將多個圖片url列表合成一個列表 n = n + 1 print(li) return li ``` 運行picture.py文件 ``` python picture.py ``` 按打印提示輸入搜索的關鍵詞,下載頁數(根據自己情況輸入)。回車后我們將得到包含圖片url的列表,如下圖所示。 <div align="center"><img src="images/33.png"/></div> ### 下載圖片 現在來寫下載圖片的函數download_Image() 我們前面得到了包含圖片url的列表,列表中的每個元素都是圖片的url地址。我們遍歷列表,然后將其url爬取,將下載的圖片保存到本地就可以了。實現函數代碼如下 ```python def downloadPicture(li): num = 0 path = './photo' # 圖片需要保存的路徑 if os.path.exists(path) == False: # 如果photo文件不存在,創建一個 os.makedirs(path) for pic_url in li: print('正在下載第 '+ str(num+1)+'張圖片, 圖片地址:'+str(url)) try: pic = request.post(pic_url, headers) content = pic.content else: continue except BaseException as e: print("錯誤, 當前圖片無法下載") print('except:', e) continue else: file_name = r'img_' + str(num) + '.jpg' img_file_name = os.path.join(path, file_name) fp = open(img_file_name, 'wb') fp.write(content) fp.close() num += 1 ``` 運行程序 picture.py ``` python picture.py ``` 按照打印提示輸入關鍵詞,如“楊紫”,下載多少頁,如輸入“1”。 這樣就爬取了百度上有關楊紫的的30張圖片,并保存到了本地,如下圖。 <div align="center"><img src="images/34.png"/></div>
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看