2017-11-24 12 views
0

現在、見つかったすべての画像についてウェブサイトをスクラップしようとしています。私のコードは.jpg、.bmp & .gifを含むすべてのイメージを正常に表示します。ただし、これらの画像の高さも表示されます。私は出力から画像の高さを取り除くだけでなく、添付ファイルに示されているようにきれいなリンクだけを提供する出力を整理するために私のコードをどのように変更できるのだろうと思っていました。下に私のコード出力を示すリンクと私の現在のコードの両方を添付しました。私は私の理想的な出力を添付しています。助けをありがとう、ありがとう!Regexを使用してウェブサイトから画像を表示する問題

マイコード出力:https://imgur.com/a/eBdK8

files = re.findall(r'\<img .*\=.*', page.decode()) 
files.sort() 
print (f'\n [+] {len(files)} IMAGES FOUND:\n') 
for file in files: 
    print(file) 
+0

希望の出力は高さ= "250"を削除するだけですが、それ以外は残りますか? (その一例があります) –

+0

謝罪、私は少し私の答えを編集しました。だから理解しやすい。私は今、自分の現在の出力より下に探している理想出力を添付しました。再度、感謝します :)! –

+0

Regexはソリューションの要件ですか? –

答えて

2

あなたの入力がすべてstringある場合は、あなたが使用することを直接

>>> images = ['<img src="demo.jpg" height=12>', '<img src="demo2.jpg" height=500>'] 
>>> for image in images: 
     print(re.search(r'<img[^>]*src="([^"]*)"', image).group(1)) 

demo.jpg 
demo2.jpg 

画像srcを抽出することができます:私は探していますhttps://imgur.com/a/ZxEXh

出力findallとそれに反復処理する

>>> images = '''<img src="demo.jog" height=12> <img src="demo.jog" height=500>''' 
>>> res = re.findall(r'<img[^>]*src="([^"]*)"', images) 
>>> for img in res: 
     print(img) 
demo.jpg 
demo2.jpg 
+0

答えをありがとう、私は今それをテストして病気に戻ってきます! –

+0

あなたの入力がすべての文字列のように見えるので、私の2番目のアプローチを試すことができます –

+0

ありがとう、ちょうどこれを通過し、これは私が欲しかったものです! –

0

正規表現は、HTMLやXMLデータを解析するのに最適なツールではありません.AutoxSureは、はるかに効率的でシンプルです。あなたが行うことができます:

from bs4 import BeautifulSoup 

...  
soup = BeautifulSoup(page.decode(), 'html.parser') 
files = [ i.get("src") for i in soup.findAll('img') ] # get the src attribute for all img tags 
files.sort() 
print (f'\n [+] {len(files)} IMAGES FOUND:\n') 
for file in files: 
    print(file) 

そのように、HTMLを効果的に解析され、唯一の本当のタグが返されます。

+0

ええ、以前はBeautifulSoupを探していましたが、提案してくれてありがとうございました:) –

関連する問題