Jiedan.com の女の子の写真特集には、非常に高品質の美女が揃っています写真を今すぐ共有してください Python これらの女の子の写真を一括ダウンロードする方法
#1 この記事では、list の操作方法を知る必要があります。 ,...in... については、関数を定義する方法だけで十分です。
#2を使用しながら、3番目をインストールする必要があります。 -party library BeautifulSoup4. pip を使用したインストールは、Windows で Windows + x ショートカット キーを押して (管理者) と入力する非常に便利な方法です。
pip install beautifulsoup4を実行して Enter キーを押します。
ただし、ブラウザchrome や Firefox などの要素が必要です (pip をお持ちでない場合は、検索 pip のインストール方法をご覧ください)
1. Web ページをダウンロードします。 2,000 を超える Web ページ上のすべての画像をダウンロードしたい場合は、まず Web ページのダウンロード方法を学習する必要があります:) ダウンロード URL は次のとおりです: jandan.net/ooxx/page-2397#comments。 chrome または Firefox ブラウザで右クリックし、Web ページのソース コードを表示します。Web ページは、HTML、js、CSS などで記述されたソース コードを解析して表示されます。画像のアドレスは、これらのソース コードなので、最初のステップは、これらの HTML コード
の一部をダウンロードすることです。
をインポートします。 url = 'http://jandan.net/ooxx /page-2397#comments'
urllib.request.urlopen() この関数は何をしますか?その名前が示すように、URL を開くために使用できます。 str (渡したもの) または Request
オブジェクトのいずれかを受け入れることができます。この関数の戻り値は常に、コンテキスト マネージャーのように機能するオブジェクトであり、geturl()、info()、getcode() などの独自のメソッドがあります。
html に代入します。 res.read() メソッドを使用します。実際、それほど心配する必要はありません。この関数は URL を受け入れ、このオブジェクトに対して操作を行うことで、その URL のすべての情報を含むオブジェクトを返すことができるということだけを覚えておいてください。
次に、res オブジェクト内の HTML コードを読み出して、
変数
html = res.read()このとき、htmlのソースコードはhtmlに格納されます!
コードの一部をインターセプトするには、print
(html)
を試してください。
html = res.read().decode('utf-8')
に変更できます。
次に、 print(html)
を実行して、コードの一部をインターセプトします。
OK!同様に、これは read() の decode('utf-8') が read() の戻り値を utf-8 でエンコードできるためです。ただし、必要な情報も含まれているため、引き続き html = res.read() を使用します。
これまでのところ、Web ページ http://jandan.net/ooxx/page-2397#comments の HTML コードをダウンロードして変数 html に保存するために使用した Python コードは 4 行だけです。次のように:
import urllib.request
#Webページをダウンロード
url = 'http://jandan.net/ooxx/page-2397#comments'
res = urllib.request.urlopen(url)
html = res.read()
次に、Beautifulsoup4 を使用して HTML を解析します。
特定の画像に対応する HTML コードがどこにあるかを確認するにはどうすればよいですか?ページを右クリックして、「検査」をクリックします。このとき、画面の左半分は元のWebページ、画面の右半分はHTMLコードとたくさんの機能ボタンです。
要素 左側に選択矢印があり、それを青色に変えます。次に、左側の Web ページの画像をクリックすると、コードの一部が自動的に実行されることがわかります。右側の HTML コードで強調表示されています。コードのこの部分は、この画像に対応する HTML コードです。この矢印は、Web ページ内の要素に対応するコードを見つけるために使用されます。
このコードを注意深く見てください:
src="//wx2.sinaimg.cn/mw600/66b3de17gy1fdrf0wcuscj20p60zktad.jpg" がわかります。 部分はこの写真のアドレスです、 srcはソースです。 src の後のスタイルはそのスタイルです。気にしないでください。この時点で試してみて、src の前に http: を追加し、http://wx2.sinaimg.cn/mw600/66b3de17gy1fdrf0wcuscj20p60zktad.jpg にアクセスすると、元の画像が表示されるはずです。
max-width が key-value に似ていることに注意してください。これは、後で画像のアドレスを抽出するために使用される方法に関連します。
他の画像に対応するコードを見ると、それらの形式が同じであることがわかります。つまり、それらはすべて に含まれています。
soup = BeautifulSoup(html,'html.parser')このコード行は、HTML をスープ オブジェクトに解析します。このオブジェクトを非常に便利に操作できます。たとえば、「img」を含むテキスト コンテンツのみを抽出します。
result =Soup.find_all('img')find_all() メソッドを使用します。 print(result) 結果はリストであり、各要素は src-image アドレスのキーと値のペアですが、 やその他の不要なコンテンツが含まれていることがわかります。
コードの一部を傍受しました。
get メソッドを使用して二重引用符で囲まれたアドレスを抽出し、先頭に http: を追加します。links=[]content.get('src') is コンテンツ内のキー src に対応する値 (二重引用符で囲まれたアドレス) を取得します。 links.append() は、リストに要素を追加する一般的なメソッドです。 print(links) このリストの各要素は、二重引用符で囲まれた元の画像アドレスであることがわかります。以下に示すように:結果のコンテンツの場合: links.app
コードの一部が傍受されました
ブラウザを使用して任意のアドレスを開くと、対応する画像が表示されます。よ!これは、ダウンロードという最後のステップに入ったことを意味します。#ウェブページを解析
from bs4 import BeautifulSoup
soup = BeautifulSoup(html,'html.parser')
result =Soup.find_all('img')
links=[]
結果のコンテンツ:
Links.append('http:'+content.get('src'))
最後に、画像をダウンロードするためにリンク内のアドレスにアクセスします。 !
はじめに
import os
まず、ダウンロードした写真を保存するための写真フォルダーを作成します。次のコードは、このプログラムの .py ファイルが配置される場所に写真フォルダーを作成します。
if not os.path.exists('photo'):
os.makedirs('photo')
リンクはリストであることがわかっているので、loopを使用するのが最善ですそれを一つずつ行う ダウンロード、名前、保存。
i=0
リンク内のリンク:
i+=1
filename ='photo\'+'photo'+str(i)+'.png'
with open(filename,'w') as file:
urllib.request.urlretrieve(link,filename)
i はループ変数、i+=1 はループを制御するステートメントです。
filename は画像に名前を付けますが、実際には最初にこの名前でファイルを作成してから、そこに画像を書き込みます。ファイル名の割り当てステートメントからわかるように、「photo\」はそれが写真フォルダー内にあることを示し、その後ろにある「photo」+str(i) は完全なダウンロードが完了した後の順序です。 photo1、photo2、photo3 のようになります。 ~ '.png' が接尾辞です。 + 記号を使用して strings を接続することも、Python では一般的な方法です。
これら 2 行のステートメントを使用して、リンク内のアドレスが指す画像をローカルで取得し、それを filename に保存します。
open(filename,'w')、フォルダー filename を開きます。'w' は、開くメソッドが write であることを意味します。つまり、open() はここで 2 つのパラメータを受け入れます。1 つはファイル名 (ファイル パス)、もう 1 つは開く方法です。
urllib.request.urlretrieve(link,filename) の機能は、リンク link にアクセスし、コピーを取得して filename に入れることです。
3 つの部分を記述したら、[実行] をクリックします。 .py ファイルがあるパスに写真フォルダーがあり、ダウンロードした写真がたくさん入っています~
完全なコードは次のとおりです:
import urllib .request
from bs4 import BeautifulSoup
import os
#ウェブページをダウンロード
url = 'http://jandan.net/ooxx/page-2397#comments'
res = urllib.request.urlopen(url )
html = res.read()
#ウェブページを解析
soup = BeautifulSoup(html,'html.parser')
result =Soup.find_all('img')
links=[]
for結果のコンテンツ:
リンク .append('http:'+content.get('src'))
#写真をダウンロードして保存
そうでない場合は os.path.exists('photo'):
os。 makedirs('photo')
i=0
リンク内のリンク:
i+=1
filename ='photo\'+'photo'+str(i)+'.png'
with open( filename,'w') as file:
urllib.request.urlretrieve(link,filename)
この小さなプログラムは、上から下まで、関数が定義されていません。これは初心者にとっては理解しやすいかもしれません。
女の子の写真へのリンク
http://jandan.net/ooxx/page-2397#comments 真ん中の数字のみ1〜2XXXの間で変化します。
url = 'http://jandan.net/ooxx/page-'+str(i)+'#comments'
iの値を一括ダウンロードに変更します。ただし、この Web サイトに頻繁にアクセスすると IP がブロックされる可能性があるというコメントもあります。これは私には理解できません。実際に試してみてください。
以上がPython クローラー [1] 女の子の画像を一括ダウンロードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。