<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          手把手教你Python爬取女神套圖

          共 11230字,需瀏覽 23分鐘

           ·

          2021-05-07 20:01

          疲憊的生活里總要有些溫柔夢想吧

          目標(biāo)URL:http://www.win4000.com/meinvtag4_1.html

          爬取美桌網(wǎng)某個(gè)標(biāo)簽下的美女壁紙,點(diǎn)進(jìn)詳情頁可以發(fā)現(xiàn),里面是一組套圖

          一、網(wǎng)頁分析

          翻頁查看 URL 變化規(guī)律:

          http://www.win4000.com/meinvtag4_1.html
          http://www.win4000.com/meinvtag4_2.html
          http://www.win4000.com/meinvtag4_3.html
          http://www.win4000.com/meinvtag4_4.html
          http://www.win4000.com/meinvtag4_5.html

          頁面里看到的每張圖片點(diǎn)擊進(jìn)去有詳情頁,里面是套圖

          詳情頁里套圖URL變化規(guī)律:

          http://www.win4000.com/meinv216987_1.html
          http://www.win4000.com/meinv216987_2.html
          http://www.win4000.com/meinv216987_3.html

          在網(wǎng)頁源代碼中也可以直接找到數(shù)據(jù):

          圖片名稱  下載鏈接
          性感美女肌膚雪白撩人寫真圖片
          http://pic1.win4000.com/pic/8/e0/24b989d57c.jpg

          二、爬蟲基本思路

          1. 獲取5頁的套圖的URL

          def get_taotu_url():
              for i in range(16):
                  url = f'http://www.win4000.com/meinvtag4_{i}.html'
                  headers = {
                      'User-Agent': choice(user_agent)
                  }
                  # 發(fā)送請求  獲取響應(yīng)
                  rep = requests.get(url, headers=headers)
                  # print(rep.status_code)    狀態(tài)碼  200
                  # print(rep.text)
                  html = etree.HTML(rep.text)
                  taotu_url = html.xpath('//div[@class="tab_tj"]/div/div/ul/li/a/@href')
                  # 過濾掉無效的url
                  taotu_url = [item for item in taotu_url if len(item) == 39]
                  # 一個(gè)頁面有24個(gè)圖片
                  print(taotu_url, len(taotu_url), sep='\n')


          2. 進(jìn)入套圖詳情頁爬取圖片
          def get_img(url):
              headers = {
                  'User-Agent': choice(user_agent)
              }
              # 發(fā)送請求  獲取響應(yīng)
              rep = requests.get(url, headers=headers)
              # 解析響應(yīng)
              html = etree.HTML(rep.text)
              # 獲取套圖名稱   最大頁數(shù)
              name = html.xpath('//div[@class="ptitle"]/h1/text()')[0]
              os.mkdir(r'./女神套圖/{}'.format(name))
              max_page = html.xpath('//div[@class="ptitle"]/em/text()')
              # 字符串替換  便于之后構(gòu)造url請求
              url1 = url.replace('.html''_{}.html')
              for i in range(1, int(max_page[0]) + 1):
                  url2 = url1.format(i)
                  sleep(randint(13))
                  reps = requests.get(url2, headers=headers)
                  dom = etree.HTML(reps.text)
                  src = dom.xpath('//div[@class="main-wrap"]/div[1]/a/img/@data-original')[0]
                  file_name = name + f'第{i}張.jpg'
                  img = requests.get(src, headers=headers).content
                  with open(r'./女神套圖/{}/{}'.format(name, file_name), 'wb'as f:
                      f.write(img)
                      print(f'成功下載圖片:{file_name}')

          3. 完整代碼實(shí)現(xiàn)

          # -*- coding: utf-8 -*-
          """
          Created on Sat Nov 7 19:15:04 2020
          微信公眾號: 凹凸數(shù)據(jù)
          @File :spider.py
          @Author :葉庭云
          @CSDN :https://yetingyun.blog.csdn.net/
          """

          import requests
          from random import choice, randint
          from lxml import etree
          import os
          from concurrent.futures import ThreadPoolExecutor
          from time import sleep


          # 自己構(gòu)造請求頭池 用于切換
          user_agent = [
              "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1",
              "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6",
              "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6",
              "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.1",
              "Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5",
              "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
              "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
              "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",
              "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",
              "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
              "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
              "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
              "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.0 Safari/536.3",
              "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24"
              ]

          # 不存在文件夾 就創(chuàng)建
          if not os.path.exists('女神套圖'):
              os.mkdir('女神套圖')


          # 獲取5頁的套圖的URL
          def get_taotu_url():
              taotu_urls = []
              for i in range(1, 6):
                  url = f'http://www.win4000.com/meinvtag4_{i}.html'
                  headers = {
                      'User-Agent': choice(user_agent)
                  }
                  # 發(fā)送請求 獲取響應(yīng)
                  rep = requests.get(url, headers=headers)
                  # print(rep.status_code) 狀態(tài)碼 200
                  # print(rep.text)
                  html = etree.HTML(rep.text)
                  taotu_url = html.xpath('//div[@class="tab_tj"]/div/div/ul/li/a/@href')
                  # 過濾掉無效的url
                  taotu_url = [item for item in taotu_url if len(item) == 39]
                  # 一個(gè)頁面有24個(gè)圖片
                  # print(taotu_url, len(taotu_url), sep='\n')
                  taotu_urls.extend(taotu_url)

              return taotu_urls


          # 進(jìn)入套圖詳情頁爬取圖片
          def get_img(url):
              headers = {
                  'User-Agent': choice(user_agent)
              }
              # 發(fā)送請求 獲取響應(yīng)
              rep = requests.get(url, headers=headers)
              # 解析響應(yīng)
              html = etree.HTML(rep.text)
              # 獲取套圖名稱 最大頁數(shù)
              name = html.xpath('//div[@class="ptitle"]/h1/text()')[0]
              os.mkdir(r'./女神套圖/{}'.format(name))
              max_page = html.xpath('//div[@class="ptitle"]/em/text()')
              # 字符串替換 便于之后構(gòu)造url請求
              url1 = url.replace('.html', '_{}.html')
              # 翻頁爬取這組套圖的圖片
              for i in range(1, int(max_page[0]) + 1):
                  # 構(gòu)造url
                  url2 = url1.format(i)
                  # 休眠
                  sleep(randint(1, 3))
                  # 發(fā)送請求 獲取響應(yīng)
                  reps = requests.get(url2, headers=headers)
                  # 解析響應(yīng)
                  dom = etree.HTML(reps.text)
                  # 定位提取圖片下載鏈接
                  src = dom.xpath('//div[@class="main-wrap"]/div[1]/a/img/@data-original')[0]
                  # 構(gòu)造圖片保存的名稱
                  file_name = name + f'第{i}張.jpg'
                  # 請求下載圖片 保存圖片 輸出提示信息
                  img = requests.get(src, headers=headers).content
                  with open(r'./女神套圖/{}/{}'.format(name, file_name), 'wb') as f:
                      f.write(img)
                      print(f'成功下載圖片:{file_name}')


          # 主函數(shù)調(diào)用 開多線程
          def main():
              taotu_urls = get_taotu_url()
              with ThreadPoolExecutor(max_workers=4) as exector:
                  exector.map(get_img, taotu_urls)
              print('=================== 圖片全部下載成功啦!=====================')
              
              
          if __name__ == '__main__':
              main()


          運(yùn)行效果如下:

          程序運(yùn)行一會,圖片就全部爬取下來保存在本地文件夾,5頁的120組套圖,美滋滋。

          四、其他說明

          • 不建議抓取太多數(shù)據(jù),容易對服務(wù)器造成負(fù)載,淺嘗輒止即可。
          • 通過本文爬蟲,可以幫助你了解套圖的爬取,如何通過字符串的拼接來構(gòu)造URL請求。
          • 本文利用 Python 爬蟲實(shí)現(xiàn)批量下載女神套圖,實(shí)現(xiàn)過程中也會遇到一些問題,多思考和調(diào)試,最終解決問題,也能理解得更深刻。



          推薦閱讀:

          入門: 最全的零基礎(chǔ)學(xué)Python的問題  | 零基礎(chǔ)學(xué)了8個(gè)月的Python  | 實(shí)戰(zhàn)項(xiàng)目 |學(xué)Python就是這條捷徑


          干貨:爬取豆瓣短評,電影《后來的我們》 | 38年NBA最佳球員分析 |   從萬眾期待到口碑撲街!唐探3令人失望  | 笑看新倚天屠龍記 | 燈謎答題王 |用Python做個(gè)海量小姐姐素描圖 |


          趣味:彈球游戲  | 九宮格  | 漂亮的花 | 兩百行Python《天天酷跑》游戲!


          AI: 會做詩的機(jī)器人 | 給圖片上色 | 預(yù)測收入 | 碟中諜這么火,我用機(jī)器學(xué)習(xí)做個(gè)迷你推薦系統(tǒng)電影


          年度爆款文案


          點(diǎn)閱讀原文,領(lǐng)廖雪峰視頻資料!

          瀏覽 26
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩无码经典高清视频 | 免费A片国产毛无码A片牛牛 | 三级成人免费 | 欧美午夜精品久久久久久蜜 | 疯狂而刺激3p视频 |