整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          手把手教你爬取天堂網1920*1080大圖片(批量下載)-理論篇

          1 前言/

          平時我們要下載圖片,要要一個一個點擊下載是不是覺得很麻煩?那有沒有更加簡便的方法呢?答案是肯定的,這里我們以天堂網為例,批量下載天堂網的圖片。

          /2 項目準備工作/

          首先 我們第一步我們要安裝一個pycham的軟件??梢詤⒖歼@篇文章:Python環境搭建—安利Python小白的Python和Pycharm安裝詳細教程。

          天堂網的網址:

          https://www.ivsky.com/bizhi/1920x1080/

          我們需要下載幾個庫,怎么下載呢?打開pycharm,依次點擊File,再點開Settings,如下圖所示。

          打開后會出現這個界面點擊你的項目名字(project:(你的項目名字)),之后在project interpreter下,點擊加號,而后下載我們需要的庫,如下圖所示。

          本項目需要用到的是庫是requests、lxml、fake_useragent,如下圖所示。fake_useragent一般是沒有的,需要通過下面的命令進行安裝:

          pip install fake_useragent

          /3 項目實現/

          1、導入需要的庫(requests,lxml, fake_useragent)。

          2、我用了封裝方法去實現各個部分的功能。首先要寫一個框架:構造一個類TianTangWebsite ,然后定義一個init方法里繼承(self),再定義一個主方法(main)。最后實現這個main方法,依次一步一步進行實現。

          3、我們把天堂網的網址拿過來,構造請求頭。這里說一下這個UserAgent的獲取方法。在打開天堂網的網站后,按下鍵盤上的F12鍵,之后會進入到開發者模式,之后點開network,如下圖所示。

          4、而后隨便點擊一個name,復制header里邊的UserAgent就可以了。

          5、我們點擊下一頁的地址觀察網址的變化,如下所示:

          https://www.ivsky.com/bizhi/1920x1080/index_2.html
          https://www.ivsky.com/bizhi/1920x1080/index_3.html
          https://www.ivsky.com/bizhi/1920x1080/index_4.html

          很明顯的發現,這個網址的網頁數字一直在變化。我們可以用格式化{}去代替變化的值,類似這樣:

          https://www.ivsky.com/bizhi/1920x1080/index_{}.html

          6、然后我們用for循環去遍歷這些網址,代碼如下所示:

          def main(self):
              for i in range(1,2):#頁數隨機客戶隨便 設置
                url=self.url.format(i)
                print(url)

          7、我們定義這個get_home()方法去請求到這個網址。

          9、我們需要解析得到的數據,接下來定義一個xiap的方法,拿到我們請求的網址。接下來就是該項目的關鍵了。

          10、至此,針對反爬蟲的措施我們已經提前做好了準備,下一步將進行網頁結構的分析以及網頁圖片地址數據的提取,并針對解析出來的圖片地址予以批量下載,具體實現咱們下篇文章進行詳解。

          /4 小結/

          本文主要內容為對圖片網站進行了基本簡介,基于 Python 中的爬蟲庫 requests 、lxml、fake_useragent,提前部署了請求頭,模擬瀏覽器,針對反爬蟲的措施我們已經提前做好了準備。

          下篇文章將帶大家進行網頁結構的分析以及網頁圖片地址數據的提取,并針對解析出來的圖片地址予以批量下載,敬請期待~~

          往期精彩文章推薦:

          • 手把手用Python教你如何發現隱藏wifi
          • 手把手教你用Python做個可視化的“剪刀石頭布”小游戲
          • 手把手教你使用Python批量創建復工證明

          想學習更多Python網絡爬蟲與數據挖掘知識,可前往專業網站:http://pdcfighting.com/

          代碼演示通過python的requests,BeautifulSoup庫批量下載360圖片,并保存在本機的路徑

          代碼如下:

          #BeautifulSoup庫是網頁爬蟲解析庫,主要用來對HTML源代碼進行解析,方便顯示并讀取相應的標簽數據
          #1、首先導入相應的庫
          import requests
          from bs4 import BeautifulSoup
          import random
          import os
          import time
          #2、對網站進行get請求
          def gethtml(kward):
           try:
           url="https://image.so.com" #設置360網站的搜索頁面的前面部分網址
           kw={"q":kward} #設置關鍵字變量kw
           headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36"} # 設置網頁請求頭
           response = requests.get(url, params=kw,headers=headers) ##偽裝瀏覽器對url進行get請求,傳遞的參數是kw
           response.encoding=response.apparent_encoding #根據網頁內容解析出編碼格式并賦值給response.encoding
           html=response.text #將網頁源代碼賦值給html
           soup=BeautifulSoup(html,'html.parser') #使用html.parser對html代碼進行解析,并賦值給soup變量
           print(soup.head) #打印網頁源代碼的頭部信息
           images=soup.find_all('img') #查找源代碼里所有的圖片標簽
           path="F://明星照片//"+kward+"http://" #設置圖片的存儲本機的路徑
           for img in images: #遍歷所有的img標簽信息
           print(img.attrs["src"]) #打印遍歷出來的圖片表情的src屬性值
           url1=img.attrs["src"] #設置url1為遍歷出來的圖片表情的src屬性值
           response1=requests.get(url=url1,headers=headers)
           #上行代碼偽裝瀏覽器對url1,即圖片網站進行get請求并將請求結果賦值給response1
           response1.encoding=response1.apparent_encoding #根據網頁內容解析出編碼格式并賦值給response1.encoding
           html1=response1.content #將圖片網址的二進制源代碼賦值給html1
           abspath=path+str(random.random())+".jpg" #設置存儲路勁為abspath
           with open(abspath,"wb") as f: #打開文件的絕對路徑,并對文件進行寫入操作,并設置為f
           f.write(html1) #將源代碼寫入f文件
           f.close() #關閉f文件
           print(img.attrs["src"]+"下載成功") #打印下載成功的提示
           time.sleep(0.2) #設置時間休眠0.2秒
           except: #如果接受錯誤時
           print("爬取失敗") #打印爬取失敗
          

          代碼運行結果如下圖所示:

          、要求:

          ①使用Python的tkinter創建一個下載器

          ②下載器需要包含圖片類型輸入框和圖片存儲路徑輸入框

          ③必須要有下載按鈕和清空按鈕,并執行相應的下載圖片和清空輸入信息的操作

          二、代碼如下:

          import tkinter
          import tkinter as tk
          import requests
          import time
          from lxml import etree
          import os
          import re
          root=tk.Tk()
          root.geometry('800x600')
          root.title('下載https://www.16pic.com/圖片')
          l1=tk.Label(root,text='1、請輸入圖片類型:')
          l1.place(x=30,y=10)
          v1=tk.StringVar()
          e1=tk.Entry(root,textvariable=v1,width=50)
          e1.place(x=180,y=10)
          l2=tk.Label(root,text='2、請輸入圖片存儲路徑:')
          l2.place(x=30,y=30)
          v2=tk.StringVar()
          
          e2=tk.Entry(root,textvariable=v2,width=50)
          e2.place(x=180,y=30)
          e2.insert('end','F:\images')
          e3=tk.Text(root,width=200,height=100)
          e3.place(x=30,y=100)
          global headers
          headers={"user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.3"}
          def download(url,path):
              response2=requests.get(url=url,headers=headers)
              content=response2.content
              i=1
              today=time.localtime()
              filename=str(today)+str(i)+'.jpg'
              with open(os.path.join(path,filename),'wb') as f:
                  f.write(content)
                  print("{}下載完成".format(url))
          def submit():
              kw=e1.get()
              url='https://www.16pic.com/sucai/tupian_{}_0-0-0-0-0-0-0-0-0_1.html'.format(kw)
              response=requests.get(url=url,headers=headers)
              response.encoding='utf-8'
              text=response.text
              img_list=re.findall(r'<img src="(.*?)"',text)
              for image in img_list:
                  image=image.split('?')
                  image=image[0]
                  if '.jpg' in image:
                      image_result='http:'+image
                      # print(image_result)
                      download(image_result, v2.get())
                      e3.insert('end', image_result+"下載完成")
                      e3.insert('end','\n')
          submit_button=tk.Button(root,text='開始下載',command=submit)
          submit_button.place(x=30,y=60)
          def clear():
              v1.set('')
              v2.set('')
              e3.delete(1.0,tkinter.END)
          clear_button=tk.Button(root,text='清空',command=clear)
          clear_button.place(x=200,y=60)
          root.mainloop()
          

          三、使用Pyinstaller命令生成可執行文件運行結果如下圖所示:

          四、代碼運行結果如下圖所示:


          主站蜘蛛池模板: 九九久久99综合一区二区| 久久一区二区三区精品| 久久婷婷久久一区二区三区| 无码人妻精品一区二区三区在线| 无码一区二区三区亚洲人妻| 精品一区高潮喷吹在线播放| 久久亚洲综合色一区二区三区| 精品国产天堂综合一区在线| 人妻无码久久一区二区三区免费 | 色窝窝无码一区二区三区成人网站 | 精品一区二区三区四区电影 | 国产AV一区二区三区无码野战| 国产一区二区三区亚洲综合| 国产精品一区二区久久| 精品视频无码一区二区三区| 三上悠亚一区二区观看| 亚洲午夜日韩高清一区| 一区二区三区视频免费| 国产在线一区二区三区av| 无码人妻精品一区二区蜜桃 | 红桃AV一区二区三区在线无码AV| 日韩一区二区三区视频| 高清无码一区二区在线观看吞精| 国产无人区一区二区三区| 日本一区二区三区在线看| 国产一区中文字幕在线观看| 日本一区二区在线不卡| 无码少妇一区二区浪潮av| 亚洲片一区二区三区| 国产色情一区二区三区在线播放 | 精品一区二区三区在线观看视频| 任你躁国语自产一区在| 国产精品视频分类一区| 手机福利视频一区二区| 女人和拘做受全程看视频日本综合a一区二区视频 | 免费无码A片一区二三区| 国产激情一区二区三区在线观看| 夜夜精品无码一区二区三区| 国产在线不卡一区二区三区| 亚洲视频在线一区| 无码一区二区三区AV免费|