50行のPythonコードだけでネットの美人の高清のピクチャーを登り取ります。


一、技術コース
requests:ホームページでお願いします。
Beautiful Soup:解析)ページ
re:正規表現で、htmlページ情報を抽出します。
os:ファイルを保存する

import re
import requests
import os
from bs4 import BeautifulSoup
二、ホームページ情報の取得
通常の操作では、ウェブページ情報の固定フォーマットを取得し、返信した文字列フォーマットのウェブページの内容を、headersパラメータは人為的な操作をシミュレートすることができます。

def getHtml(url):  #    ,  html  
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
    }  #      
    try:
        r = requests.get(url, headers=headers)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        print('      ')
三、ウェブサイトの登用分析
画像エリアを右クリックして、「審査要素」を選択して、現在のウェブページの画像の詳細リンクを見ることができます。喜んでコピーしたリンクを開いて保存します。効果を見てみたら、一枚の写真は60 kbしかないです。これはサムネイルです。分かりません。思い切って捨てます。
在这里插入图片描述
在这里插入图片描述
仕方がないです。詳細ページのリンクを見つけてから単独で登ります。
空白の右ボタン、「ページのソースコードを確認する」、先ほどコピーしたサムネイルリンクをコピーして検索し、すべての画像の詳細ページにリンクしてdivタグがあり、class=「list」が唯一なので、Beautiful Soupを使ってこのラベルを抽出することができます。また、写真の詳細ページはherf=後方にリンクされていることを発見しました。一部の無効リンクもdivタグの中にあることに気づきました。それらの違いを見てみると、無効リンクは「https」という文字が存在しています。したがって、コードの中にはこの排出無効リンクに基づいて、第4条の関数コードに対応します。“元素を審査します”、リンクのダウンロードのピクチャーを複製して1 M近くになって、表示は高清のピクチャーで、この段階まで私達はダウンロードの保存関数を呼び出してすぐピクチャーを保存することができます。
在这里插入图片描述
在这里插入图片描述
四、ウェブページの詳細ページのリンク取得
第3条の分析の状況によって、主な目標は各ページの各画像の詳細ページをリンクして登り取ることであり、後続の高精細画像の登用に準備することであり、ここで直接関数def getUrlList(url)を定義する。

def getUrlList(url):  #       
    url_list = []  #       url,        
    demo = getHtml(url)
    soup = BeautifulSoup(demo,'html.parser')
    sp = soup.find_all('div', class_="list") #class='list'     ,     ,     div  ;  ,         class,  python   class( )   ,       _
    nls = re.findall(r'a href="(.*?)" rel="external nofollow"  rel="external nofollow" ', str(sp)) #          
    for i in nls:
        if 'https' in i: #           'https'   ,          (   3    )
            continue
        url_list.append('http://www.netbian.com' + i) #           ,         
    return url_list
五、写真のリンクに従って画像を保存する
同じように、第4条において各ピクチャの詳細ページのリンクを取得した後、開いて、右クリックの画像「審査要素」をクリックし、リンクをコピーすれば素早く位置決めし、画像を保存することができます。

def fillPic(url,page):
    pic_url = getUrlList(url) #    ,               
    path = './  '  #     
    for p in range(len(pic_url)):
        pic = getHtml(pic_url[p])
        soup = BeautifulSoup(pic, 'html.parser')
        psoup = soup.find('div', class_="pic") #class_="pic"   ,    div  ;  ,         class,  python   class( )   ,       _
        picUrl = re.findall(r'src="(.*?)"', str(psoup))[0] #               ,            ,        (      ,         )
        pic = requests.get(picUrl).content #      ,         (  ,  ,            )
        image_name ='  ' + ' {} '.format(page) + str(p+1) + '.jpg' #       
        image_path = path + '/' + image_name #         
        with open(image_path, 'wb') as f: #    
            f.write(pic)
            print(image_name, '    !!!')
六、main関数
前の本体フレームの構築が終わったら、プログラム全体を前置化して、直接コードします。
ここでの1ページ目のリンクはhttp://www.netbian.com/meinv/です。
2ページ目のリンクはhttp://www.netbian.com/meinv/index_2.httmです。
そして、次のページは2ページ目の上で最後の数字だけを変えるので、コードを書く時は1ページ目と次のページのリンクを区別して、それぞれ処理します。また、main()関数ではユーザー定義のページを登る機能も追加されました。詳細はコードを参照してください。
在这里插入图片描述

def main():
    n = input('         :')
    url = 'http://www.netbian.com/meinv/'  #      ,              ,       ,      
    if not os.path.exists('./  '):  #      ,      
        os.mkdir('./  /')
    page = 1
    fillPic(url, page)  #      ,   1           ,          
    if int(n) >= 2: #   2      
        ls = list(range(2, 1 + int(n)))
        url = 'http://www.netbian.com/meinv/'
        for i in ls: #                        
            page = str(i)
            url_page = 'http://www.netbian.com/meinv/'
            url_page += 'index_' + page + '.htm' #   2          
            fillPic(url, page) #  fillPic()  
七、完全コード
最後にメールを呼び出して、よじ登る必要があるページ数を入力すれば、登り始めることができます。完全なコードは下記の通りです。

import re
import requests
import os
from bs4 import BeautifulSoup

def getHtml(url):  #    ,  html  
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
    }  #      
    try:
        r = requests.get(url, headers=headers)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        print('      ')

def getUrlList(url):  #       
    url_list = []  #       url,        
    demo = getHtml(url)
    soup = BeautifulSoup(demo,'html.parser')
    sp = soup.find_all('div', class_="list") #class='list'     ,     ,     div  ;  ,         class,  python   class( )   ,       _
    nls = re.findall(r'a href="(.*?)" rel="external nofollow"  rel="external nofollow" ', str(sp)) #          
    for i in nls:
        if 'https' in i: #           'https'   ,          (   3    )
            continue
        url_list.append('http://www.netbian.com' + i) #           ,         
    return url_list

def fillPic(url,page):
    pic_url = getUrlList(url) #    ,               
    path = './  '  #     
    for p in range(len(pic_url)):
        pic = getHtml(pic_url[p])
        soup = BeautifulSoup(pic, 'html.parser')
        psoup = soup.find('div', class_="pic") #class_="pic"   ,    div  ;  ,         class,  python   class( )   ,       _
        picUrl = re.findall(r'src="(.*?)"', str(psoup))[0] #               ,            ,        (      ,         )
        pic = requests.get(picUrl).content #      ,         (  ,  ,            )
        image_name ='  ' + ' {} '.format(page) + str(p+1) + '.jpg' #       
        image_path = path + '/' + image_name #         
        with open(image_path, 'wb') as f: #    
            f.write(pic)
            print(image_name, '    !!!')

def main():
    n = input('         :')
    url = 'http://www.netbian.com/meinv/'  #      ,              ,       ,      
    if not os.path.exists('./  '):  #      ,      
        os.mkdir('./  /')
    page = 1
    fillPic(url, page)  #      ,   1           ,          
    if int(n) >= 2: #   2      
        ls = list(range(2, 1 + int(n)))
        url = 'http://www.netbian.com/meinv/'
        for i in ls: #                        
            page = str(i)
            url_page = 'http://www.netbian.com/meinv/'
            url_page += 'index_' + page + '.htm' #   2          
            fillPic(url_page, page) #  fillPic()  

main()
以上で、50行のPythonコードだけを使ってネットの美人の高清のピクチャーの文章を登ってここまで紹介しました。Pythonはピクチャーの内容に関してもっと多いです。私達の以前の文章を検索してください。または次の関連記事を引き続きご覧ください。これからもよろしくお願いします。